Язык sql


SQL-Урок 1. Язык SQL. Основные понятия.

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

1. Что такое База Данных

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

2. Что такое SQL

Итак, переходим к SQL.

SQL — простой язык программирования, который имеет немного команд и которой может научиться любой желающий. Расшифровывается как Structured Query Language — язык структурированных запросов, который был разработан для работы с БД, а именно, чтобы получать /добавлять /изменять данные, иметь возможность обрабатывать большие массивы информации и быстро получать структурированную и сгруппированную информацию. Есть много вариантов языка SQL, но у них всех основные команды почти одинаковы. Также существует и много СУБД, но основными из них являются: Microsoft Access, Microsoft SQL Server, MySQL, Oracle SQL, IBM DB2 SQL, PostgreSQL та Sybase Adaptive Server SQL. Чтобы работать с SQL кодом, нам понадобится одна из вышеперечисленных СУБД. Для обучения мы будем использовать СУБД Microsoft Access .

SQL как и другие языки программирования имеет свои команды (операторы), с помощью которых отдаются инструкции для выборки данных. Чтобы рассмотреть как работают операторы SQL, мы будем использовать мнимую БД с информацией о реализованной продукции:

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Язык запросов SQL

Язык запросов SQL

База данных — централизованное хранилище данных, обеспечивающее хранение, доступ, первичную обработку и поиск информации.

Базы данных разделяются на:

  • Иерархические
  • Сетевые
  • Реляционные
  • Объектно-ориентированные

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

Для работы с SQL кодом необходима система управления базами данных (СУБД), которая предоставляет функционал для работы с базами данных.

Система управления базами данных (СУБД) — совокупность языковых и программных средств, предназначенных для создания, ведения и совместного использования БД многими пользователями.

Обычно, для обучения используется СУБД Microsoft Access, но мы будем использовать более распространенную в веб сфере систему — MySQL. Для удобства будет использовать веб-интерфейс phpmyadmin или онлайн сервис для построения sql запросов sql fiddle, принцип работы с которыми описан ниже.

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

Составляющие языка SQL

Язык SQL состоит из следующих составных частей:

  1. язык манипулирования данными (Data Manipulation Language, DML);
  2. язык определения данных (Data Definition Language, DDL);
  3. язык управления данными (Data Control Language, DCL).

1.
Язык манипулирования данными состоит из 4 главных команд:

  • выборка данных из БД — SELECT
  • вставка данных в таблицу БД — INSERT
  • обновление (изменение) данных в таблицах БД — UPDATE
  • удаление данных из БД — DELETE

2.

Язык определения данных используется для создания и изменения структуры базы данных и ее составных частей — таблиц, индексов, представлений (виртуальных таблиц), а также триггеров и сохраненных процедур.

Мы будем рассматривать лишь несколько из основных команд языка. Ими являются:

  • создание базы данных — CREATE DATABASE
  • создание таблицы — CREATE TABLE
  • изменение таблицы (структуры) — ALTER TABLE
  • удаление таблицы — DROP TABLE

3.

Язык управления данными используется для управления правами доступа к данным и выполнением процедур в многопользовательской среде.

Как сделать sql запрос в phpmyadmin

  1. Запустить ярлык start denwer .
  2. В адресной строке браузера набрать http://localhost/tools/phpmyadmin .
  3. В левой части окна выбрать интересующую базу данных или создать ее (если еще не создана). Создание базы данных в phpmyadmin рассмотрено ниже.
  4. Если известна таблица, с которой будет работать запрос — в левой части окна выбрать эту таблицу.
  5. Выбрать вкладку SQL и начать вводить запрос.

Создание базы данных в phpmyadmin

Для начала необходимо выполнить первые два пункта из предыдущего задания.
Затем:

  • в открывшемся веб-интерфейсе выбрать вкладку Базы данных;
  • в поле Создать базу данных ввести название базы;
  • щелкнуть по кнопке Создать;
  • теперь для продолжения работы в phpMyAdmin в созданной базе данных можно перейти к уроку создания таблиц.

Работа в сервисе sql fiddle

Онлайн проверка sql запросов возможна при помощи сервиса sqlFiddle.
Самый простой способ организации работы состоит из следующих этапов:

    В верхней части рабочей области сервиса выбираем язык: SQLite(WebSQL);

В левое окно помещается код для создания таблиц и вставки в них данных (пример кода расположен ниже). Затем щелкается кнопка «Build Schema».

После того как схема построена (об этом сигнализирует надпись на зеленом фоне «Schema Ready»), в правое окошко вставляется код запроса и щелкается кнопка Run SQL.

Еще пример:

Теперь некоторые пункты рассмотрим подробнее.

Создание таблиц:

* для тех, кто незнаком с синтаксисом — просто скопировать полностью код и вставить в левое окошко сервиса

* урок по созданию таблиц в языке SQL далее

/*teachers*/ CREATE TABLE `teachers` ( `id` int(11) NOT NULL, `name` varchar(25) NOT NULL, `code` int(11), `zarplata` int(11), `premia` int(11), PRIMARY KEY (`id`) ); insert into teachers values (1, ‘Иванов’,1,10000,500), (2, ‘Петров’,1,15000,1000) ,(3, ‘Сидоров’,1,14000,800), (4,’Боброва’,1,11000,800); /*lessons*/ CREATE TABLE `lessons` ( `id` int(11) NOT NULL, `tid` int(11), `course` varchar(25), `date` varchar(25), PRIMARY KEY (`id`) ); insert into lessons values (1,1, ‘php’,’2015-05-04′), (2,1, ‘xml’,’2020-13-12′); /*courses*/ CREATE TABLE `courses` ( `id` int(11) NOT NULL, `tid` int(11), `title` varchar(25), `length` int(11), PRIMARY KEY (`id`) ); insert into courses values (1,1, ‘php’,54), (2,1, ‘xml’,72), (3,2, ‘sql’,25);

В результате получим таблицы с данными:

Отправка запроса:
Для того чтобы протестировать работоспособность сервиса, добавьте в правое окошко код запроса.

SELECT * FROM `teachers` WHERE `name` = ‘Иванов’;

На дальнейших уроках SQL будет использоваться та же схема, поэтому необходимо будет просто копировать схему и вставлять в левое окно сервиса.

Онлайн визуализации схемы базы данных

Для онлайн визуализации схемы базы данных можно воспользоваться сервисом https://dbdesigner.net/:

  1. Создать свой аккаунт (войти в него, если уже есть).
  2. Щелкнуть по кнопке Go to Application.
  3. Меню Schema ->Import.
  4. Скопировать и вставить в появившееся окно код создания и заполнения таблиц базы данных

Язык структурных запросов SQL

Стандарт и реализация языка SQL.Увеличение объемов информации, необходимость хранения огромных массивов данных и их обработки привели к тому, что возникла потребность в создании стандартного языка БД, который мог бы использоваться в многочисленных компьютерных системах различных видов (на персональном компьютере, сетевой рабочей станции, универ­сальной ЭВМ и т. д.). Таким языком, согласно известным сведениям [1, 21, 22], стал язык SQL (Structured Query Language). В настоящее время он получил очень широкое распространение и фактически превратился в стандартный язык реляционных БД. В 1986 г. Американский национальный институт стандартов (ANSI) выпустил стандарт на язык SQL, а в 1987 г. Международ­ная организация стандартов (ISO) приняла его в качестве международного; сейчас это SQL/92.

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

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

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

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

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

Формы языка SQL.Структурированный язык запросов SQL реализуется в следующих формах:

Интерактивный SQL позволяет конечному пользователю в интерактивном режиме выполнять SQL-операторы. Все СУБД предоставляют инструментальные средства для работы с БД в интерактивном режиме. Например, СУБД Oracle включает утилиту SQL*Plus, позволяющую в строчном режиме выполнять большинство SQL-операторов.

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

Динамический SQL позволяет формировать операторы SQL во время выполнения программы.

Встроенный SQL позволяет включать операторы SQL в код программы на другом языке программирования (например, C++).

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

Все допустимые в SQL типы данных, которые можно использовать при определении столбцов, разбиваются на следующие категории [22]:

1. точные числовые типы;

2. приближенные числовые типы;

3. типы символьных строк;

4. типы битовых строк;

5. типы даты и времени;

6. типы временных интервалов;

7. булевский тип;

8. типы коллекций;

9. анонимные строчные типы;

10. типы, определяемые пользователем;

11. ссылочные типы.

В столбцах таблиц, определенных на любых типах данных, наряду со значениями этих типов, допускается сохранение неопределенного значения, которое обозначается ключевым словом NULL.

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

Понятие домена.Домен — это набор допустимых значений для одного или нескольких атрибутов. Если в таблице БД или в нескольких таблицах присутствуют столбцы, обладающие одними и теми же характеристиками, можно описать тип такого столбца и его поведение через домен, а затем поставить в соответствие каждому из одинаковых столбцов имя домена. Домен определяет все потенциальные значения, которые могут быть присвоены атрибуту [21].

Стандарт SQL позволяет определить домен с помощью следующего оператора:

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

Удаление доменов из БД выполняется с помощью оператора:

Альтернативой доменам в среде SQL Server являются пользовательские типы данных.

Подробная информация о доменах содержится в специальной литературе.

Группы операторов SQL.Язык SQL определяет:

1. операторы языка, называемые иногда командами языка SQL;

3. набор встроенных функций.

По своему логическому назначению операторы языка SQL часто разбиваются на следующие группы [23]:

1. язык определения данных DDL (Data Definition Language);

2. язык манипулирования данными DML (Data Manipulation Language).

Язык определения данныхвключает операторы, управляющие объектами БД. К последним относятся таблицы, индексы, представления. Для каждой конкретной БД существует свой набор объектов БД, который может значительно расширять набор объектов, предусмотренный стандартом. В некоторых СУБД, таких как Oracle, все объекты БД, принадлежащие одному пользователю, образуют схему БД. С другой стороны, в стандарте SQL92 термином «схема» стали называть группу взаимосвязанных таблиц:

CREATE SCHEMA — создать схему БД;

DROP SHEMA — удалить схему БД;

CREATE TABLE — создать таблицу;

ALTER TABLE — изменить таблицу;

DROP TABLE — удалить таблицу;

CREATE DOMAIN — создать домен;

ALTER DOMAIN — изменить домен;

DROP DOMAIN — удалить домен;

CREATE COLLATION — создать последовательность;

DROP COLLATION — удалить последовательность;

CREATE VIEW — создать представление;

DROP VIEW — удалить представление.

Язык манипулирования даннымивключает операторы, управляющие содержанием таблиц БД и извлекающие информацию из этих таблиц. К таким операторам относятся:

SELECT — извлечение данных из одной или нескольких таблиц;

INSERT — добавление строк в таблицу;

DELETE — удаление строк из таблицы;

UPDATE — изменение значений полей в таблице.

Оператор INSERT вставляет в таблицу новую запись:

Число значений должно соответствовать числу указанных полей. Полям, не перечисленным в списке, присваивается значение NULL. Полю SERIAL, если его нет в списке или указано значение 0, присваивается новое уникальное значение. Если значение указано явно, то оно и присваивается.

Кроме констант для задания значений можно использовать выражения: строковые, арифметические, дату и др., и функции:

USER — имя пользователя, выполняющего данный оператор;

TODAY — дата выполнения оператора;

CURRENT — момент времени выполнения оператора.

Для удаления ненужных записей в таблице используется оператор DELETE:

DELETE FROM [WHERE ].

Фазы выполнения SQL-оператора приведены в табл. 3.4.

Понятие транзакции.Транзакцией называется последовательность действий, которая или полностью фиксируется в БД, или полностью отменяется. Иногда под транзакцией также подразумевают не группу SQL-операторов, а интервал времени, выполняемые в течение которого SQL-операторы можно или все зафиксировать или все отменить [24].

