Стандартные команды

Язык доступа к данным 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, в которой содержатся следующие таблицы:

Автор – поля: Код, Имя, Телефон, Адрес

Книга – поля: Код, Название, Автор, Жанр, Объем

Издание – поля: Книга, Год, Тираж

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

В таблице «Издание» есть поле «Книга», реализующее связь с таблицей «Книга».