В основе структурированного языка запросов SQL лежит реляционное исчисление кортежей.
Общая характеристика языка запросов SQL
SQL может выполнять операции над таблицами и над данными таблиц.
Язык SQL называют встроенным, т.к. он содержит функций полноценного языка разработки, а ориентируется на доступ к данным, вследствие чего он входит в состав средств разработки приложений. Стандарты языка SQL поддерживают языки программирования Pascal, Fortran, COBOL, С и др.
Существует 2 метода использования встроенного SQL:
- статическое использование языка (статический SQL) – в тексте программы содержатся вызовы функций SQL, которые включают в исполняемый модуль после компиляции.
- динамическое использование языка (динамический SQL) – динамическое построение вызовов функций SQL и их интерпретация. Например, можно обратиться к данным удаленной БД в процессе выполнения программы.
Язык SQL (как и другие языки для работы с БД) предназначен для подготовки и выполнения запросов. В результате выполнения запроса данных из одной или нескольких таблиц получают множество записей, которое называют представлением.
Представление – это таблица, которая формируется в результате выполнения запроса.
Основные операторы языка запросов SQL
Операторы языка SQL условно разделяются на 2 подъязыка:
- Язык определения данных DDL;
- Язык манипулирования данными DML.
В таблице символом * помечены специфические операторы языка.
Рассмотрим важнейшие операторы SQL.
-
Оператор создания таблицы:
Имя таблицы, которая создается, и имя хотя бы одного столбца (поля) являются обязательными операндами. Для имени столбца необходимо указать тип данных, которые будут в нем храниться.
Для отдельных полей можно указывать дополнительные правила контроля значений, которые в них вводятся. Например, NOT NULL обозначает, что поле не может быть пустым и в него должно быть введено значение.
Пример 1Для создания таблицы books каталога книг, которая содержит поля:
type – тип книги,
author – автор книги,
name – название книги,
price – цена книги
оператор может выглядеть следующим образом:
-
Оператор изменения структуры таблицы:
При изменении структуры таблицы можно добавлять (ADD), изменять (MODIFY) или удалять (DROP) один или несколько столбцов таблицы. Правила записи данного оператора такие же, как и для оператора CREATE TABLE. Чтобы удалить столбец указывать не нужно.
Пример 2Для добавления к таблице books поля number, в котором будет храниться количество книг, можно записать оператор:
-
Оператор удаления таблицы:
Пример 3Например, чтобы удалить существующую таблицу с именем books достаточно воспользоваться оператором:
-
Оператор создания индекса:
Оператор создает индекс для одного или нескольких столбцов данной таблицы, который позволяет ускорить выполнение операций запроса и поиска. Для одной таблицы может быть создано несколько индексов.
Необязательная опция UNIQUE отвечает за обеспечение уникальности значений во всех столбцах, которые указаны в операторе.
ASC задает автоматическую сортировку значений в столбцах в порядке возрастания (по умолчанию), а DESC – в порядке убывания.
-
Оператор удаления индекса:
-
Оператор создания представления:
При создании представления можно не указывать имена столбцов. Тогда будут использованы имена столбцов из запроса, который описывается соответствующим оператором SELECT.
-
Оператор удаления представления:
-
Оператор выборки записей:
Оператор SELECT производит выборку и вычисления над данными из одной или нескольких таблиц. Результат выполнения оператора – ответная таблица, которая содержит (ALL) или не содержит (DISTINCT) строки, которые повторяются.
Операнд FROM содержит список таблиц, из которых берутся записи для отбора данных.
-
Оператор изменения записей:
Новые значения полей в записях могут не содержать значений (NULL) или вычисляться согласно арифметическому выражению.
-
Оператор вставки новых записей:
В первой записи оператора INSERT вводятся новые записи с заданными значениями в столбцах.
Во втором записи оператора INSERT вводятся новые строки, отобранные из другой таблицы через предложение SELECT.
-
Оператор удаления записей:
В результате выполнения оператора удаляются из указанной таблицы строки, удовлетворяющие условию, которое определено необязательным операндом WHERE. Если операнд WHERE не указан, то удаляются все записи таблицы.