Что такое sql назначение языка sql

Что такое SQL. Назначение и основа

Всем привет! Сегодня я максимально просто, специально для начинающих, попытаюсь рассказать Вам о том, что такое SQL, и для чего он нужен. Из данного материала Вы также узнаете, что такое база данных и система управления базами данных, а также что такое диалект языка SQL, ведь вся статья будет построена на том, чтобы плавно подвести Вас к пониманию того, что же такое SQL.

Что такое sql назначение языка sql. Смотреть фото Что такое sql назначение языка sql. Смотреть картинку Что такое sql назначение языка sql. Картинка про Что такое 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. Подписывайтесь, и Вы не пропустите выход нового материала!

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

SQL (Structured Query Language)

SQL

Что такое sql назначение языка sql. Смотреть фото Что такое sql назначение языка sql. Смотреть картинку Что такое sql назначение языка sql. Картинка про Что такое sql назначение языка sql. Фото Что такое sql назначение языка sql
ПарадигмаМультипарадигмальный
СпроектированоДональд Чемберлин
Рэймонд Бойс
РазработчикиISO/IEC
Первый появившийся1974
Стабильная версияSQL:2008 / 2008
Печать дисциплиныСтатическая, строгая
OSКроссплатформенный
Расширение файла.sql
Главная реализация
Много
Диалект
SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2008
Под влиянием
Datalog
Влияние
Agena, CQL, LINQ, Windows PowerShell [1]
SQL (Structured Query Language)

РазработчикISO/IEC
Начальная версия1986
Последний релиз

Содержание

История

Первые разработки

В начале 1970-х годов в одной из исследовательских лабораторий компании IBM была разработана экспериментальная реляционная СУБД IBM System R, для которой затем был создан специальный язык SEQUEL, позволявший относительно просто управлять данными в этой СУБД. Аббревиатура SEQUEL расшифровывалась как Structured English QUEry Language — «структурированный английский язык запросов». Позже по юридическим соображениям [2] язык SEQUEL был переименован в SQL. Когда в 1986 году первый стандарт языка SQL был принят ANSI, официальным произношением стало [,es kju:’ el] — эс-кью-эл. Несмотря на это, даже англоязычные специалисты зачастую продолжают читать SQL как сиквел (по-русски часто говорят «эс-ку-эль»).

C одной стороны, SQL был ориентирован на удобную и понятную пользователям формулировку запросов к реляционным БД. С другой стороны, практически с самого начала он был так называемым «полным языком БД». Это означает, что SQL включал:

Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Собственно разработкой языка запросов занимались Дональд Чэмбэрлин и Рэй Бойс (|Ray Boyce). Пэт Селинджер (Pat Selinger) занималась разработкой стоимостного оптимизатора (Шаблон:Lang-en2), Рэймонд Лори (Raymond Lorie) занимался компилятором запросов.

Стоит отметить, что SEQUEL был не единственным языком подобного назначения. В Калифорнийском Университете Беркли была разработана некоммерческая СУБД Ingres (являвшаяся, между прочим, дальним прародителем популярной сейчас некоммерческой СУБД PostgreSQL), которая являлась реляционной СУБД, но использовала свой собственный язык QUEL, который, однако, не выдержал конкуренции по количеству поддерживающих его СУБД по сравнению с языком SQL.

Первыми СУБД, поддерживающими новый язык, стали в 1979 году Oracle V2 для машин VAX от компании Relational Software Inc. (впоследствии ставшей компанией Oracle) и System/38 от IBM, основанная на System/R.

Стандартизация

Поскольку к началу 1980-х годов существовало несколько вариантов СУБД от разных производителей, причём каждый из них обладал собственной реализацией языка запросов, было принято решение разработать стандарт языка, который будет гарантировать переносимость ПО с одной СУБД на другую (при условии, что они будут поддерживать этот стандарт).

В 1983 году Международная организация по стандартизации (ISO) и Американский национальный институт стандартов (ANSI) приступили к разработке стандарта языка SQL. По прошествии множества консультаций и отклонения нескольких предварительных вариантов, в 1986 году ANSI представил свою первую версию стандарта, описанную в документе ANSI X3.135-1986 под названием «Database Language SQL» (Язык баз данных SQL). Неофициально этот стандарт SQL-86 получил название SQL1. Год спустя была завершена работа над версией стандарта ISO 9075-1987 под тем же названием. Разработка этого стандарта велась под патронажем Технического Комитета TC97 (Technical Committee TC97), областью деятельности которого являлись процессы вычисления и обработки информации (Computing and Information Processing). Именно его подразделение, именуемое как Подкомитет SC21 (Subcommittee SC21), курировало разработку стандарта, что стало залогом идентичности стандартов ISO и ANSI для SQL1 (SQL-86).

Стандарт SQL1 разделялся на два уровня. Первый уровень представлял собой подмножество второго уровня, описывавшего весь документ в целом. То есть, такая структура предусматривала, что не все спецификации стандарта SQL1 будут относиться к Уровню 1. Тем самым поставщик, заявлявший о поддержке данного стандарта, должен был заявлять об уровне, которому соответствует его реализация языка SQL. Это значительно облегчило принятие и поддержку стандарта, поскольку производители могли реализовывать его поддержку в два этапа.

Со временем к стандарту накопилось несколько замечаний и пожеланий, особенно с точки зрения обеспечения целостности и корректности данных, в результате чего в 1989 году данный стандарт был расширен, получив название SQL89. В частности, в него была добавлена концепция первичного и внешнего ключей. ISO-версия документа получила название ISO 9075:1989 «Database Language SQL with Integrity Enhancements» (Язык баз данных SQL с добавлением контроля целостности). Параллельно была закончена и ANSI-версия.

Сразу после завершения работы над стандартом SQL1 в 1987 году была начата работа над новой версией стандарта, который должен был заменить стандарт SQL89, получив название SQL2, поскольку дата принятия документа на тот момент была неизвестна. Таким образом, фактически SQL89 и SQL2 разрабатывались параллельно. Новая версия стандарта была принята в 1992 году, заменив стандарт SQL89. Новый стандарт, озаглавленный как SQL92, представлял собой по сути расширение стандарта SQL1, включив в себя множество дополнений, имевшихся в предыдущих версиях инструкций.

Как и SQL1, SQL92 также был разделён на несколько уровней, однако, во-первых, число уровней было увеличено с двух до трёх, а во-вторых, они получили названия вместо порядковых цифр: начальный (entry), средний (intermediate), полный (full). Уровень «полный», как и Уровень 2 в SQL1 подразумевал весь стандарт целиком. Уровень «начальный» представлял собой подмножество уровня «средний», в свою очередь, представлявшего собой подмножество уровня «полный». Уровень «начальный» был сравним с Уровнем 2 стандарта SQL1, но спецификации этого уровня были несколько расширены. Таким образом, цепочка включений уровней стандартов выглядела примерно следующим образом: SQL1 Уровень 1 → SQL1 Уровень 2 → SQL92 «Начальный» → SQL92 «Средний» → SQL92 «Полный».

После принятия стандарта SQL92 к нему были добавлены ещё несколько документов, расширявших функциональность языка. Так, в 1995 году был принят стандарт SQL/CLI (Call Level Interface, интерфейс уровня вызовов), впоследствии переименованный в CLI95. На следующий год был принят стандарт SQL/PSM (Persistent Stored Modules, постоянно хранимые модули), получивший название PSM-96. [3]

Следующим стандартом стал SQL:1999 (SQL3). В настоящее время действует стандарт, принятый в 2003 году (SQL:2003) с небольшими модификациями, внесёнными позже (SQL:2008). История версий стандарта:

ГодНазваниеИное названиеИзменения
1986SQL-86SQL-87Первый вариант стандарта, принятый институтом ANSI и одобренный ISO в 1987 году.
1989SQL-89FIPS 127-1Немного доработанный вариант предыдущего стандарта.
1992SQL-92SQL2, FIPS 127-2Значительные изменения (ISO 9075); уровень Entry Level стандарта SQL-92 был принят как стандарт FIPS 127-2.
1999SQL:1999SQL3Добавлена поддержка регулярных выражений, рекурсивных запросов, поддержка триггеров, базовые процедурные расширения, нескалярные типы данных и некоторые объектно-ориентированные возможности.
2003SQL:2003Введены расширения для работы с XML-данными, оконные функции (применяемые для работы с OLAP-базами данных), генераторы последовательностей и основанные на них типы данных.
2006SQL:2006Функциональность работы с XML-данными значительно расширена. Появилась возможность совместно использовать в запросах SQL и XQuery.
2008SQL:2008Улучшены возможности оконных функций, устранены некоторые неоднозначности стандарта SQL:2003 [4]

Для поставщиков СУБД стандарт — это путеводная звезда, которая гарантирует правильное направление работ. А вот эффективность реализации стандарта — это гарантия успеха. SQL нельзя в полной мере отнести к традиционным языкам программирования, он не содержит традиционные операторы, управляющие ходом выполнения программы, операторы описания типов и многое другое, он содержит только набор стандартных операторов доступа к данным, хранящимся в базе данных. Операторы SQL встраиваются в базовый язык программирования, которым может быть любой стандартный язык типа C++, PL, COBOL и т. д. Кроме того, операторы SQL могут выполняться непосредственно в интерактивном режиме.

Альтернатива

Следует различать альтернативы SQL как языка и как альтернативу самой реляционной модели. Ниже предлагаются реляционные альтернативы языку SQL. См. Навигационную базу данных и NoSQL для альтернатив реляционной модели.

Структура

SQL включает в себя выражения, решающие широкий круг задач:

Команды языка SQL чатсо разделяют на наиболее крупные сегменты:

Синтаксис

Структура программы

Data definition language

Data Definition Language используется для модификации схемы реляционной базы данных. Этот раздел языка состоит из четырёх типов утверждений: CREATE, ALTER, DROP, RENAME.

Create

Команда CREATE используется для создания новой базы данных, таблицы, индекса или хранимой процедуры.

ALTER

Команда ALTER используется для модификации уже существующего в БД объекта.

Команда DROP уничтожает существующий объект (будь то база данных, таблица или иной объект).

RENAME

Команда RENAME используется для переименования таблицы.

Data manipulation language

Data Manipulation Language используется для составления запросов к СУБД или модификации её содержимого. Раздел языка состоит из четырёх типов утверждений: SELECT, INSERT, UPDATE и DELETE.

SELECT

SELECT извлекает 0 или более строк из различных таблиц или отображений.

Декларативное утверждение SELECT формулирует запрос с помощью условий FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER_BY, DISTINCT и др. Возможны вложенные запросы, хотя их производительность обычно уступает классическому подходу с применением JOIN. Вложенный запрос также называют подзапросом.

INSERT

INSERT используется для добавления новых строк в таблицу.

UPDATE

UPDATE используется для модификации уже существующей строки.

DELETE

DELETE удаляет заданный условием набор строк.

MERGE

MERGE объединяет элементы нескольких таблиц.

Data control language

Синтаксис Data Control Language используется для ограничения прав пользователей базы данных. Содержит два основных утверждения: GRANT и REVOKE.

GRANT

GRANT предоставляет привилегии пользователю. Все команды SQL выполняются от имени определённого пользователя.

REVOKE

REVOKE снимает привилегии с пользователя. Для полного снятия привилегии необходимо её снятие с понижаемого в полномочиях пользователя всеми пользователями, её давшими.

Управление транзакциями

Преимущества и недостатки

Преимущества

Несмотря на наличие диалектов и различий в синтаксисе, в большинстве своём тексты SQL-запросов, содержащие DDL и DML, могут быть достаточно легко перенесены из одной СУБД в другую. Существуют системы, разработчики которых изначально ориентировались на применение по меньшей мере нескольких СУБД (например: система электронного документооборота Documentum может работать как с Oracle Database, так и с Microsoft SQL Server и DB2). Естественно, что при применении некоторых специфичных для реализации возможностей такой переносимости добиться уже очень трудно.

Наличие стандартов и набора тестов для выявления совместимости и соответствия конкретной реализации SQL общепринятому стандарту только способствует «стабилизации» языка. Правда, стоит обратить внимание, что сам по себе стандарт местами чересчур формализован и раздут в размерах (например, базовая часть стандарта SQL:2003 состоит из более чем 1300 страниц текста).

С помощью SQL программист описывает только то, какие данные нужно извлечь или модифицировать. То, каким образом это сделать, решает СУБД непосредственно при обработке SQL-запроса. Однако не стоит думать, что это полностью универсальный принцип — программист описывает набор данных для выборки или модификации, однако ему при этом полезно представлять, как СУБД будет разбирать текст его запроса. Чем сложнее сконструирован запрос, тем больше он допускает вариантов написания, различных по скорости выполнения, но одинаковых по итоговому набору данных.

Недостатки

Создатели реляционной модели данных Эдгар Кодд, Кристофер Дейт и их сторонники указывают на то, что SQL не является истинно реляционным языком. В частности, они указывают на следующие дефекты SQL с точки зрения реляционной теории [5] :

В опубликованном Кристофером Дейтом и Хью Дарвеном Третьем манифесте [6] они излагают принципы СУБД следующего поколения и предлагают язык Tutorial D, который является подлинно реляционным.

Хотя SQL и задумывался как средство работы конечного пользователя, в конце концов он стал настолько сложным, что превратился в инструмент программиста.

Отступления от стандартов

Несмотря на наличие международного стандарта ANSI SQL-92, многие разработчики СУБД вносят изменения в язык SQL, применяемый в разрабатываемой СУБД, тем самым отступая от стандарта. Таким образом появляются специфичные для каждой конкретной СУБД диалекты языка SQL.

Сложность работы с иерархическими структурами

Ранее диалекты SQL большинства СУБД не предлагали способа манипуляции древовидными структурами. Некоторые поставщики СУБД предлагали свои решения (например, в Oracle Database используется выражение CONNECT BY). В настоящее время в ANSI стандартизована рекурсивная конструкция WITH из диалекта SQL DB2. В Microsoft SQL Server рекурсивные запросы (Recursive Common Table Expressions) появились лишь в версии 2005.

Распределенная обработка SQL

Архитектура распределенной реляционной базы данных (DRDA) была разработана рабочей группой в IBM в период с 1988 по 1994 год. DRDA позволяет связанным с сетью реляционным базам данных взаимодействовать для выполнения запросов SQL. Интерактивный пользователь или программа может выдавать SQL-запросы локальному RDB и получать таблицы данных и индикаторы состояния в ответ от удаленных RDB. Операторы SQL также могут быть скомпилированы и сохранены в удаленных RDB как пакеты, а затем вызваны именем этого пакета. Это важно для эффективной работы прикладных программ, которые вызывают сложные высокочастотные запросы. Это особенно важно, когда доступ к таблицам находится в удаленных системах. Сообщения, протоколы и структурные компоненты DRDA определяются архитектурой распределенного управления данными.

Источник

Что такое sql назначение языка sql. Смотреть фото Что такое sql назначение языка sql. Смотреть картинку Что такое sql назначение языка sql. Картинка про Что такое sql назначение языка sql. Фото Что такое sql назначение языка sql

SQL является инструментом, предназначенным для организации, управления, выборки и обработки информации, содержащейся в базе данных. Изначально в IBM этому языку было дано имя Structured English Query Language, сокращенно SEQUEL. Однако в тот момент владельцем торговой марки SEQUEL была компания Hawker Siddeley Aircraft Company из Великобритании, так что название языка было сокращено до SQL (Structured Query Language, язык структурированных запросов), а слово English было удалено из названия (для соответствия названия аббревиатуре). В настоящее время аббревиатура SQL читается либо как «сиквел», либо как «эс-кю-эль», причем корректны оба произношения, хотя предпочтительно второе. Как следует из названия, SQL является языком программирования, который применяется для организации взаимодействия пользователя с базой данных. На самом деле SQL работает только с базами данных определенного типа, называемыми реляционными базами данных, которые представляют собой основной способ организации данных в широком диапазоне приложений.

На рис. 1. показана схема работы SQL. Согласно этой схеме, в вычислительной системе имеется база данных, в которой хранится важная информация. Если вычислительная система относится к сфере бизнеса, то в базе данных могут содержаться сведения о материальных ценностях, выпускаемой продукции, объемах продаж и зарплате. В базе данных на персональном компьютере может находиться информация о выписанных чеках, телефонах и адресах или информация, извлеченная из более крупной вычислительной системы. Компьютерная программа, которая управляет базой данных, называется системой управления базой данных, или СУБД.

Что такое sql назначение языка sql. Смотреть фото Что такое sql назначение языка sql. Смотреть картинку Что такое sql назначение языка sql. Картинка про Что такое sql назначение языка sql. Фото Что такое sql назначение языка sql

Рис. 1. Применение SQL для обращения к базе данных

Для того чтобы получить информацию из базы данных, вы запрашиваете ее у СУБД с помощью SQL. СУБД обрабатывает запрос, находит требуемые данные и возвращает их вам. Процесс запроса данных у базы данных и получения результата называется запросом к базе данных (вот почему в названии языка имеется слово «запрос» — язык структурированных запросов).

Однако это название не совсем соответствует действительности. Во-первых, сегодня SQL представляет собой нечто большее, чем просто инструмент создания запросов, хотя именно для этого он и был первоначально разработан. Несмотря на то что выборка данных по-прежнему остается одной из наиболее важных функций SQL, сейчас этот язык используется для реализации всех функциональных возможностей, которые СУБД предоставляет пользователю.

