История языка SQL
Для управления данными в реляционных СУБД используется язык высокого уровня SQL (Structured Query Language - структурированный язык запросов). SQL был разработан в конце 70-х компанией IBM. В 1989 году международная организация по стандартизации ISO официально приняла международной стандарт языка. В 1992 году ISO обновила этот стандарт. И на сегодняшний день все реляционные СУБД, существующие в мире, поддерживают стандарт SQL 92 года. Нужно заметить, что в разных СУБД имеются некоторые отличия в синтаксисе языка, поэтому можно говорить о «диалектах» SQL для разных СУБД. Но общие принципы и базовые операторы во всех диалектах совпадают.
Основные структуры языка SQL
Основной структурой представления и хранения данных в реляционных СУБД является двумерная таблица. Обычно таблица соответствует отдельной сущности предметной области. Строка таблицы называется записью. Столбец таблицы называется полем.
Таблица должна обладать следующими свойствами:
- Иметь уникальное для рассматриваемой базы данных имя. Таблица с таким же именем может существовать при условии, что она относится к другой базе данных, которая находится под управлением этой же СУБД.
- Иметь конечное и постоянное число полей. Иногда бывают ситуации, когда нужно добавить новые поля или удалить имеющиеся. Но в этом случае речь идет уже об изменении структуры таблицы по причине изменений в предметной области. Это происходит не часто.
- Иметь конечное число записей. Возможно, что это число равно нулю.
- Поля таблицы имеют уникальные в рамках данной таблицы имена. В другой таблице могут присутствовать поля с такими же именами.
- Все значения, которые находятся в одном поле, должны иметь одинаковый тип данных. Например, для поля с именем «ДатаРождения» логично выбрать тип данных «Date». Данный столбец должен содержать исключительно даты и ничего другого.
- Записи не имеют какой-либо специальной упорядоченности и идентифицируются только своим содержимым.
- Значение поля таблицы может быть пустым. В этом случае считается, что оно содержит специальное значение NULL.
На данные, хранящиеся в таблицах допустимо накладывать следующие ограничения:
-
Требование уникальности значений определенного поля или группы полей для каждой записи.
Пример 1Например, если в таблице есть поле, содержащее идентификационный номер налогоплательщика (ИНН), то его следует объявлять уникальным. В этом случае СУБД сама будет сообщать об ошибке при попытке ввести два одинаковых ИНН. Если же в таблице есть два поля «СерияПаспорта» и «НомерПаспорта», то следует объявить уникальными их сочетание. Потому что существует много одинаковых серий и одинаковых номеров паспортов, но сочетание серии и номер всегда уникально.
-
Требование запретить для какого-либо поля иметь значение NULL.
Операции над таблицами
В реляционной модели принято четыре основных операции над таблицами:
- Проекция;
- Ограничение;
- Объединение;
- Подмножество декартова произведения.
Все другие операции получаются путем комбинации четырех базовых.
Проекция таблицы – построение из данной таблицы новой таблицы путем выбора лишь некоторых полей.
Исходная таблица:
языка SQL. Автор24 — интернет-биржа заказчиков и авторов">
Проекция исходной таблицы:
Ограничение – построение из данной таблицы новой таблицы путем выбора записей удовлетворяющих определенному условию.
Выберем из исходной таблицы примера 1 всех, кто имеет должность «лаборант». В результате получится новая таблица:
Объединение – построение из двух таблиц с одинаковой структурой одной таблицы, включающей все записи обеих исходных.
Пусть имеется две таблицы с одинаковой структурой
В результате объединения получится таблица 3:
Подмножество декартова произведения – построение новой таблицы из двух исходных таблиц путем слияния определенных строк исходных таблиц
Пусть имеется две таблицы:
Тогда подмножеством декартова произведения будет таблица, в которой к строкам таблицы 1 добавлен оклад из таблицы 2 в соответствии с должностью: