SQL (StructuredQueryLanguage) - Структурированный Язык Запросов. - стандартный язык запросов по работе с реляционными БД.
Первый международный стандарт языка SQL был принят в 1989 г. (далее мы будем называть его SQL/89 или SQL1). Иногда стандпрт SQL1 также называют стандартом ANSI/ISO и подавляющее большинство доступных на рынке СУБД поддерживают этот стандарт полностью.
В конце 1992 г. был принят новый международный стандарт языка SQL (который в дальнейшем будем называть SQL/92 или SQL2). И он не лишен недостатков, но в то же время является существенно более точным и полным, чем SQL/89. В настоящий момент большинство производителей СУБД вносят изменения в свои продукты так, чтобы они в большей степени удовлетворяли стандарту SQL2.
Последний стандарт по языку SQL был выпущен в 1996 г. Он назван SQL3.
SQL нельзя в полной мере отнести к традиционным языкам программирования: он не содержит традиционные операторы управления ходом выполнения программы, операторы описания типов и многое другое, он содержит только набор стандартных операторов доступа к данным, хранящимся в базе данных. Операторы SQL встраиваются в базовый язык программирования, которым может быть любой стандартный язык типа C++, PL, COBOL и т.д. Кроме того, операторы SQL могут выполняться непосредственно в интерактивном режиме.
1. Структура SQL.
SQL содержит следующие разделы:
1. Операторы определения данных DDL (Data definition language).
Оператор |
Смысл |
Действие |
CREATE TABLE |
Создать таблицу |
Создает новую таблицу в БД |
DROP TABLE |
Удалить таблицу |
Удаляет таблицу из БД |
ALTER TABLE |
Изменить таблицу |
Изменяет структуру существующей таблицы |
CREATE VIEW |
Создать представление |
Создает виртуальную таблицу, т.е. таблицу, которая на самом деле не существует, но моделируется с использованием этого оператора. |
ALTER VIEW |
Изменить представление |
Изменяет структуру или содержание виртуальной таблицы |
DROP VIEW |
Удалить представление |
Удаляет описание виртуальной таблицы. Саму таблицу удалять не надо,т.к. она на самом деле и не существует. |
CREATE INDEX |
Создать индекс |
Создает специальную физическую структуру, называемую индексом, которая обеспечивает ускорение доступа к данным |
DROP INDEX |
Удалить индекс |
Удаляет созданную структуру |
CREATE SYNONYM |
Создать синоним |
|
DROP SYNONYM |
Удалить синоним |
|
2. Операторы манипулирования данными Data Manipulation Language (DML)
DELETE |
удалить строки |
Удаляет строки из таблицы |
INSERT |
вставить строку |
Вставляет строку в таблицу |
UPDATE |
обновить строку |
Изменяет данные в строках таблицы |
3. Язык запросов Data Query Language (DQL)
SELECT |
Выбрать строки |
Выбирает строки из одной или нескольких таблиц по заданному критерию отбора и формирует в качестве результата новую виртуальную таблицу |
4. Средства управления транзакциями
COMMIT |
Завершить транзакцию |
Сохраняет все изменения в БД и делает невозможным откат транзакции и возвращение к старому состоянию БД. |
ROLLBACK |
откатить транзакцию |
Отменяет все изменения, сделанные в базе данных и возвращает БД в исходное состояние |
SAVEPOINT |
Сохранить промежуточную точку выполнения транзакции |
Дает возможность вернуться к изменениям, сделанным до точки сохранения, протгнорировав все изменения, сделанные после точки сохранения танзакции. |
5. Средства администрирования данных
ALTER DATABASE |
Изменить БД |
|
ALTER DBAREA |
Изменить область хранения БД |
|
ALTER PASSWORD |
Изменить пароль |
|
CREATE DATABASE |
Создать БД |
|
CREATE DBAREA |
Создать область хранения |
|
DROP DATABASE |
Удалить БД |
|
DROP DBAREA |
Удалить область размещения базы данных |
|
GRANT |
Предоставить права доступа |
|
REVOKE |
Лишить прав доступа |
Программный SQL
DECLARE CURSOR |
Определяет курсор для запроса |
|
OPEN |
Открыть курсор |
|
FETCH |
Считать строку из множества строк, определенных курсором |
|
CLOSE |
Закрыть курсор |
|
PREPARE |
Подготовить оператор SQL к динамическому выполнению |
|
EXECUTE |
Выполнить динамический оператор |
2. Типы данных
В языке SQL/89 поддерживаются следующие типы данных: CHARACTER, NUMERIC, DECIMAL, INTEGER, SMALLINT, FLOAT, REAL, DOUBLE PRECISION. Эти типы данных классифицируются на типы строк символов, точных чисел и приблизительных чисел.
В стандарте SQL92 добавлены следующие типы данных:
VARCHAR(n) - строки символов переменной длины
NCHAR(N) – строки локализованных символов постоянной длины
NCHAR VARYING(n) - строки локализованных символов переменной длины
BIT(n) - строка битов постоянной длины
BIT VARYING(n) - строка битов переменной длины
DATE календарная дата
TIMESTAMP(точность) дата и время
INTERVAL временной интервал
3. Оператор выбора SELECT
Select - единственный оператор поиска, который заменяет все операции реляционной алгебры.
Синтаксическая диаграмма опертора SELECT изображена на рис.1
Здесь ключевое слово ALL означает, что в результирующий набор строк включаются все строки удовлетворяющие условим запроса. Ключевое слово DISTINCT означает, что в результирующий набор включаются только различные строки, т.е. дубликаты строк результата не включаются в набор. Если не стоит никакое ключевое слово, то такая ситуация интерпретируется как наличие ключевого слова ALL.
Символ * означает, что в результирующий набор включаются все столбцы из исходных таблиц запроса.
В части FROM задается перечень исходных отношений (таблиц) запроса.
В части WHERE задаются условия отбора срок результата или условия соединиения кортежей исходных таблиц.
В частиGROUP BY задается список полей группировки.
В части HAVING задаются предикаты-условия, накладываемые на каждую группу.
В части ORDER BY задается список полей упорядочения результата.
В выражении условий для части WHERE могут быть использованы следующие предикаты:
· предикат сравнения с образцом LIKE и NOT LIKE
· предикат EXIST и NOT EXIST.
· предикаты сравнения { =, <>, >,<,>=,<=,}. Синтаксическая диаграмма предикатов сравнения представлена на рис.2
· предикат Between - принимает значение между а1 и а2 включительно.
· предикат Not Between - не принимает значение между а1 и а2
Здесь в качестве проверяемого выражения может выступать имя атрибута одного из исходных отношений (имя столбца исходной таблицы) или выражение, в котором используется имена атрибутов исходных отношений.
·
Предикат IN истинен тогда, когда значение атрибута, заданного
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.