Таким образом, SQL является достаточно мощным языком для управления СУБД и взаимодействия с ней.

Во-вторых, SQL — это не полноценный компьютерный язык типа COBOL, С, C++ или Java. SQL является подъязыком баз данных, в который входит около сорока инструкций, предназначенных для решения задач управления базами данных. Эти инструкции SQL могут быть встроены в другой язык, такой как COBOL или С, и расширяют его, давая возможность получать доступ к базам данных. Кроме того, из такого языка, как С, C++ или Java, инструкции SQL можно посылать СУБД в явном виде, используя интерфейс на уровне вызовов функций (call-level interface) или отправляя сообщения по вычислительной сети.

SQL отличается от других языков программирования, поскольку он описывает, что пользователь хочет от компьютера, а не как компьютер должен это сделать. (Говоря технически, SQL является декларативным, или описательным, а не процедурным языком.) В SQL нет инструкции IF для проверки выполнения условия, нет инструкций GOTO, DO или FOR для управления потоком выполнения. Инструкции SQL описывают, как организован набор данных или какие данные должны быть

выбраны или добавлены в базу данных. Последовательность шагов для решения этих задач определяется самой СУБД.

Наконец, SQL — это слабо структурированный язык, особенно по сравнению с такими высокоструктурированными языками, как С, Pascal или Java. Инструкции SQL напоминают обычные предложения естественного языка и содержат «слова-пустышки», не влияющие на смысл инструкции, но облегчающие ее чтение. В SQL почти нет нелогичностей, к тому же имеется ряд специальных правил, предотвращающих создание инструкций, которые выглядят как абсолютно правильные, но не имеют смысла.

Несмотря на не совсем точное название, SQL на сегодняшний день является стандартом языка для работы с реляционными базами данных. SQL — это достаточно мощный и в то же время относительно легкий для изучения язык. Краткое введение в SQL, представленное в следующей главе, познакомит вас с основными возможностями этого языка.

Роль SQL

Сам по себе SQL не является ни системой управления базами данных, ни отдельным программным продуктом. Приобрести SQL нельзя ни в магазине, ни на сайте. SQL — это неотъемлемая часть СУБД, язык и инструмент для связи с ней. На рис. 2. показаны некоторые компоненты типичной СУБД и как SQL объединяет их в единое целое.

Сердцем СУБД является механизм базы данных (database engine, часто называемый просто движком); он отвечает за структурирование данных, сохранение и получение их из базы данных. Он принимает SQL-запросы от других компонентов СУБД (таких, как генератор отчетов или модуль запросов), от пользовательских приложений и даже от других вычислительных систем. Как видно из рисунка, SQL выполняет много различных функций.

Что такое sql назначение языка sql. Смотреть фото Что такое sql назначение языка sql. Смотреть картинку Что такое sql назначение языка sql. Картинка про Что такое sql назначение языка sql. Фото Что такое sql назначение языка sql

Рис. 2. Компоненты типичной системы управления базой данных

Таким образом, SQL — полезный и мощный инструмент, обеспечивающий пользователям, программам и вычислительным системам доступ к информации, содержащейся в реляционных базах данных.

Преимущества SQL

SQL является чрезвычайно успешной информационной технологией. Вспомните, каким был рынок компьютеров в средине 1980-х годов, когда SQL только начинался. Тогда доминировали корпоративные мэйнфреймы и мини-компьютеры. Первый персональный компьютер IBM был создан всего лишь несколько лет назад, а его пользовательским интерфейсом была командная строка MS DOS. Мэйнфреймы IBM работали под управлением операционных систем от Digital Equipment, Data General, Hewlett-Packard и др. Компьютеры соединялись друг с другом при помощи закрытых сетей типа IBM SNA или DECnet от Digital Equipment. Интернет был не более чем инструментом, облегчавшим совместную работу исследовательских лабораторий, а веба не было и в помине. Доминирующими языками программирования были COBOL, С и Pascal; объектно-ориентированное программирование только-только делало первые шаги, a Java еще предстояло изобрести.

Во всех областях информационных технологий — от аппаратного обеспечения до операционных систем, сетей и языков программирования — ключевые технологии средины 1980-х годов уступили место новым решениям и методам. Но в мире управления данными реляционные базы данных и SQL никому не уступили свое место под солнцем. Они развивались, чтобы соответствовать новому аппаратному и программному обеспечению, операционным системам, сетям и языкам программирования. Несмотря на массу попыток свергнуть их с престола, реляционная модель и SQL преуспевают и остаются единственной доминирующей силой в области управления данными. Вот некоторые основные свойства SQL, обеспечивающие такой небывалый его успех в течение последних десятилетий.