Таблица 3.4. Фазы выполнения SQL-оператора


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

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

Новая транзакция начинается с начала каждого сеанса работы с базой данных. Далее все выполняемые SQL-операторы будут входить в одну транзакцию до тех пор, пока не будет выполнен оператор COMMIT WORK или ROLLBACK WORK.

Оператор COMMIT WORK завершает текущую транзакцию, выполняя фиксацию сделанных изменений в базе данных. Иногда говорят, что оператор COMMIT WORK фиксирует транзакцию.

Оператор ROLLBACK WORK выполняет откат транзакции, отменяя действие всех SQL-операторов, выполненных в текущей транзакции.

Логически транзакция должна объединять только выполнение взаимосвязанных операций. Так, если делать транзакции «очень большими», состоящими из последовательности не связанных между собой операторов, то любой сбой, автоматически выполняющий откат транзакции, повлияет на отмену действий, которые могли бы быть успешно завершены при более «коротких» транзакциях [24].

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Для студента самое главное не сдать экзамен, а вовремя вспомнить про него. 10041 — | 7504 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Язык SQL – назначение, особенности, преимущества, существующие стандарты.

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

К достоинствам языка SQL относится наличие международных стандартов.

Начиная с 1986 года комитеты ISO (International Organization for Standardization) и ANSI (American National Standards Institute) приступили к созданию ряда стандартов языка SQL, которые впоследствии были приняты и получили следующие названия:

В стандарте SQL92 было определено три уровня соответствия:

Новый стандарт SQL99, при разработке именовавшийся как SQL3, стандартизировал объектные расширения языка SQL и некоторые процедурные расширения языка SQL. В стандарте SQL99 определено обязательное функциональное ядро и набор уровней расширенного соответствия.

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

При этом объявлено, что стандарт SQL99 является открытым для всех последующих уровней расширенного соответствия, которые могут появиться в дальнейшем.

Структурированный язык запросов SQL реализуется в следующих формах:

Основные инструкции SQL.

В составе SQL могут быть выделены следующие группы инструкций:

— язык описания данных — DDL (Data Definition Language);

— язык манипулирования данными — DML (Data Manipulation Language);

— язык управления транзакциями.

Инструкции DDL предназначены для создания, изменения и удаления объектов базы данных. Их описание приведено в табл. 1.

Таблица 1. Инструкции языка определения данных (DDL)

Инструкция Назначение
CREATE Создание новых объектов (таблиц, полей, индексов и т. д.)
DROP Удаление объектов
ALTER Изменение объектов

CREATE TABLE Фирмы

( КодФирмы TEXT (5),

НазвФирмы TEXT (30),

АдресФирмы TEXT (40),

ALTER TABLE Фирмы ADD COLUMN Директор TEXT.(30);

DROP TABLE Фирмы;

Инструкции DML (табл. .2) позволяют выбирать данные из таблиц, а также добавлять, удалять и изменять их.

Таблица 2. Инструкции языка манипулирования данными (DML)

Инструкция Назначение
SELECT Выполнение запроса к базе данных с целью отбора записей, удовлетворяющих заданным критериям
INSERT Добавление записей в таблицы базы данных
UPDATE Изменение значений отдельных записей и полей
DELETE Удаление записей из базы данных

Перечень основных предложений языка SQL приведен в табл. 3.

Таблица 3 — Основные предложения языка SQL

Инструкция Назначение
FROM Указывает имя таблицы, из которой должны быть отобраны данные
WHERE Специфицирует условия, которым должны удовлетворять выбираемые данные
GROUP BY Определяет, что выбираемые записи должны быть сгруппированы
HAVING Задает условие, которому должна удовлетворять каждая группа отобранных записей
ORDER BY Специфицирует порядок сортировки записей

Запросы в SQL.

Оператор SELECT позволяет формировать запрос к базе данных.

SELECT * FROM Фирмы;

SELECT Int([УстФонд]/500)*500 AS Диапазон,

Count(КодФирмы) AS ЧислоФирм

GROUP BY Int([УстФонд]/500)*500;

Кроме стандартных операторов сравнения, таких как =, <>, >, =, =y);

· IN — совпадает с одним из перечисленных в списке. Например: x IN (a,b,c);

· LIKE — возвращает TRUE для значений, совпадающих с указанной подстрокой символов. Например: x LIKE ‘abc’;

· IS NULL — возвращает TRUE, если значение равно NULL. Этот предикат возвращает только значение TRUE или FALSE. Например: x IS NULL;

  • EXISTS — предикат существования, возвращающий значение TRUE, если указанный в нем подзапрос содержит хотя бы одну строку.

Фраза GROUP BY оператора SELECT применяется для определения группы строк, над которыми выполняются функции агрегирования.

К функциям агрегирования относятся следующие функции языка SQL:

  • COUNT — подсчет количества всех значений столбцов в группе;
  • AVG — определение среднего значения;
  • SUM — подсчет суммы всех значении группы;
  • MAX — определение максимального значения из группы;
  • MIN — определение минимального значения из группы.

Фраза HAVING оператора SELECT определяет предикат аналогично фразе WHERE, но применяемый к строкам, полученным в результате выполнения функций агрегирования.

Фраза ORDER BY применяется для упорядочивания результирующего набора, которое выполняется в соответствии со значениями столбцов, указанных в списке после фразы ORDER BY.

При упорядочивании можно указать опцию ASC (по возрастанию) или DESC (по убыванию).

Транзакции в БД

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

Инструкции языка управления транзакциями приведены в табл. 4.

Таблица 4. Инструкции языка управления транзакциями

Инструкция Назначение
COMMIT Фиксация в базе данных всех изменений, сделанных текущей транзакцией
SAVEPOINT Установка точки сохранения (начала транзакции)
ROLLBACK Откат изменений, сделанных с момента начала транзакции

Следующая схема демонстрирует принцип использования транзакций.

