Группы операторов. Типы данных
Раздел 3. Основы языка SQL
Лекция 19. Группы операторов. Типы данных
Язык реляционных БД SQL был разработан в середине 70-х годов в рамках исследовательского проекта экспериментальной реляционной СУБД System R от компании IBM. Данный проект включал в себя разработку реляционной СУБД и языка SEQUEL (Structured English Query Language). Данное название только частично отражало суть языка. Язык был ориентирован главным образом на удобную и понятную пользователям формулировку запросов к реляционной БД, фактически он уже являлся полноценным языком реляционной БД и содержал помимо операторов формулирования запросов и манипулирования БД, следующие средства:
· определения схемы БД и манипулирования ей;
· определения ограничений целостности и триггеров;
· создания представлений БД;
· определения структур физического уровня, поддерживающих эффективное выполнение запросов;
Рекомендуемые материалы
· автоматизации доступа к таблицам и их полям;
· поддержки точек сохранения транзакции и откатов.
В конце 70-х годов корпорацией Oracle был выпущен модифицированный вариант языка SEQUEL, получивший название SQL. В 1983 г. компания IBM выпустила SQL в составе СУБД DB2.
Язык SQL был настолько удачен, что несколько позже, в 1986 г. Американский национальный институт стандартизации (ANSI) принял его в качестве стандарта. После этого стандарт уже пересматривался несколько раз, в 1989, 1992 г. в результате в язык SQL были внесены некоторые незначительные изменения. В настоящее время наиболее распространенным стандартом является SQL-92.
Типы команд SQL
Команды языка SQL, условно, можно разделить на группы:
· DCL (Data Control Language) – язык управления данными. Команды языка предназначены для управления доступом к информации, хранящейся в БД. (таблица 19.1);
· DDL (Data Definition Language) – язык определения данных. Его команды используются для создания и изменения структуры объектов БД (таблица 19.2);
· DML (Data Manipulation Language) – язык манипулирования данными. Используется для манипулирования информацией, содержащейся в объектах БД (таблица 19.3);
· DQL (Data Query Language) – язык запросов к данным. Наиболее часто используемая группа, состоящая всего из одного оператора SELECT, предназначенного для формирования запросов к БД (таблица 19.4);
· TCL (Transaction Control Language) – язык управления транзакциями (таблица 19.5);
· CCL (Cursor Control Language) – язык управления курсором (таблица 19.6);
Язык SQL является непроцедурным, но, тем не менее, в среде SQL Server предусмотрен ряд различных управляющих конструкций, без которых невозможно написание эффективных алгоритмов, например, операторные скобки, условия циклы и т.д.
Таблица 19.1- Средства управления данными DCL
Оператор | Описание |
ALTER DATABASE | Изменение набора основных объектов БД |
ALTER DBAREA | Изменение существующей области хранения БД |
ALTER PASSWORD | Изменяет пароль для всей базы данных |
CREATE DATABASE | Создает новую базу данных и определяет ее основные параметры |
CREATE DBAREA | Создает область хранения и делает ее доступной для размещения данных |
DROP DATABASE | Удаляет БД (при наличии прав) |
DROP DBAREA | Удаляет область хранения если в ней не располагаются активные данные |
GRANT | Предоставляет права доступа на действия с объектами БД |
REVOKE | Лишает прав доступа к объектам БД или над действиями с объектами БД |
Таблица 19.2 - Операторы определения данных DDL
Оператор | Описание |
CREATE TABLE | Создает новую таблицу в БД |
DROP TABLE | Удаляет существующую таблицу из БД |
ALTER TABLE | Изменяет структуру таблицы или ограничения таблицы |
CREATE VIEW | Создает представление (виртуальную таблицу) соответствующую некоторому SQL запросу |
DROP VIEW | Удаляет ранее созданное представление |
ALTER VIEW | Изменяет существующее представление |
CREATE INDEX | Создает индекс для некоторой таблицы |
DROP INDEX | Удаляет существующий индекс |
Таблица 19.3 - Операторы манипулирования данными DML
Оператор | Описание |
DELETE | Удаляет одну или несколько записей согласно условиям отбора. Применение оператора согласуется с принципами поддержки ссылочной целостности, поэтому оператор не всегда выполняется корректно, даже если синтаксически записан правильно |
INSERT | Вставляет одну или несколько записей, согласно условию отбора, в базовую таблицу |
UPDATE | Обновляет значения одного или нескольких полей в одной или нескольких записях, соответствующих условиям отбора |
Таблица 19.4 - Язык запросов к данным DQL
Оператор | Описание |
SELECT | Оператор, полностью реализующий возможности реляционной алгебры. Позволяет сформировать результирующие отношение, соответствующее запросу |
Таблица 19.5- Средства управления транзакциями TCL
Оператор | Описание |
COMMIT | Завершает транзакцию (комплексную взаимосвязанную обработку информации, объединенную в транзакции) |
ROLLBACK | Откат транзакции (отмена изменений, проведенных в ходе выполнения транзакции) |
SAVEPOINT | Сохраняет промежуточную точку (состояние) БД, для реализации возможности отката |
Таблица 19.6- Средства управления курсором СCL
Оператор | Описание |
DECLARE | Определяет курсор для запроса |
OPEN | Открывает курсор (Формирует виртуальный НД, соответствующий описанию курсора) |
FETCH | Считывает очередную строку из виртуального НД открытого курсора |
CLOSE | Закрывает открытый курсор |
PREPARE | Готовит оператор SQL к динамическому выполнению |
EXECUTE | Выполняет оператор SQL, ранее подготовленный к динамическому выполнению |
Типы данных языка SQL
В языке SQL имеется шесть скалярных типов данных, определенных стандартом. Их краткое описание представлено в таблице 19.7
Таблица 19.7 – типы данных языка SQL
Тип данных | Объявления |
Символьный | CHAR | VARCHAR |
Битовый | BIT | BIT VARYING |
Точные числа | NUMERIC | DECIMAL | INTEGER | SMALLINT |
Вещественные числа | FLOAT | REAL | DOUBLE PRECISION |
Дата/время | DATE | TIME | TIMESTAMP |
Интервал | INTERVAL |
Строковые типы:
§ CHARACTER(n) или CHAR(n) - символьные строки постоянной длины в n символов. При задании данного типа под каждое значение всегда отводится n символов, и если реальное значение занимает менее, чем n символов, то СУБД автоматически дополняет недостающие символы пробелами.
§ VARCHAR(n) - строки символов переменной длины.
Битовые типы:
§ ВIT(п) - строка битов постоянной длины.
§ BIT VARYING(n) - строка битов переменной длины.
Точные типы:
§ NUMERIC[(n,m)] - точные числа, здесь и - общее количество цифр в чис- . ле, m - количество цифр слева от десятичной точки.
§ DECIMAL[(n,m)] - точные числа, здесь п - общее количество цифр в числе, m - количество цифр слева от десятичной точки.
§ DEC[(n,m)] - то же, что и DECIMAl.[(n,m)].
§ INTEGER или INT - целые числа.
§ SMALLINT - целые числа меньшего диапазона.
Вещественные типы:
§ FLOAT[(n)] - числа большой точности, хранимые в форме с плавающей точкой. Здесь n - число байтов, резервируемое под хранение одного числа. Диапазон чисел определяется конкретной реализацией.
§ REAL - вещественный тип чисел, который соответствует числам с плавающей точкой, меньшей точности, чем FLOAT.
§ DOUBLE PRECISION специфицирует тип данных с определенной в реализации точностью большей, чем определенная в реализации точность для REAL.
Типы даты/времени и интервал:
§ DATE - календарная дата.
§ TIME – формат времени.
§ ТIМЕSТАМР(точность) - дата и время.
§ INTERVAL - временной интервал.
Большинство коммерческих СУБД поддерживают дополнительные типы данных, которые не специфицированы в стандарте. Так, например, практически все СУБД в том или ином виде поддерживают тип данных для представления неструктурированного текста большого объема. Этот тип аналогичен типу MEMO в настольных СУБД. Называются эти типы по-разному, например в ORACLE этот тип называется LONG, в DB2 - LONG VARCHAR, в SYBASE и MS SQL Server - TEXT.
Контрольные вопросы
1. Что представляет собой язык SQL?
2. Что общего между языком SQL и реляционной алгеброй?
3. Какие средства включает в себя язык SQL?
4. Какие типы команд выделяют в языке SQL?
5. Назовите основные команды языка DML.
6. Назовите основные команды языка DDL.
7. Назовите основные команды языка DCL.
В лекции "37 - Собственные поля организма" также много полезной информации.
8. Назовите основные команды языка DQL.
9. Назовите основные команды языка управления транзакциями.
10. Назовите основные типы данных языка SQL.
11. Назовите строковые типы данных языка SQL.
12. Назовите числовые типы данных языка SQL.
13. Назовите типы представления даты и времени.