Язык SQL
SQL (произносится “SEQUEL”)- структурированный язык запросов (Structured Query Language).
Базы данных имеют тенденцию к постоянной интеграции, что привело к необходимости разработки стандартного языка запросов, пригодного для использования на множестве компьютерных платформ.
Прообраз SQL возник в 1970 году в одной из лабораторий IBM (Санта-Тереза (проект System/R)) как средство запроса к реляционной БД. На настоящее время SQL стал фактически стандартом и его популярность настолько велика, что разработчики не реляционных СУБД (например, Adobes), снабжают свои системы SQL- интерфейсом.
Кроме de facto SQL имеет официальный стандарт ANCI / ISO (American National Standarts Institute / International Standarts Organization), что выводит его в ранг международного стандарта.
Настоящая тенденция заключается в том, что многие реальные СУБД расширяют возможности за рамки ANCI и тогда «хорошие» черты вновь становятся «рыночным» стандартом и повторяются другими.
SQL изначально не являлся языком программирования, поскольку на нем пишутся не программы, а запросы к БД. Т.е. SQL- декларативный язык. Это означает, что с его помощью можно сформулировать ЧТО необходимо получить, но нельзя указать КАК это сделать. Операторы типа if, for, do, while и т.п. – отсутствуют.
Для получения общих представлений об SQL рассмотрим ряд простых примеров и синтаксис необходимый для их понимания.
Запрос на языке SQL состоит из одной или нескольких команд SQL, следующих одна за другой и разделенных точкой с запятой. Наиболее важные команды:
SELECT | Выбрать | Вбрать данные из БД |
INSERT | Добавить | Добавить данные в БД |
UPDATE | Обновить | Обновить данные в БД |
DELETE | Удалить | Удалить данные из БД |
GRANT | Разрешить | Предоставить привилегию пользователю |
REVOKE | Отменить | Отменить привилегию пользователя |
COMMIT | ЗАФИКСИРОВАТЬ | Зафиксировать текущую транзакцию |
ROLLBACK | ПРЕРВАТЬ | Прервать текущую транзакцию |
В командах участвуют имена, идентифицирующие объекты БД. Например, имя таблицы (Деталь), имя столбца (Название). Имена могут быть сложными, в которых перед именем столбца, через разделитель ‘.’ следует имя таблицы (Деталь. Все).
Пример 1
Запрос: «определить количество деталей на складе, для всех типов деталей»
SELECT Название, Количество FROM Деталь;
(Выбрать) (Из).
Результат: таблица со столбцами:
Название | Количество |
… | … |
Это вертикальная проекция.
Пример 2
Запрос: «какие детали, из стали, хранятся на складе?»
SELECT* FROM Деталь WHERE Материал = «Сталь»;
(где)
Результат- таблица, но содержащая только те строки из исходной таблицы, которые в столбце (поле) «Материал» имеют «Сталь». Это горизонтальная проекция, поскольку * означает выбор из всех столбцов.
Пример 3
Запрос: «определить название и количество деталей на складе, изготовленных из пластмассы и весящих меньше 5 кг».
SELECT Название, Количество FROM Деталь
WHERE Материал = «Пластмасса»
AND Вес < 5;
Результат- таблица из 2 столбцов «Название» и «Количество». Сначала- горизонтальная проекция, затем- вертикальная.
Пример 4
SELECT Название, Количество, Материал
FROM Деталь
WHERE Номер = «Т145-А8»;
Если в таблице «Деталь» не существует индекса по полю «Номер», то запрос будет выполняться долго из-за прямого перебора.
Индекс можно создать командой CREATE INDEX
CREATE UNIQUE INDEX Индекс детали
ON Деталь (Номер);
Создается индекс с именем «Индекс детали» по столбцу «Номер» таблицы «Деталь».
Чаще всего для пользователя СУБД представляют интерес не отдельные команды SQL (иногда используется термин для всей строки; до ‘;’- Statement (продолжение, фраза)), а некоторая их последовательность. Каждая такая последовательность Statements реализует некую законченную операцию в терминах предметной области. Например, банковскую операцию (перевод некоторой суммы с краткосрочного счета на долгосрочный в несколько шагов (снятие со счета, зачисление на счет)).
Если в процессе выполнения этой многошаговой операции произойдет сбой, когда первая часть (снятие) будет выполнена, а вторая- нет, то деньги будут потеряны. Следовательно, любое многошаговое действие над БД должно быть выполнено целиком, или не выполняться вовсе. Такое действие получило название транзакция.
Обработка транзакций опирается на журнал транзакций. В него заносится информация о каждой транзакции и она используется для ОТКАТА транзакций и восстановления состояния БД.
Дата добавления: 2015-08-08; просмотров: 572;