Большинство коммерческих СУБД позволяет устанавливать режим автоматической фиксации изменений — автокоммит.

Для установки этого режима используется оператор SET AUTOCOMMIT ON;

Назначение языка 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 язык SQL включал только команды определения и манипулирования данными; в нем отсутствовали какие-либо команды управления ходом вычислений. Другими словами, в этом языке не было команд IF . THEN . ELSE, GO TO, DO . WHILE и любых других, предназначенных для управления ходом вычислительного процесса. Подобные задачи должны были решаться программным путем, с помощью языков программирования или управления заданиями, либо интерактивно, в результате действий, выполняемых самим пользователем. По причине подобной незавершенности, с точки зрения организации вычислительного процесса, язык SQL мог использоваться двумя способами. Первый предусматривал интерактивную работу, заключающуюся во вводе пользователем с терминала отдельных операторов SQL. Второй состоял во внедрении операторов SQL в программы на процедурных языках.

Достоинства языка SQL3, формальное определение которого принято в 1999 году:

· Язык SQL относительно прост в изучении.

· Это непроцедурный язык, поэтому в нем необходимо указывать, какая информация должна быть получена, а не как ее можно получить. Иначе говоря, язык SQL не требует указания методов доступа к данным.

· Как и большинство современных языков, SQL поддерживает свободный формат записи операторов. Это означает, что при вводе отдельные элементы операторов не связаны с фиксированными позициями на экране.

· Структура команд задается набором ключевых слов, представляющих собой обычные слова английского языка, такие как CREATE TABLE -Создать таблицу, INSERT — Вставить, SELECT -Выбрать.

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, причем постоянно приходится слышать о выпуске все новых и новых версий,

Язык программирования SQL

SQL (Structured Query Language) — Структурированный Язык Запросов стандартный язык запросов по работе с реляционными БД. Язык SQL появился после реляционной алгебры, и его прототип был разработан в конце 70-х годов в компании IBM Research. Он был реализован в первом прототипе реляционной СУБД фирмы IBM System R. В дальнейшем этот язык применялся во многих коммерческих СУБД и в силу своего широкого распространения постепенно стал стандартом «де-факто» для языков манипулирования данными в реляционных СУБД.

Основные понятия, определения, операторы. Структура SQL

В отличие от реляционной алгебры, где были представлены только операции запросов к БД, SQL является полным языком, в нем присутствуют не только операции запросов, но и операторы, соответствующие DDL — Data Definition Language — языку описания данных. Кроме того, язык содержит операторы, предназначенные для управления (администрирования) баз данных. SQL содержит разделы, представленные в таблице 4.1:

Таблица 4.1 Операторы определения данных DDL

Создает новую таблицу в БД

Удаляет таблицу из БД

Изменяет структуру существующей таблицы или ограничения целостности, задаваемые для данной таблицы


Создает виртуальную таблицу, соответствующую некоторому SQL-запросу

Изменяет ранее созданное представление

Удаляет ранее созданное представление

Создает индекс для некоторой таблицы для обеспечения быстрого доступа по атрибутам, входящим в индекс

Удаляет ранее созданный индекс

Таблица 4.2 Операторы манипулирования данными Data Manipulation Language (DMP)

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

Вставляет одну строку в базовую таблицу. Допустимы модификации оператора, при которых сразу несколько строк могут быть перенесены из одной таблицы или запроса в базовую таблицу

Обновляет значения одного или нескольких столбцов в одной или нескольких строках, соответствующих условиям фильтрации

Таблица 4.3 Язык запросов Data Query Language (DQL)

Оператор, заменяющий все операторы реляционной алгебры и позволяющий сформировать результирующее отношение, соответствующее запросу

Таблица 4.4 Средства управления транзакциями

Завершить комплексную взаимосвязанную обработку информации, объединенную в транзакцию

Отменить изменения, проведенные в ходе выполнения транзакции

Сохранить промежуточную точку выполнения транзакции

Сохранить промежуточное состояние БД, пометить его для того, чтобы можно было в дальнейшем к нему вернуться

Таблица 4.5 Средства администрирования данных

Изменить набор основных объектов в базе данных, ограничений, касающихся всем базы данных

Изменить область хранения БД

Изменить ранее созданную область хранения

Изменить пароль для всей базы данных

Создать новую базу данных, определив основные параметры для нее

Создать область хранения

Создать новую область хранения и сделать ее доступной для размещения данных

Удалить существующую базу данных (только в том случае, когда вы имеете право выполнить это действие)

Удалить область хранения БД

Удалить существующую область хранения (если в ней на настоящий момент не располагаются активные данные)

Предоставить нрава доступа на ряд действий над некоторым объектом БД

Лишить прав доступа к некоторому объекту или некоторым действиям над объектом

Таблица 4.6 Программный SQL

Определяет курсор для запроса

Задает некоторое имя и определяет связанный с ним запрос к БД, который соответствует виртуальному набору данных

Формирует виртуальный набор данных, соответствующий описанию указанного курсора и текущему состоянию БД

Считать строку из множества строк, определенных курсором

Считывает очередную строку, заданную параметром команды из виртуального набора данных, соответствующего открытому курсору

Прекращает доступ к виртуальному набору данных, соответствующему указанному курсору

Подготовить оператор SQL к динамическому выполнению

Сгенерировать план выполнения запроса, соответствующего заданному оператору SQL

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

Типы данных. база данный код информационный

