Что такое SQL. Назначение и основа
Всем привет! Сегодня я максимально просто, специально для начинающих, попытаюсь рассказать Вам о том, что такое SQL, и для чего он нужен. Из данного материала Вы также узнаете, что такое база данных и система управления базами данных, а также что такое диалект языка SQL, ведь вся статья будет построена на том, чтобы плавно подвести Вас к пониманию того, что же такое SQL.
Я думаю, Вы уже представляете себе, что SQL — это некий язык, связанный с какими-то там базами данных, однако для того, чтобы лучше понимать, что же такое SQL, необходимо понять, для чего нужен SQL, для чего нужен этот язык, т.е. его назначение.
Поэтому сначала я дам Вам немного вводной информации, из которой будет ясно назначение языка SQL, и для чего он вообще нужен.
Что такое база данных
И начну я с того, что под базой данных обычно принято понимать любой набор информации, которая хранится определенным образом, и ей можно воспользоваться. Но если говорить о каких-то автоматизированных базах данных, то здесь, конечно же, речь идет о так называемых реляционных базах данных.
Реляционная база данных – это упорядоченная информация, связанная между собой определёнными отношениями. Представлена она в виде таблиц, в которых и лежит вся эта информация. И это очень важно, так как теперь Вы должны представлять себе современную базу данных просто в виде таблиц (если говорить в контексте SQL), т.е. в общем смысле база данных – это набор таблиц. Безусловно, это сильно упрощенное определение, но оно дает некое практическое понимание базы данных.
Что такое SQL
За счет того, что информация в базе данных упорядочена, разделена на определённые сущности и представлена в виде таблиц, к ней легко обратиться и найти нужную нам информацию.
И тут возникает главный вопрос: а как к ней обратиться и получить необходимую нам информацию?
Для этого должен быть специальный инструмент, и здесь к нам на помощь как раз и приходит SQL, который является тем инструментом, с помощью которого происходит манипулирование данными (создание, извлечение, удаление и т.д.) в базе данных.
SQL (Structured Query Language) — язык структурированных запросов, с помощью него пишутся специальные запросы (так называемые SQL инструкции) к базе данных с целью получения данных из базы данных или для манипулирования этими данными.
Также обязательно стоит отметить и то, что база данных, и в частности реляционная модель, основана на теории множеств, которая подразумевает объединение разных объектов в одно целое, под одним целым в базе данных как раз и имеется в виду таблица. Это важно, так как язык SQL работает именно со множеством, с набором данных, т.е. с таблицами.
Полезные материалы по теме:
Что такое СУБД
У Вас может возникнуть вопрос, если база данных это некая информация, которая хранится в таблицах, то как она выглядит физически? Как на нее посмотреть в целом?
Если очень коротко, то это просто файл, созданный в специальном формате, именно так и выглядит база данных (в большинстве случаев БД включает несколько файлов, но сейчас на этом уровне это не так важно).
Идем дальше, если база данных это файл в специальном формате, то как его создать или открыть? И тут возникает сложность, ведь просто так, без каких-либо инструментов создать такой файл, т.е. реляционную базу данных, нельзя, для этого нужен специальный инструмент, который мог бы создавать и управлять базой данных, иными словами, работать с этими файлами.
Таким инструментом как раз и выступает СУБД – это система управления базами данных, сокращенно СУБД.
Какие СУБД бывают
На самом деле, существует достаточно много различных СУБД, некоторые из них платные и стоят немалых денег, если говорить о полнофункциональных версиях, но даже у самых, так скажем, «крутых» есть бесплатные редакции, которые, кстати, отлично подходят для обучения.
Среди всех по своим возможностям и популярности можно выделить следующие системы:
Полезные материалы по теме:
Диалекты языка SQL (расширения SQL)
Язык SQL – это стандарт, он реализован во всех реляционных базах данных, но у каждой СУБД есть расширение этого стандарта, есть собственный язык работы с данными, его обычно называют диалектом SQL, который, конечно же, основан на SQL, но предоставляет больше возможностей для полноценного программирования, кроме того, такой внутренний язык дает возможность получать системную информацию и упрощать SQL запросы.
Вот некоторые диалекты языка SQL:
Таким образом, от СУБД зависит, на каком расширении Вы будете писать SQL инструкции. Если говорить о простых SQL запросах, например,
то, безусловно, во всех СУБД такие запросы работать будут, ведь SQL — это стандарт.
Примечание! Это простой SQL запрос на выборку данных из одной таблицы, выводятся два столбца.
Однако если Вы собираетесь программировать, использовать все внутренние возможности СУБД (разрабатывать процедуры, использовать встроенные функции, получать системную информацию и т.д.), то Вам необходимо изучать конкретный диалект SQL и практиковаться соответственно в той СУБД, в которой используется этот диалект. Это важно, ведь синтаксис многих конструкций различается так же, как различаются возможности и многое другое. И если, допустим, Вы запустите SQL инструкцию, в которой использованы возможности определенного расширения SQL, на другой СУБД, то такая инструкция, конечно же, не выполнится.
Например, лично я специализируюсь на языке T-SQL, и соответственно, работаю с Microsoft SQL Server, вот уже более 8 лет!
Хотя, конечно же, с другими СУБД я также работал, одно время я сопровождал два приложения, одно из которых работало с PostgreSQL, ну а второе, наверное, уже понятно, с Microsoft SQL Server.
С MySQL я работал, как, наверное, и многие, в рамках сопровождения сайтов и сервисов. Ну а с Oracle Database мне приходилось работать в рамках других проектов.
Весь свой накопленный опыт в части языка SQL я сгруппировал в одном месте и оформил в виде книг, поэтому, если у Вас есть желание изучить язык SQL рекомендую почитать мои книги:
Заметка! Начинающим рекомендую пройти мой онлайн-курс по основам SQL, с помощью которого Вы научитесь работать с языком SQL во всех популярных системах управления базами данных. Курс включает много практики: онлайн-тестирование, задания и многое другое.
Надеюсь, теперь Вы понимаете, что такое SQL, и для чего он нужен, в следующих материалах я расскажу, как создавать SQL запросы, расскажу какие инструменты для этого необходимо использовать и для каких СУБД, так как у каждой СУБД есть свои инструменты, поэтому следите за выходом новых статей в моих группах в социальных сетях: ВКонтакте, Facebook, Одноклассники, Twitter и Tumblr. Подписывайтесь, и Вы не пропустите выход нового материала!
11) Архитектура файл-сервер. Достоинства и недостатки.
PS, PL – представление данных (ps – средство представления, pl – логика)
BL – бизнес логика или логика приложения
DL – логика управления данным
DS – средства управления данным
СУФ – система управления данными
В архитектуре файл-сервер средства организации и управления БД, располагаются на машине клиента, а БД, представляющая собой набор специализированных файлов на машие-сервер, в этом случае серверная компонента представлена даже не средствами СУБД, а сетевыми составляющими систем.
Файл-сервер только извлекает данные из файлов так, что дополнительные пользователи и приложения добавляют нагрузку на центральный процессор. Каждый новый клиент добавляет мощность к сети, компоненты PS и PL не имеют сетевого разделения, объектами разработки в файл-серверном приложении является компоненты приложения, определяющие логику диалога PL и логику обработки BL и логику управления DL.
Разработанное приложение реализуется либо в виде законченного загрузочного модуля, либо в виде специального кода для интерпретации.
Взаимодействие между клиентом и сервером происходит на уровне команд ввода-вывода файловой системы, которая возвращает запись для интерпретации.
Запрос, к БД сформированный на языке манипулирования данными преобразуется самой СУБД в последовательность команд ввода-вывода, которые обрабатываются ОС машины сервера.
Обслуживание запросов нескольких клиентов, простота и удобство использования.
— высокая загрузка сети и машин-клиентов;
— низкий уровень защиты данных, так как доступ к файлам БД управляется общими средствами ОС;
— низкий уровень управления целостностью и непротиворечивостью информации, так как логика функциональной обработки BL сосредоточена на клиентской части и может быть противоречива и несинхронная и, так как управление целостностью и непротиворечивостью возлагается на программных клиентов, что приводит к усложнению клиентов
12) Формы языка sql, их назначение. Составные части языка sql.
Структурированный язык запросов SQL реализуется в следующих формах:
Все известные СУБД содержат в своем составе утилиты, позволяющие пользователю непосредственно вводить операторы SQL в режиме, скажем так, командной строки, либо запускать на выполнение файлы, содержащие операторы SQL. Получаемая в результате выполнения запросов информация, а также служебные и диагностические сообщения могут быть выведены на экран, в текстовый файл или на принтер. Такой режим называется интерактивный, или автономный, SQL. Операторы SQL могут быть непосредственно включены в программы на других языках программирования. В настоящее время практически все языки программирования высокого уровня (в частности, C++, Object Pascal (Delphi) и другие) содержат средства подключения к базам данных и выполнения SQL-операторов. Такой режим называется статический SQL.
Операторы SQL могут быть динамически сгенерированы приложением и затем выполнены. Такой режим называется динамический SQL
Встроенный SQL позволяет включать операторы SQL в код программы на другом языке программирования (например, С++).
Составные части языка SQL
Традиционно выделяют две основных части языка SQL (хотя деление это во многом условное):
Назначение языка SQL
ЯЗЫК SQL: МАНИПУЛИРОВАНИЕ ДАННЫМИ
В ЭТОЙ ЛЕКЦИИ.
· Назначение языка Structure Query Language (SQL) и его особая роль при работе с базами данных.
· История возникновения и развития языка SQL.
· Запись операторов языка SQL.
· Выборка информации из баз данных с помощью оператора SELECT.
· построение операторов SQL, характеризующихся следующими особенностями:
· применение конструкции WHERE для выборки строк, удовлетворяющих различным условиям;
· сортировка результатов выполнения запроса с помощью конструкции ORDER BY;
· использование агрегирующих функций языка SQL;
· группирование выбранных данных с помощью конструкции GROUP BY;
· применение соединений таблиц;
· применение операций с множествами (UNION, INTERSECT, EXCEPT).
· Внесение изменений в базу данных с помощью операторов INSERT, UPDATE и DELETE.
Одним из языков, появившихся в результате разработки реляционной модели данных, является SQL, который в настоящее время получил очень широкое распространение и фактически превратился в стандартный язык реляционных баз данных. Стандарт на язык SQL был выпущен Национальным институтом стандартизации США (ANSI) в 1986 году, а в 1987 году Международная организация по стандартизации (ISO) приняла этот стандарт в качестве международного. В настоящее время язык SQL поддерживается сотнями СУБД различных типов, разработанных для самых разнообразных вычислительных платформ, начиная от персональных компьютеров и заканчивая мэйнфреймами.
В этой лекции используется определение языка SQL, данное в стандарте ISO.
Введение в язык SQL
В этой части рассмотрим назначение языка SQL, познакомимся с его историей и проанализируем причины, по которым он приобрел в настоящее время столь большое значение для приложений баз данных.
Назначение языка SQL
Любой язык, предназначенный для работы с базами данных, должен предоставлять пользователю следующие возможности:
· создавать базы данных и таблицы с полным описанием их структуры;
· выполнять основные операции манипулирования данными, такие как вставка, модификация и удаление данных из таблиц;
· выполнять простые и сложные запросы.
Кроме того, язык работы с базами данных должен решать все указанные выше задачи при минимальных усилиях со стороны пользователя, а структура и синтаксис его команд должны быть достаточно просты и доступны для изучения.
И, наконец, язык должен быть универсальным, т.е. отвечать некоторому признанному стандарту, что позволит использовать один и тот же синтаксис и структуру команд при переходе от одной СУБД, к другой. Современный стандарт языка SQL удовлетворяет практически всем этим требованиям.
SQL является примером языка преобразования данных, или же языка, предназначенного для работы с таблицами с целью преобразования входных данных к требуемому выходному виду. Язык SQL, который определен стандартом ISO, имеет два основных компонента:
· язык Data Definition Language (DDL), предназначенный для определения структур базы данных и управления доступом к данным;
· язык Data Manipulation Language (DML), предназначенный для выборки и обновления данных.
Достоинства языка SQL3, формальное определение которого принято в 1999 году:
· Язык SQL относительно прост в изучении.
· Это непроцедурный язык, поэтому в нем необходимо указывать, какая информация должна быть получена, а не как ее можно получить. Иначе говоря, язык SQL не требует указания методов доступа к данным.
· Как и большинство современных языков, SQL поддерживает свободный формат записи операторов. Это означает, что при вводе отдельные элементы операторов не связаны с фиксированными позициями на экране.
CREATE TABLE [Продажи] ([ID продаж] (S), [Наименование объекта] VARCHAR(15), [Стоимость] DECIMAL(7,2));
INSERT INTO [Объект] VALUES (‘SG16’, ‘Brown’, 8300);
SELECT [ID продаж], [Наименование объекта], [Стоимость];
WHERE [Стоимость] > 10000;
· Язык SQL может использоваться широким кругом пользователей, включая администраторов баз данных (АБД), руководящий персонал компании, прикладных программистов и множество других конечных пользователей разных категорий.
В настоящее время для языка SQL существуют международные стандарты, формально определяющие его как стандартный язык создания и манипулирования реляционными базами данных, каковым он фактически и является.
История языка SQL
История реляционной модели данных, и косвенно языка SQL, началась в 1970 году с публикации основополагающей статьи Е. Ф. Кодда, который в то время работал в исследовательской лаборатории корпорации IBM в Сан-Хосе. В 1974 году Д. Чемберлен, работавший в той же лаборатории, публикует определение языка, получившего название «Structured English Query Language», или SEQUEL. В 1976 году была выпущена переработанная версия этого языка, SEQUEL/2; впоследствии его название пришлось изменить на SQL по юридическим соображениям — аббревиатура SEQUEL уже использовалась филологами. Но до настоящего времени многие по-прежнему произносят аббревиатуру SQL как «сиквэл», хотя официально ее рекомендуется читать как «эс-кю-эл».
В 1976 году на базе языка SEQUEL/2 корпорация IBM выпустила прототип СУБД, имевший название «System R». Назначение этой пробной версии состояло в проверке осуществимости реализации реляционной модели. Помимо прочих положительных аспектов, важнейшим из результатов выполнения этого проекта можно считать разработку собственно языка SQL, Однако корни этого языка уходят в язык SQUARE (Specifying Queries as Rational Expressions), который являлся предшественником проекта System R. Язык SQUARE был разработан как исследовательский инструмент для реализации реляционной алгебры посредством фраз, составленных на английском языке.
В конце 1970-х годов, компанией, которая ныне превратилась в корпорацию Oracle, была выпущена СУБД Oracle. Пожалуй, это самая первая из коммерческих реализаций реляционной СУБД, построенной на использовании языка SQL.
Чуть позже появилась СУБД INGRES, использовавшая язык запросов QUEL.
Этот язык был более структурированным, чем SQL, но семантика его менее близка к обычному английскому языку. Позднее, когда SQL был принят как стандартный язык реляционных баз данных, СУБД INGRES была полностью переведена на его использование. В 1981 году корпорация IBM выпустила свою первую коммерческую реляционную СУБД под названием SQL/DS (для среды DOS/VSE). В 1982 году вышла в свет версия этой системы для среды VM/CMS, а в 1983 году — для среды MVS, но уже под названием DB2.
В 1982 году Национальный институт стандартизации США (ANSI) начал работу над языком Relation Database Language (RDL), руководствуясь концептуальными документами, полученными от корпорации IBM. В 1983 году к этой работе подключилась Международная организация по стандартизации (ISO). Совместные усилия обеих организаций увенчались выпуском стандарта языка SQL. От названия RDL в 1984 году отказались, а черновой проект языка был переработан с целью приближения к уже существующим реализациям языка SQL.
Исходный вариант стандарта, который был выпущен ISO в 1987 году, вызвал волну критических замечаний. В частности, Дейт, известный исследователь в этой области, указывал, что в стандарте опущены важнейшие функции, включая средства обеспечения ссылочной целостности, и некоторые реляционные операторы.
Кроме того, он отметил чрезмерную избыточность языка — один и тот же запрос можно было записать в нескольких различных вариантах. Большая часть критических замечаний была признана справедливой, и необходимые коррективы были внесены в стандарт еще до его публикации. Однако было решено, что важнее выпустить стандарт как можно быстрее, чтобы он смог исполнять роль общей основы, на которой и сам язык, и его реализации могли бы развиваться далее, чем дожидаться, пока будут определены и согласованы все функции, которые разные специалисты считают обязательными для подобного языка.
В 1989 году ISO опубликовала дополнение к стандарту, в котором определялись функции поддержки целостности данных. В 1992 году была выпущена первая, существенно пересмотренная версия стандарта ISO, которую иногда называют SQL2 или SQL-92. Хотя некоторые из функций были определены в этом стандарте впервые, многие из них уже были полностью или частично реализованы в одной или нескольких коммерческих реализациях языка SQL.
А следующая версия стандарта, которую принято называть SQL3, была выпущена только в 1999 году. Эта версия содержит дополнительные средства поддержки объектно-ориентированных функций управления данными.
Функции, которые добавляются к стандарту языка разработчиками коммерческих реализаций, принято называть расширениями. Например, в стандарте языка SQL определено шесть различных типов данных, которые могут храниться в базах данных. Во многих реализациях этот список дополняется разнообразными расширениями. Каждая из реализаций языка называется диалектом. Не существует двух совершенно идентичных диалектов, как в настоящее время не существует и ни одного диалекта, полностью соответствующего стандарту ISO.
Более того, поскольку разработчики баз данных вводят в системы все новые функциональные средства, они постоянно расширяют свои диалекты языка SQL, в результате чего отдельные диалекты все больше и больше отличаются друг от друга. Однако основное ядро языка SQL остается более или менее стандартизованным во всех реализациях.
Хотя исходные концепции языка SQL были разработаны корпорацией IBM, его важность очень скоро подтолкнула и других разработчиков к созданию собственных реализаций. В настоящее время на рынке доступны буквально сотни продуктов, построенных на использовании языка SQL, причем постоянно приходится слышать о выпуске все новых и новых версий,


