Стандартные команды
Язык доступа к данным SQL
Язык SQL – это язык структурированных запросов к реляционным базам данных. В 1974-1975 г.г. Коддом – работником компании IBM – начата теоретическая разработка реляционной базы данных. В рамках проекта System/R в компании IBM был спроектирован, а затем создан первый прототип реляционной базы данных. Тогда же был разработан язык доступа к данным, получивший название SEQUEL (Structured English Query Language).
Вторая реализация проекта была предложена для опытной эксплуатации в 1978-1979 г.г. Здесь язык доступа уже имел другое название - SQL.
В 1982 году компания IBM начала поставку на рынок коммерческого продукта SQL/Data System. А в 1983 году IBM выпустила новую реляционную СУБД Database 2 (DB2). Язык SQL, предложенный IBM, стал неофициальным стандартом.
Опубликование в 1986 году стандарта SQL (ANSI / ISO) официально утвердило SQL. Тем не менее, при одном названии существуют значительные различия в реализациях этого языка в разных СУБД, с чем приходится мириться. Происходит это потому, что, во-первых, язык развивается, а, во-вторых, разработчики пытаются внести в язык конструкции, позволяющие расширить функциональность и/или повысить производительность системы.
В настоящее время название языка (как языка запросов на получение данных) уже не совсем отвечает его возможностям. Сейчас SQL позволяет реализовать все функции СУБД: организацию данных (создание баз, таблиц и т.п.), извлечение данных (собственно, запросы, хотя и весьма сложные), модификацию данных (изменение значений, добавление, удаление), управление доступом (запреты и разрешения для разных пользователей), совместное использование данных (блокировки, обновления, транзакции), обеспечение целостности данных (каскадные удаления и т.п.).
В стандарте ANSI SQL имеется 6 основных типов команд:
1. Команды языка определения данных
data definition language DDL
create table – создать таблицу
alter table – изменить таблицу
drop table – удалить таблицу
create index – создать индекс
alter index – изменить индекс
drop index – удалить индекс
2. Команды языка обработки данных
Data manipulation language DML
insert – вставка записей с таблицу
update – обновить данные на сервере
delete – удалить строки таблицы
3. Команды языка запросов данных
data query language DQL
select – выполнить запрос на выборку из таблиц
4. Команды языка управления данными
data control language DCL
grant – предоставить привилегии
revoke – отменить привилегии
5. Команды языка обработки транзакций
transaction processing language TPL
begin transaction – начать транзакцию
comit transaction – завершить транзакцию
save transaction – создать точку сохранения внутри транзакции
6. Команды языка управления курсором
cursor control language CCL
declare cursor
fetch into
update where current
В MS SQL Jet не поддерживаются команды CCL и DCL.
В дальнейшем будем считать, что у нас есть база данных MS Access, в которой содержатся следующие таблицы:
Автор – поля: Код, Имя, Телефон, Адрес
Книга – поля: Код, Название, Автор, Жанр, Объем
Издание – поля: Книга, Год, Тираж
В таблицах «Автор» и «Книга» есть поле Код, необходимое для реализации связей. В таблице «Книга» поле «Автор» содержит значение поля «Код» таблицы «Автор», указывая таким образом из записи таблицы «Книга» на конкретную запись таблицы «Автор», устанавливая между ними связь.
В таблице «Издание» есть поле «Книга», реализующее связь с таблицей «Книга».