В языке SQL поддерживаются следующие типы данных:

  • · CHARACTER(n) или CHAR(n) — символьные строки постоянной длины в n символов. При задании данного типа под каждое значение всегда отводится n символов, и если реальное значение занимает менее, чем n символов, то СУБД автоматически дополняет недостающие символы пробелами.
  • · NUMERIC[(n,m)] — точные числа, здесь n — общее количество цифр в числе, m — количество цифр слева от десятичной точки.
  • · DECIMAL[(n,m)] — точные числа, здесь n — общее количество цифр в числе, m — количество цифр слева от десятичной точки.
  • · DEC[(n,m)] — то же, что и DECIMAL[(n,m)].
  • · INTEGER или INT — целые числа.
  • · SMALLINT — целые числа меньшего диапазона.
  • · FLOAT[(n)] — числа большой точности, хранимые в форме с плавающей точкой. Здесь n — число байтов, резервируемое под хранение одного числа. Диапазон чисел определяется конкретной реализацией.
  • · REAL — вещественный тип чисел, который соответствует числам с плавающей точкой, меньшей точности, чем FLOAT.
  • · DOUBLE PRECISION специфицирует тип данных с определенной в реализации точностью большей, чем определенная в реализации точность для REAL.
  • · VARCHAR(n) — строки символов переменной длины.
  • · NCHAR(N) — строки локализованных символов постоянной длины.
  • · NCHAR VARYING(n) — строки локализованных символов переменной длины.
  • · BIT(n) — строка битов постоянной длины.
  • · BIT VARYING(n) — строка битов переменной длины.
  • · DATE — календарная дата.
  • · ТIMESТАМР(точность) — дата и время.
  • · INTERVAL — временной интервал.

В стандарте SQL определены встроенные функции:

  • · BIT_LENGTH(cтpoкa) — количество битов в строке;
  • · САSТ(значение AS тип данных) — значение, преобразованное в заданный тип данных;
  • · CHAR_LENGTH(cтpoкa) — длина строки символов;
  • · CONVERT(cтpoкa USING функция) — строка, преобразованная в соответствии с указанной функцией;
  • · CURRENT_DATE — текущая дата;
  • · CURRENT_TIME(точность) — текущее время с указанной точностью;
  • · CURRENT_TIMESTAMP(точность) — текущие дата и время с указанной точностью;
  • · LOWER(cтpокa) — строка, преобразованная к верхнему регистру;
  • · OCTED_LENGTH(строка) — число байтов в строке символов;
  • · POSITION(первая строка IN вторая строка) — позиция, с которой начинается вхождение первой строки во вторую;
  • · SUBSTRING(cтpoкa FROM n FOR длина) — часть строки, начинающаяся с n-го символа и имеющая указанную длину;
  • · TRANSLATE(строка USING функция) — строка, преобразованная с использованием указанной функции;
  • · TRIM(BOTH символ FROM строка) — строка, у которой удалены все первые и последние символы;
  • · TRIM(LEADING символ FROM строка ) — строка, в которой удалены все первые указанные символы;
  • · TRIM(TRAILING символ FROM строка) — строка, в которой удалены последние указанные символы;
  • · UPPER(строка) — строка, преобразованная к верхнему регистру.

Оператор выбора SELECT

Язык запросов (Data Query Language) в SQL состоит из единственного оператора SELECT. Этот единственный оператор поиска реализует все операции реляционной алгебры. Кажется просто, всего один оператор. Однако писать запросы на языке SQL (грамотные запросы) сначала совсем не просто. Надо учиться, так же как надо учиться решать математические задачки или составлять алгоритмы для решения непростых комбинаторных задач. Один и тот же запрос может быть реализован несколькими способами, и, будучи все правильными, они, тем не менее, могут существенно отличаться по времени исполнения, и это особенно важно для больших баз данных.

Синтаксис оператора SELECT имеет следующий вид:

SELECT [ALL | DISTINCT] «Список полей>|*)

Здесь ключевое слово ALL означает, что в результирующий набор строк включаются все строки, удовлетворяющие условиям запроса. Значит, в результирующий набор могут попасть одинаковые строки. И это нарушение принципов теории отношений (в отличие от реляционной алгебры, где по умолчанию предполагается отсутствие дубликатов в каждом результирующем отношении). Ключевое слово DISTINCT означает, что в результирующий набор включаются только различные строки, то есть дубликаты строк результата не включаются в набор.

Символ *. (звездочка) означает, что в результирующий набор включаются все столбцы из исходных таблиц запроса.

В разделе FROM задается перечень исходных отношений (таблиц) запроса.

В разделе WHERE задаются условия отбора строк результата или условия соединения кортежей исходных таблиц, подобно операции условного соединения в реляционной алгебре.

В разделе GROUP BY задается список полей группировки.

В разделе HAVING задаются предикаты-условия, накладываемые на каждую группу.

В части ORDER BY задается список полей упорядочения результата, то есть список полей, который определяет порядок сортировки в результирующем отношении. Например, если первым полем списка будет указана Фамилия, а вторым Номер группы, то в результирующем отношении сначала будут собраны в алфавитном порядке студенты, и если найдутся однофамильцы, то они будут расположены в порядке возрастания номеров групп.

В выражении условий раздела WHERE могут быть использованы следующие предикаты:

    · Предикаты сравнения < =, <>, >, =, IS NULL и IS NOT NULL.

Если в данном кортеже (в данной строке) указанный атрибут имеет неопределенное значение, то предикат IS NULL принимает значение «Истина» (TRUE), а предикат IS NOT NULL — «Ложь» (FALSE), в противном случае предикат IS NULL принимает значение «Ложь», а предикат IS NOT NULL принимает значение «Истина».

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

Отложив на время знакомство с группировкой, рассмотрим детально первые три строки оператора SELECT:

· SELECT — ключевое слово, которое сообщает СУБД, что эта команда — запрос. Вс.

· FROM — ключевое слово, подобно SELECT, которое должно быть представлено в каждом запросе. Оно сопровождается пробелом и затем именами таблиц, используемых в качестве источника информации. В случае если указано более одного имени таблицы, неявно подразумевается, что над перечисленными таблицами осуществляется операция декартова произведения. Таблицам можно присвоить имена-псевдонимы, что бывает полезно для осуществления операции соединения таблицы с самой собою или для доступа из вложенного подзапроса к текущей записи внешнего запроса (вложенные подзапросы здесь не рассматриваются).

Основы языка SQL