Ниже эти факторы рассмотрены более подробно.

Независимость от конкретных СУБД

Все ведущие поставщики СУБД используют SQL, и в течение последнего десятилетия ни одна новая СУБД, не поддерживающая SQL, не может рассчитывать на успех. Реляционную базу данных и программы, которые с ней работают, можно перенести с одной СУБД на другую с минимальными доработками и переподготовкой персонала. Программные средства, входящие в состав СУБД для персональных компьютеров, такие как программы для создания запросов, генераторы отчетов и генераторы приложений, работают с реляционными базами данных многих типов. Таким образом, SQL обеспечивает независимость от конкретных СУБД, что является одной из наиболее важных причин его популярности.

Межплатформенная переносимость

Реляционные СУБД выполняются на различных вычислительных системах — от мэйнфреймов и систем среднего уровня до персональных компьютеров, рабочих станций и переносных ПК. Они функционируют на отдельных компьютерах, в локальных и корпоративных сетях и даже на уровне Интернета. Приложения, созданные с помощью SQL и рассчитанные на однопользовательские системы, по мере своего развития могут быть перенесены на более крупные системы. Информация из корпоративных реляционных баз данных может быть загружена в базы данных отдельных подразделений или в персональные базы данных пользователей. Наконец, экономичные персональные компьютеры могут использоваться для тестирования прототипа приложения базы данных с использованием SQL, перед тем как перенести его на дорогую многопользовательскую систему.

Стандарты языка SQL

Официальный стандарт языка SQL был опубликован Американским национальным институтом стандартов (American National Standards Institute, ANSI) и Международной организацией по стандартизации (International Standards Organization, ISO) в 1986 году, после чего был расширен в 1989 году, а затем— в 1992, 1999, 2003 и 2006 годах. Кроме того, SQL является федеральным стандартом США в области обработки информации (Federal Information Processing Standard, FIPS), и, следовательно, соответствие ему является одним из основных требований, содержащихся в больших правительственных контрактах на разработки в компьютерной промышленности. В течение многих лет свой вклад в стандартизацию различных составляющих SQL, таких как интерфейсы программирования и объектно-ориентированные расширения, вносили многие международные, правительственные и промышленные группы. Со временем часть подобных инициатив стала составной частью стандарта ANSI/ISO. Все эти стандарты служат как бы официальной печатью, одобряющей SQL, и они ускорили завоевание им рынка.

Поддержка со стороны IBM

Изначально SQL разрабатывался исследователями IBM и быстро стал стратегическим продуктом, подтверждением чему служит флагманская СУБД DB2 компании IBM. Поддержка SQL имеется для всех основных семейств компьютеров компании IBM — от персональных компьютеров до мощных мэйнфреймов. Работа IBM ясно указала направление развития для других поставщиков баз данных и программных систем. Позже поддержка IBM существенно ускорила принятие SQL рынком. В 1970-х годах IBM была доминирующей силой на рынке вычислительной техники, так что ее поддержку SQL трудно переоценить.

Поддержка со стороны Microsoft

Основанность на реляционной модели

SQL является языком реляционных баз данных, поэтому он стал популярным тогда, когда популярной стала реляционная модель представления данных. Табличная структура реляционной базы данных со строками и столбцами интуитивно понятна пользователям, поэтому язык SQL является простым и легким для изучения. Реляционная модель имеет солидный теоретический фундамент, послуживший основой для эволюции и реализации реляционных баз данных. На волне популярности, вызванной успехом реляционной модели, SQL стал, по сути, единственным языком для реляционных баз данных.

Высокоуровневая структура, напоминающая естественный язык

Инструкции SQL похожи на обычные предложения английского языка, что упрощает их изучение и понимание. Частично это обусловлено тем, что инструкции SQL описывают данные, которые необходимо получить, а не способ их поиска. Таблицы и столбцы в реляционной базе данных могут иметь длинные описательные имена. В результате большинство инструкций SQL означает именно то, что точно соответствует их именам, поэтому их можно читать как простые, естественные предложения.

Интерактивные запросы

SQL является языком интерактивных запросов, который обеспечивает пользователям немедленный доступ к данным. С помощью SQL пользователь может в интерактивном режиме получить ответы на самые сложные запросы в считанные минуты или секунды, тогда как программисту по требовались бы дни или недели, чтобы написать соответствующую программу. Из-за того что SQL допускает интерактивное формирование запросов, данные становятся более доступными и могуч’ помочь в принятии решений, делая их более обоснованными. Интерактивность SQL на ранних этапах его эволюции была важным преимуществом над нереляционными базами данных и позже осталась таковым по отношению к чисто объектно-ориентированным базам данных.

Программный доступ к базе данных

Программисты пользуются языком SQL при создании приложений, обращающихся к базам данных. Одни и те же инструкции SQL используются как для интерактивного, так и для программного доступа, поэтому части программ, содержащие обращения к базе данных, можно вначале тестировать в интерактивном режиме, а затем встраивать в программу. В традиционных базах данных для программного доступа используются одни программные средства, а для выполнения интерактивных запросов — другие, без какой-либо связи между этими двумя режимами доступа.

Различные представления данных

С помощью SQL создатель базы данных может сделать так, что различные пользователи базы данных будут видеть различные представления ее структуры и содержимого. Например, базу данных можно спроектировать таким образом, что каждый пользователь будет видеть только данные, относящиеся к его подразделению или торговому региону. Кроме того, данные из различных частей базы данных могут быть скомбинированы и представлены пользователю в виде одной простой таблицы. Следовательно, представления можно использовать для усиления защиты базы данных и ее настройки под конкретные требования отдельных пользователей.

Полноценный язык для работы с базами данных

Первоначально SQL был задуман как язык интерактивных запросов, но сейчас он вышел далеко за рамки выборки данных. SQL является полноценным, самосогласованным и логичным языком, предназначенным для создания базы данных, управления ее защитой, изменения ее содержимого, выборки данных и совместного их использования несколькими параллельно работающими пользователями. Концепции, освоенные при изучении одной части языка, могут затем применяться в других командах, что повышает производительность работы пользователей.

Динамическое определение данных

С помощью SQL можно динамически изменять и расширять структуру базы данных даже в то время, когда пользователи обращаются к ее содержимому. Это большое преимущество перед статическими языками определения данных, которые запрещают доступ к базе данных во время изменения ее структуры. Таким образом, SQL обеспечивает максимальную гибкость, так как дает базе данных возможность адаптироваться к изменяющимся требованиям, не прерывая работу приложения, выполняющегося в реальном масштабе времени.

Архитектура “клиент/сервер”

SQL — естественное средство для реализации приложений, использующих распределенную архитектуру «клиент/сервер». В этой роли SQL служит связующим звеном между клиентской системой, взаимодействующей с пользователем, и серверной системой, управляющей базой данных, позволяя каждой из них сосредоточиться на выполнении своих функций. Кроме того, SQL дает возможность персональным компьютерам функционировать в качестве клиентов по отношению к сетевым серверам или более крупным базам данных, установленным на мэйнфреймах; это позволяет получать доступ к корпоративным данным из приложений, работающих на персональных компьютерах.

Поддержка приложений уровня предприятия

Все крупные приложения уровня предприятия, поддерживающие ежедневную деятельность больших компаний и организаций, используют для хранения и организации информации SQL-базы данных. В 1990-х годах, в связи с так называемой «проблемой 2000 года», большие фирмы массово перешли от собственных доморощенных систем к приложениям от таких производителей, как SAP, Oracle, PeopleSoft, Siebel и др. Данные, обрабатываемые такими приложениями (заказы, продажи, клиенты, склады и т.п.), обычно имеют структурированный вид записей с полями, который легко преобразуется в формат строк и столбцов SQL. Создавая свои приложения на базе SQL-баз данных уровня предприятия, производители программного обеспечения избегают необходимости разрабатывать собственные системы управления данными и пользуются всеми преимуществами существующих инструментов и опытом программистов. Поскольку все основные приложения уровня предприятия для своей работы требуют SQL-базы данных, увеличение продаж таких приложений автоматически влечет повышение спроса на новое программное обеспечение баз данных.

Расширяемость и поддержка объектно-ориентированных технологий

Основным вызовом доминированию языка SQL в качестве стандарта баз данных стало появление объектно-ориентированного программирования и языков программирования наподобие Java и C++. Как следствие общей направленности компьютерного рынка в сторону объектно-ориентированных технологий, появились объектные базы данных. В ответ на это поставщики реляционных СУБД начали постепенно расширять и модернизировать SQL, добавляя в него различные обьектные возможности. Появившиеся в результате »объектно-реляционные» базы данных, основанные, как и ранее, на SQL, стали более популярной альтернативой «чисто объектным» базам данных, обеспечив тем самым дальнейшее доминирование SQL в течение последнего десятилетия. Новейшие веяния объектных технологий, воплотившиеся в XML и архитектурах веб-служб, вновь «покусились» на доминирование SQL посредством «XML- баз данных» и альтернативных языков запросов в начале 2000-х годов. И вновь ведущие производители сумели отреагировать на угрозу путем добавления в язык XML- расширений. Пока что история SQL дает основания надеяться, что так же будут преодолены и новые вызовы, которые могут появиться в будущем.

Возможность доступа к данным в Интернете

Рост популярности Интернета и Веб привел к тому, что к концу 1990-х годов SQL стал рассматриваться и как стандартный язык для доступа к данным в Интернете. Первоначально, в эпоху зарождения веб, разработчики, занимавшиеся отображением на веб-страницах информации, извлеченной из баз данных, применяли SQL как средство взаимодействия со шлюзами баз данных. Позднее, с появлением трехуровневой архитектуры Интернета с четким разделением на тонкие клиенты, серверы приложений и серверы баз данных, SQL стал связующим звеном между вторым и третьим уровнями. Роль SQL в многоуровневой архитектуре в настоящее время начинает выходить за рамки серверных баз данных и включает кеширование и управление данными в реальном времени на уровне приложений или вблизи него.

Интеграция с языком Java (протокол JDBC)

Основной областью разработки SQL в последние пять-десять лет являлась интеграция SQL с Java. Осознав необходимость связи языка программирования Java с существующими реляционными базами данных, Sun Microsystems (создатель Java) предложил интерфейс JDBC (Java Database Connectivity), стандартный интерфейс прикладного программирования, позволяющий программистам на Java пользоваться SQL для обращения к базам данных. JDBC получил дальнейшую поддержку, когда был принят в качестве стандарта доступа к данным в спецификации Java2 Enterprise Edition (J2EE), которая определяет операционную среду, предоставляемую большинством ведущих серверов приложений Интернета. В дополнение к роли Java в качестве языка программирования, имеющего доступ к базам данных, многие ведущие производители реализовали поддержку Java в своих системах баз данных, тем самым обеспечив применение Java в качестве языка хранимых процедур и бизнес-логики в самих базах данных. Такая тенденция интеграции Java и SQL обеспечивает важность SQL и в новую эру Java-программирования.

Поддержка открытого кода

Одним из новейших важных событий в компьютерной индустрии стало применение подхода «открытого кода» в построении сложных программных систем. При этом подходе исходный текст является открытым и доступным бесплатно, так что многие программисты могут вносить в него свой вклад, добавлять в него новые возможности, исправлять ошибки, улучшать функциональность и т.п. Такое сообщество программистов, которые могут работать в различных организациях по всему миру, при определенной координации становится мощным двигателем новой технологии. Программное обеспечение с открытым кодом обычно доступно по невысокой цене (или вовсе бесплатно), что только добавляет ему привлекательности. В течение последнего десятилетия разработан ряд успешных проектов SQL- баз данных с открытым кодом, одна из которых, MySQL, стала стандартным компонентом набора программного обеспечения с открытым кодом LAMP, в который, кроме MySQL, входят операционная система Linux, веб-сервер Apache и язык сценариев РНР. Широкая доступность бесплатных SQL-баз данных с открытым кодом способствует дальнейшему росту популярности SQL.

Промышленная инфраструктура

Пожалуй, наиболее важным фактором растущей популярности SQL можно считать появление целой промышленной инфраструктуры, основанной на SQL. СУРБД на базе SQL являются важной частью этой инфраструктуры. Еще одной важной частью являются приложения уровня предприятия, использующие SQL и требующие наличия SQL-базы данных. Кроме того, можно упомянуть массу инструментов, таких как генераторы отчетов, инструменты для ввода данных, проектирования баз данных, программный инструментарий и многое другое, что облегчает применение SQL. Критической частью этой инфраструктуры является большое количество опытных программистов SQL. Еще одной важной частью является легкодоступное обучение и помощь при работе с SQL. Целые фирмы специализируются на консультировании по вопросам SQL, оптимизации и повышении производительности кода. Все эти части усиливают друг друга и обеспечивают успех SQL. Проще говоря, при наличии задач управления данными простейшие, наименее рискованные и наиболее дешевые решения получаются при применении SQL.

Давайте теперь поговорим, как работать с SQL? Рассмотрим синтаксис языка, основные операторы и команды.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *