Основные составляющие языка SQL.
1.1. Команды определения данных:
– CREATE SCHEME – создать базу данных (определён в стандарте SQL. Для аналогичных целей в некоторых СУБД имеется оператор CREATE DATABASE).
– CREATE TABLE – создание таблицы базы данных. Таблица определяется путем задания содержащихся в ней столбцов. Все значения в столбце имеют один и тот же тип данных. При описании таблиц могут задаваться ограничения целостности данных.
– CREATE DOMAIN – создание домена (объявление пользовательского типа данных, включает определение типа данных, ограничение и значение по умолчанию). Домен имеет смысл создавать, когда определенный с его помощью тип данных используется в создаваемой базе данных многократно. При описании таблицы для соответствующих полей вместо типа данных будет указываться имя домена.
– CREATE VIEW – создание виртуальной таблицы (представления, обзора). Представление - это виртуальная таблица, данные для которой получаются из базовых таблиц или других представлений. Представление может быть получено из одной таблицы или нескольких, может включать в себя вычисляемые поля. Представление можно рассматривать как хранимый запрос (оно и выражается с помощью запроса). Представление может использоваться в запросах наряду с реальными таблицами. Упрощает создание сложных запросов, используется для обеспечения защиты и ускорения работы с БД. В результате, в БД хранится не сама табличная информация, а лишь способ ее оперативного получения. Использование представлений позволяет скрыть от пользователя излишние для него детали организации БД, реализовать дополнительные возможности контроля доступа к данным, минимизировать объем передаваемой и обрабатываемой информации.
– CREATE CURSOR – создание навигационной таблицы (курсора).
К этой группе также относятся операторы изменения и уничтожения описаний, операторы работы с описаниями вспомогательных объектов БД.
1.2. Команды удаления (DROP) и изменения (ALTER) объектов.
Например, таблицы могут быть удалены с помощью оператора DROP TABLE, а структуру существующей таблицы можно изменять с помощью оператора ALTER TABLE.
2. Методы и средства контроля целостности в основном реализованы в CREATE TABLE:
Имеющиеся в языке возможности позволяют задать в описаниях данных следующие свойства:
– NOT NULL – обязательность.
– UNIQUE – уникальность.
– DEFAULT – значение по умолчанию.
– CHECK – условие ограничения.
– PRIMARY KEY, FOREIGN KEY – поддержка связей.
– ON UPDATE, ON DELETE – триггеры по умолчанию.
Связь осуществляется за счет указания соответствия первичных и внешних ключей FK=PK, отсутствие связи – указанием FK=NULL, при нарушении ссылочной целостности FK=прочее. Возможные реакции триггера задают, что делать с внешним ключом, если произошло нарушение ссылки:
1) CASCADE – если при выполнении действия (удаления, изменения) – выполняем то же действие и с подчиненной.
2) SET NULL – если при выполнении указанной операции произошел разрыв связи, то мы значение внешнего ключа очищаем.
3) SET DEFAULT – если при выполнении указанной операции произошел разрыв связи, то мы значение внешнего ключа меняем на значение по умолчанию.
4) NO ACTION – ничего не делать, во многих системах заменено на RESTRICT.
3. Операторы модификации данных:
– INSERT – добавление данных,
– UPDATE – обновление данных,
– DELETE – удаления данных.
4. Выборка:
– SELECT. Оператор состоит из предложений SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, которые должны быть записаны в команде именно в той последовательности, в которой они перечислены в синтаксической формуле.
5. Управление доступом:
– GRANT – назначение прав доступа.
Предположим, пользователь является владельцем таблицы «Sotrudnik» и хочет позволить пользователю Ivanov выполнять запросы к ней. В этом случае пользователь должен ввести команду
GRANT SELECT ON Sotrudnik TO Ivanov;
– REVOKE – удаление прав доступа.
Команда имеет синтаксис, схожий с синтаксисом оператора GRANT. Например, отмена привилегии на просмотр таблицы «Sotrudnik» для пользователя Ivanov будет выглядеть следующим образом:
REVOKE SELECT ON Sotrudnik TO Ivanov;
6. Управление транзакциями:
Транзакция представляет собой законченную совокупность действий над БД, которая переводит ее из одного целостного в логическом смысле состояния в другое.
– SET TRANSACTION – задает параметры транзакции, объявляет её начало.
– COMMIT – нормальное завершение, завершение транзакции с фиксацией всех результатов.
– ROLLBACK – завершение транзакций с отменой всех выполненных изменений.
Конкретные СУБД используют различные механизмы управления транзакциями. Некоторые СУБД для задания транзакции используют операторы BEGIN TRANSACTION-END TRANSACTION, и все команды, заключенные между ними, составляют транзакцию. В некоторых системах считается, что, инициируя сеанс работы с SQL, пользователь начинает транзакцию, которая будет продолжаться, пока не будет введен оператор COMMIT WORK, который сделает все изменения, проведенные в ходе транзакции, постоянными, или оператор ROLLBACK WORK, который отменяет все сделанные в транзакции изменения. После каждого оператора COMMIT или ROLLBACK начинается новая транзакция.
Во многих СУБД присутствует специальный параметр AUTO-COMMIT, который, находясь во включенном состоянии, приводит к автоматической фиксации изменений каждой нормально завершенной операции.
Транзакция может быть помечена как «только чтение» (READ ONLY). При выполнении такой транзакции попытка провести изменение данных будет вызывать сообщение об ошибке. Задание признака READ ONLY позволяет увеличить производительность как этой, так и параллельно исполняемых транзакций.
Транзакции должны соответствовать требованиям ACID (Atomicity, Consistency, Isolation, Durability – Атомарность, Согласованность, Изолированность, Долговечность):
Атомарность: транзакция представляет собой некоторый набор законченных действий. Система обеспечивает их выполнение по принципу «все или ничего» - либо выполняются все действия, тогда транзакция «фиксируется»; либо, если возможность выполнить все действия отсутствует, например в случае сбоев, транзакция «откатывается» назад, а БД остается в исходном состоянии.
Согласованность: предполагается, что в результате выполнения транзакции система переходит из одного корректного состояния в другое.
Изолированность: при выполнении транзакции данные могут временно находиться в несогласованном состоянии. Такие данные не должны быть видны другим транзакциям, пока изменения не будут завершены (т.е. пока все модификации не будут формально зафиксированы). Система обеспечивает каждой транзакции иллюзию того, что та выполняется изолированно, как если бы прочие транзакции либо завершились до ее начала, либо начнут выполняться после ее завершения.
Долговечность: если транзакция зафиксирована, то ее результаты должны быть долговечными. Новые состояния всех объектов сохранятся даже в случае аппаратных или системных сбоев.
Существуют многочисленные модели транзакций, обеспечивающие соблюдение требований ACID. Некоторые из этих моделей:
- плоские транзакции;
- контрольные точки;
- многозвенные транзакции;
- вложенные транзакции.
Использование языка SQL:
В целом, язык SQL не является самодостаточным для создания приложений БД и их полномасштабного обслуживания. Поэтому разработчикам приложений предоставляется различные формы соединения языка SQL с другими (внешними) языками.
В персональных системах язык используется как часть основного языка.
В серверных системах он используется в следующих вариантах:
1) как вспомогательный язык приложения для обращения к СУБД.
2) как средство интерактивных запросов.
3) как средство написания программного кода для серверной части.
Для объединения SQL с базовым языком приложения используются следующие методы:
1. Локальный SQL.
Операторы SQL включаются во внешний язык наравне с прочими операторами и обрабатываются расширенным транслятором внешнего языка как его «родные» операторы. Таким образом, имеет место расширение исходного языка на группу операторов SQL с соответствующим расширением транслятора. Этот вариант характерен для персональных СУБД.
2. Встроенный SQL.
В текст программы на внешнем языке операторы SQL включаются с явным их выделением. Например, встраивание операторов SQL в текст С-программы выполняется в виде:
EXEC SQL
<SQL-оператор>
END SQL
При обработке пакета программы предварительно выполняется программа предтранслятор, которая преобразует SQL-вставки в эквивалентные конструкции внешнего языка, после чего выполняется трансляция с помощью стандартного транслятора внешнего языка. Обмен данными между SQL-вставками и основным кодом программы производится через явно указываемый набор переменных связи.
3. Модульный SQL.
Операторы SQL размещаются в модулях-подпрограммах, обращение к которым осуществляется по стандартным правилам базового языка. В модульном SQL обмен выполняется через входные и выходные параметры процедур.
4. Динамический SQL – поддерживает ввод, трансляцию и исполнение SQL команд в ходе выполнения программы. Операторы SQL определяются не на момент создания пакета программы, а на момент ее исполнения. Таким образом, трансляция SQL-операторов откладывается на время выполнения программы, что позволяет реализовывать заранее непредвиденные запросы. Для подготовки исполнения используется команда PREPARE, для исполнения EXECUTE.
11. Создание БД в SQL
Для первичного создания БД требуемая последовательность операторов SQL обычно оформляется в виде скрипта. Исполнение скрипта приводит к получению пустой БД требуемой структуры.
В стандарте SQL-92 определяются следующие виды объектов, которые могут быть созданы в БД:
· Table - таблица;
· View - представление;
· Schema ~ схема;
· Domain - домен;
· Assertion - утверждение;
· Character set - набор символов;
· Collation - последовательность сортировки;
· Translation - преобразование одного набора символов в другой.
Ниже будут рассмотрены вопросы создания таблиц и доменов. Последовательность шагов создания БД может быть, например, следующей:
Дата добавления: 2016-12-27; просмотров: 2050;