В настоящее время SQL (англ. structured query language – язык структурированных запросов) является стандартным реляционным языком БД и поддерживается всеми распространенными реляционными и объектно- реляционными СУБД.

В 1970-х гг. в IBM для проверки возможностей практической реализации реляционной модели данных разрабатывалась экспериментальная СУБД System R. Для нее был создан язык SEQUEL (англ. Structured English QUEry Language). Язык получил достаточно широкую популярность и несколько позже, из-за существования зарегистрированной торговой марки SEQUEL, был переименован в SQL.

Поддержка языка SQL, независимо реализуемая в СУБД ряда производителей, привела к необходимости разработки стандартов этого языка. Разработка спецификации SQL была начата Американским национальным институтом стандартов (ANSI) в 1982 г. Стандарт был принят ANSI в 1986 г. и в 1987 г. одобрен Международной организацией по стандартизации (ISO). Эта версия стандарта SQL обычно обозначается как SQL–86.

Следующая версия выпущена в 1989 г. (SQL–89). В ней, в частности, были четко стандартизованы синтаксис и семантика операторов выборки данных и манипулирования данными, определены средства ограничения целостности БД [15].

Версия стандарта SQL–92, также известная как SQL2, значительно расширила предыдущую версию, определив средства манипулирования схемой БД, управление транзакциями и сессиями, подключения к БД и т.д.

В выпущенную в 1999 г. версию SQL: 1999 (SQL3) добавлена поддержка регулярных выражений, рекурсивных запросов, поддержка триггеров, базовые процедурные расширения, нескалярные типы данных и некоторые объектно-ориентированные возможности.

Последующие версии – SQI-:2003, SQL:2006, SQL:2008 – внесли поддержку данных в формате XML, совместного использования в запросах SQL и языка запросов к XML-данным XQuery (SQL:2006) и ряд других новшеств.

Начиная с SQL:1999 стандарт разбивается на части, каждая из которых оформляется в виде отдельного документа. После утверждения в ISO эти документы выпускаются также в виде стандартов этой организации (серия 9075). Например, вторая часть SQL:2008 выпущена как ISO/IEC 9075-2:2011 Information technology – Database languages – SQL – Part 2: Foundation (SQL/Foundation) («Информационные технологии. Языки базы данных. Язык структурированных запросов (SQL). Часть 2. Основа»).

Язык SQL включает три подъязыка:

  • Data Definition Language (DDL) – язык определения данных, включающий такие операторы, как CREATE, ALTER, DROP;
  • Data Manipulation Language (DML) – язык обработки данных, который позволяет запрашивать и изменять данные и включает операторы SELECT, INSERT, UPDATE, DELETE;
  • Data Control Language (DCL) – язык управления данными, позволяет управлять разрешениями на доступ к данным и включает операторы GRANT и REVOKE.

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

  • • Microsoft SQL Server – Transact-SQL или T-SQL;
  • • Microsoft Access – Jet SQL;
  • • Oracle Database – PL/SQL;
  • • IBM DB2 – SQL PL.

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

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

Краткая история языка SQL

Читайте также:

  1. I. История обезболивания
  2. Важной особенностью алгоритмических языков типа псевдокодов является их близость к языкам программирования.
  3. Введение: История в системе социально-гуманитарных наук
  4. Виды транспорта, их краткая технико-экономическая характеристика, сферы применения. Роль железных дорог в транспортной системе страны.
  5. Виды управленческих решений и их краткая характеристика
  6. Вопрос 2: История российской страховой науки
  7. Вопрос 3. Литературный язык – высшая форма национального языка
  8. Вопрос 4: История страхования ответственности директоров
  9. Всемирная история новейшего времени. 1945 – начало XXI в.
  10. Глушаченко С.Б., Пузырева Е.В. К вопросу о логической структуре российской правовой нормы // История государства и права, 2005, № 1.
  11. Градация словесного ударения по силе в английском и русском языках.
  12. Градостроительство и управление: подходы к изучению, краткая характеристика

Введение

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

Язык SQL, предназначенный для взаимодействия с базами данных, появился в середине 70-х (первые публикации датируются 1074 г.) и был разработан в компании IBM в рамках проекта экспериментальной реляционной СУБД System R. Исходное название языка SEQUEL (Structured English Query Language) только частично отражало суть этого языка. Конечно, язык был ориентирован главным образом на удобную и понятную пользователям формулировку запросов к реляционным БД. Но на самом деле он почти с самого начала являлся полным языком БД, обеспечивающим, помимо средств формулирования запросов и манипулирования БД, следующие возможности:

· средства определения и манипулирования схемой БД;

· средства определения ограничений целостности и триггеров;

· средства определения представлений БД;

· средства определения структур физического уровня, поддерживающих эффективное выполнение запросов;

· средства авторизации доступа к отношениям и их полям*;

· средства определения точек сохранения транзакции и выполнения фиксации и откатов транзакций.

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

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

Наиболее близкими к System R являлись две системы компании IBM – SQL/DS и DB2**. Разработчики обеих систем использовали опыт проекта System R, а СУБД SQL/DS напрямую основывалась на программном коде System R. Отсюда предельная близость диалектов SQL, реализованных в этих системах, к SQL System R. Из SQL System R были удалены только те части, которые были недостаточно проработаны (например, точки сохранения) или реализация которых вызывала слишком большие технические трудности (например, ограничения целостности и триггеры). Можно назвать этот путь к коммерческой реализации SQL движением сверху вниз.

Другой подход применялся в таких системах, как Oracle, Informix и Sybase. Несмотря на различие в способах разработки этих систем, реализация SQL везде происходила “снизу вверх”. В первых выпущенных на рынок версиях этих систем использовалось очень ограниченное подмножество SQL System R. В частности, в первой известной автору реализации SQL в СУБД Oracle в операторах выборки не допускалось использование вложенных подзапросов, и отсутствовала возможность формулировки запросов с соединениями нескольких отношений.

Тем не менее, несмотря на эти ограничения и на очень слабую, на первых порах, эффективность СУБД, ориентация компаний на поддержку разных аппаратных платформ и заинтересованность пользователей в переходе к реляционным системам позволили компаниям добиться коммерческого успеха и приступить к совершенствованию своих реализаций. В текущих версиях Oracle, Informix, Sybase и Microsoft SQL Server поддерживаются достаточно мощные диалекты SQL, хотя реализация иногда вызывает сомнения.*

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

Деятельность по стандартизации языка SQL началась практически одновременно с появлением его первых коммерческих реализаций. В 1982 г. комитету по базам данных Американского национального института стандартов (ANSI) было поручено разработать спецификацию стандартного языка реляционных баз данных. Первый документ из числа имеющихся у автора проектов стандарта датирован октябрем 1985 г. и является уже не первым проектом стандарта ANSI. Стандарт был принят ANSI в 1986 г., а в 1987 г. был одобрен Международной организацией по стандартизации (ISO). Принято называть этот стандарт SQL/86.

Понятно, что в качестве основы стандарта нельзя было использовать SQL System R. Во-первых, этот вариант языка не был должным образом технически проработан. Во-вторых, его слишком сложно было бы реализовать (кто знает, как бы сложилась дальнейшая история SQL, если бы в проекте System R были полностью реализованы все имевшиеся идеи). Поэтому за основу был взят диалект языка SQL, сложившийся в IBM к началу 1980-х. Грубо говоря, этот диалект представлял собой технически проработанное подмножество SQL System R.

К 1989 г. стандарт SQL/86 был несколько расширен, и был подготовлен и принят следующий стандарт, получивший название ANSI/ISO SQL/89. Анализ доступных документов показывает, что процесс стандартизации SQL происходил очень сложно с использованием далеко не только научных доводов. В результате SQL/89 во многих частях имеет чрезвычайно общий характер и допускает очень широкое толкование. В этом стандарте полностью отсутствуют такие важные разделы, как манипулирование схемой БД и динамический SQL. Многие важные аспекты языка в соответствии со стандартом определяются в реализации.*

Возможно, наиболее важными достижениями стандарта SQL/89 являются четкая стандартизация синтаксиса и семантики операторов выборки данных и манипулирования данными и фиксация средств ограничения целостности БД. Были специфицированы средства определения первичного и внешних ключей отношений и так называемых проверочных ограничений целостности, которые представляют собой подмножество немедленно проверяемых ограничений целостности SQL System R. Средства определения внешних ключей позволяют легко формулировать требования так называемой ссылочной целостности БД. Это распространенное в реляционных БД требование можно было сформулировать и на основе общего механизма ограничений целостности SQL System R, но формулировка на основе понятия внешнего ключа более проста и понятна.

Осознавая неполноту стандарта SQL, на фоне завершения разработки этого стандарта специалисты различных компаний начали работу над стандартом SQL2. Эта работа также длилась несколько лет, было выпущено множество проектов стандарта, пока, наконец, в марте 1992 г. не был принят окончательный проект стандарта (SQL/92). Этот стандарт существенно полнее стандарта SQL/89 и охватывает практически все аспекты, необходимые для реализации приложений: манипулирование схемой БД, управление транзакциями (появились точки сохранения) и сессиями (сессия – это последовательность транзакций, в пределах которой сохраняются временные отношения), подключения к БД, динамический SQL. Наконец, стандартизованы отношения-каталоги БД, что вообще-то не связано с языком непосредственно, но очень сильно влияет на реализацию.**

В 1995 г. стандарт был дополнен спецификацией интерфейса уровня вызова (Call-Level Interface – SQL/CLI). SQL/CLI представляет собой набор спецификаций интерфейсов процедур, вызовы которых позволяют выполнять динамически задаваемые операторы SQL. По сути дела, SQL/CLI представляет собой альтернативу динамическому SQL. Интерфейсы процедур определены на всех основных языков программирования: С, Ada, Pascal, PL/1 и т.д. Следует заметить, что стандарт SQL/CLI явился основой создания повсеместно распространенных сегодня интерфейсов ODBC (Open Database Connectivity) и JDBC (Java Database Connectivity).

В 1996 г. к стандарту SQL/92 был добавлен еще один компонент – SQL/PSM (Persistent Stored Modules). Основная цель этой спецификации состоит в том, чтобы стандартизовать способы определения и использования хранимых процедур, т.е. специальным образом оформленных программ, включающих операторы SQL, которые сохраняются в базе данных, могут вызываться приложениями и выполняются внутри СУБД.

Незадолго до завершения работ по определению стандарта SQL2 была начата разработка стандарта SQL3. Первоначально планировалось завершить проект в 1995 г. и включить в язык некоторые объектные возможности, определяемые пользователями типы данных, поддержку триггеров, поддержку темпоральных свойств данных и т.д. Реально работу над новым стандартом удалось частично завершить только в 1999 г., и по этой причине (а также в связи с проблемой 2000-го года) стандарт получил название SQL:1999.

Приведем краткую характеристику текущего состояния стандарта SQL:1999 и перспектив его развития. Прежде всего, заметим, что каждый новый вариант стандарта языка SQL становился существенно объемнее предыдущих версий. Так, если стандарт SQL/89 занимал около 600 страниц, то SQL/92 был более чем на 300 страниц объемнее. Самые первые проекты SQL3 занимали около 1500 страниц. Это вполне естественно, потому что язык усложняется, а его спецификации становятся более детальными и точными. Но разработчики SQL3 пришли к выводу, что при таких объемах стандарта шансы на его принятие и последующую успешную поддержку весьма уменьшаются. Поэтому было принято решение разбить стандарт на относительно независимые части, которые можно было бы разрабатывать и поддерживать по отдельности.

В 1999 г. были приняты пять первых частей стандарта SQL:1999. Первая часть (SQL/Framework)посвящена описанию концептуальной структуры стандарта. В этой части приводится развернутая аннотация следующих четырех частей, и формулируются требования к реализациям, претендующим на соответствие стандарту.

Вторая часть SQL:1999 (SQL/Foundation) образует базис стандарта. Вводится система типов языка, формулируются правила определения функциональных зависимостей и возможных ключей, определяются синтаксис и семантика основных операторов SQL:

· операторов определения и манипулирования схемой базы данных;

· операторов манипулирования данными;

· операторов управления транзакциями;

· операторов управления подключениями к базе данных и т.д.

Третью часть занимает уточненная по сравнению с SQL/92 спецификация SQL/CLI. В четвертой части специфицируется SQL/PSM – синтаксис и семантика языка определения хранимых процедур. Наконец, в пятой части – SQL/Bindings определяются правила связывания SQL для стандартных версий языков программирования FORTRAN, COBOL, PL/1, Pascal, Ada, C и MUMPS.

В стандарт SQL:1999 должны были войти еще несколько частей. Среди них спецификации следующих средств:

· управление распределенными транзакциями (SQL/Transaction);

· поддержка темпоральных свойств данных (SQL/Temporal);

· управление внешними данными (SQL/MED);

· связывание с объектно-ориентированными языками программирования (SQL/OLB);

· поддержки оперативной аналитической обработки (SQL/OLAP).

В конце 2003 г. был принят и опубликован новый вариант международного стандарта SQL:2003 [A.1]. Многие специалисты считали, что в варианте стандарта, следующем за SQL:1999, будут всего лишь исправлены неточности SQL:1999. Но на самом деле, в SQL:2003 специфицирован ряд новых и важных свойств, некоторые из которых мы затронем в этом курсе.

Претерпела некоторые изменения общая организация стандарта. Стандарт SQL:2003 состоит из следующих частей:

Части 1-4 и 9-10 с необходимыми изменениями остались такими же, как и в SQL:1999 (см. разд. 7.4). Часть 5 (SQL/Bindings) больше не существует; соответствующие спецификации включены в часть 2. Раздел части 2 SQL:1999, посвященный информационной схеме, выделен в отдельную часть 11. Появились две новые части – 13 и 14. Часть 13 полностью называется “SQL Routines and Types Using the Java Programming Language” (“Использование подпрограмм и типов SQL в языке программирования Java”). Появление такой отдельной части стандарта оправдано повышенным вниманием к языку Java со стороны ведущих производителей SQL-ориентированных СУБД. Наконец, последняя часть SQL:2003 посвящена спецификациями языковых средств, позволяющих работать с XML-документами в среде SQL.

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

Дата добавления: 2014-01-03 ; Просмотров: 941 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

SQL – Язык программирования БД

Главное меню » Базы данных » SQL – Язык программирования БД

SQL (Structured Query Language — Структурированный язык запросов) — язык управления базами данных для реляционных баз данных. Сам по для себя SQL не считается Тьюринг-полным языком программирования, но его стереотип позволяет делать для него процедурные расширения, которые расширяют его работоспособность до полновесного языка программирования.

Язык был сотворен в 1970х годах под заглавием “SEQUEL” для системы управления базами данных (СУБД) System R. Позже он был переименован в “SQL” во избежание инцендента торговых марок. В 1979 году SQL был в первый раз размещен в облике платного продукта Oracle V2.

1-ый официальный стереотип языка был принят ANSI в 1986 году и ISO — в 1987. С тех времен были сделаны ещё некоторое количество версий эталона, кое-какие из их повторяли прошлые с малозначительными вариантами, иные воспринимали свежие немаловажные черты.

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

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

SQL произведено из четырех отдельных частей:

  • язык определения данных (DDL) применяется для определения структур данных, хранящихся в основе данных. Операторы DDL дают возможность делать, менять и удалять отдельные объекты в БД. Допускаемые типы объектов находятся в зависимости от применяемой СУБД и как правило включают базы данных, юзеров, таблицы и ряд больше маленьких запасных объектов, к примеру, роли и индексы.
  • язык манипуляции данными (DML) применяется для извлечения и конфигурации данных в БД. Операторы DML дают возможность извлекать, вставлять, менять и удалять данные в таблицах. Временами операторы select извлечения данных не рассматриваются как часть DML, потому что они не изменяют положение данных. Все операторы DML одевают декларативный нрав.
  • язык определения доступа к сведениям (DCL) применяется для контроля доступа к сведениям в БД. Операторы DCL используются к привилегиям и дают возможность выдавать и отнимать права на использование конкретных операторов DDL и DML к конкретным объектам БД.
  • язык управления транзакциями (TCL) применяется для контроля обработки транзакций в БД. Как правило операторы TCL включают commit для доказательства перемен, изготовленных в ходе транзакции, rollback для их отмены и savepoint для разбиения транзакции на некоторое количество наименьших частей.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

SQL-Урок 1. Язык SQL. Основные понятия.

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

1. Что такое База Данных

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

2. Что такое SQL

Итак, переходим к SQL.

SQL — простой язык программирования, который имеет немного команд и которой может научиться любой желающий. Расшифровывается как Structured Query Language — язык структурированных запросов, который был разработан для работы с БД, а именно, чтобы получать /добавлять /изменять данные, иметь возможность обрабатывать большие массивы информации и быстро получать структурированную и сгруппированную информацию. Есть много вариантов языка SQL, но у них всех основные команды почти одинаковы. Также существует и много СУБД, но основными из них являются: Microsoft Access, Microsoft SQL Server, MySQL, Oracle SQL, IBM DB2 SQL, PostgreSQL та Sybase Adaptive Server SQL. Чтобы работать с SQL кодом, нам понадобится одна из вышеперечисленных СУБД. Для обучения мы будем использовать СУБД Microsoft Access .

SQL как и другие языки программирования имеет свои команды (операторы), с помощью которых отдаются инструкции для выборки данных. Чтобы рассмотреть как работают операторы SQL, мы будем использовать мнимую БД с информацией о реализованной продукции:

Илон Маск рекомендует:  Свойство transition
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL