ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Базы данных
Добавлен: 28.11.2018
Просмотров: 7746
Скачиваний: 53
51
можно сказать, что каждое расширение – это надмножество некоторого под-
множества стандарта SQL.
Язык SQL оперирует терминами, несколько отличающимися от терминов
реляционной теории, например вместо «отношений» используются «таблицы»,
вместо «кортежей» – «строки», вместо «атрибутов» – «колонки» или «столб-
цы». Язык SQL является реляционно полным. Это означает, что любой опера-
тор реляционной алгебры может быть выражен подходящим оператором SQL.
SQL нельзя в полной мере отнести к традиционным языкам программи-
рования, т. к. он не содержит, например, операторы, управляющие ходом ис-
полнения программы, операторы описания типов и т. д. Язык SQL содержит
лишь набор стандартных операторов доступа и управления к данным в БД.
Операторы SQL с помощью специальных средств можно встроить в программ-
ное обеспечение, использующее базовый язык программирования, например
С++ [8].
3.2 Основные операторы языка SQL
Все операторы языка SQL можно условно разделить на несколько под-
классов языка [11–12]:
1. DDL – Data Definition Language (язык описания или определения дан-
ных).
2. DML – Data Manipulation Language (язык манипулирования данными).
3. DQL – Data Query Language (язык запросов к данным).
4. TCL – Transaction Control Language (язык управления транзакциями).
5. AL – Administration Language (язык администрирования).
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Основным и самым используемым оператором языка SQL яв-
ляется оператор SELECT из класса DQL, который позволяет из-
влекать данные из одной или нескольких таблиц.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Несмотря на то что данный оператор позволяет производить различные
манипуляции с данными, например складывать данные разных столбцов или
производить другие вычисления внутри запроса, фактически сами данные, рас-
полагаемые в таблицах, остаются нетронутыми. Таким образом, оператор как
бы извлекает актуальную копию данных из таблицы и передаёт её для даль-
нейшей обработки.
52
Класс DML, в отличие от DQL, наоборот, предназначен для произведения
операций изменения имеющегося набора данных, таких как добавление, обнов-
ление или удаление.
Операторы групп DDL и AL предназначены для управления самими объ-
ектами баз данных. TCL команды работают с транзакциями, состоящими из
набора команд DQL и DML. Основные операторы языка SQL приведены в таб-
лице 3.1.
Таблица 3.1 – Основные операторы языка SQL
Класс
Оператор
Применение
DQL
SELECT
Используется для извлечения данных из ба-
зы данных
DML
INSERT
UPDATE
DELETE
Команды, предназначенные для ввода но-
вых, изменения существующих и удаления
ненужных строк из таблиц базы данных
DDL
CREATE
ALTER
DROP
RENAME
TRUNCATE
Используются для создания, изменения и
удаления объектов базы данных (таблиц,
представлений, последовательностей и
т. п.)
TCL
COMMIT
ROLLBACK
SAVEPOINT
SET TRANSAC-
TION
Команды управления транзакциями.
Управляют изменениями, которые произво-
дятся с помощью команд DML
AL
GRANT
REVOKE
Команды управления доступом к объектам
Данный набор команд не является полным, ведь существуют также спе-
циализированные операторы языка SQL, которые позволяют работать, напри-
мер, с курсорами или управлять динамическим запуском других операторов.
Также расширения языка SQL в различных СУБД содержат дополнительные
операторы, позволяющие осуществлять более гибкое и функциональное управ-
ление данными в БД.
3.3 Типы данных
В языке SQL, так же как и в различных языках программирования, для
хранения данных поддерживается набор типов данных. Типы данных отлича-
53
ются друг от друга в организации хранения данных и применяемым к ним опе-
рациям. Очевидно, что операции деления или умножения относятся к числовым
типам данных и не применимы к символьным (строкам). Таким образом, неко-
торый набор операций может быть применим к различным типам данных, а не-
которые операции могут применяться только для отдельного типа. Например,
операция сложения «+» может быть применима как к числовым данным
(4 + 7 = 11), так и к текстовым («четыре» + «семь» = «четыре семь»).
В различных СУБД набор поддерживаемых типов данных для столбцов
таблиц отличается друг о друга. В стандартах SQL, в зависимости от времени
их появления, также можно найти некоторые отличия в представленных типах
данных. Тем не менее, существует некоторый базовый набор, который будет
поддерживаться большинством стандартов и СУБД.
Типы данных SQL:
1. Числовой (целочисленный):
• INTEGER;
• SMALLINT;
• BIGINT.
2. Числовой (вещественный или дробный):
• REAL;
• FLOAT;
• NUMERIC;
• DECIMAL.
3. Символьный (строковый):
• CHAR;
• VARCHAR;
• TEXT.
4. Дата (время):
• DATE;
• TIME.
5. Логический:
• BOOLEAN.
Представленные типы данных являются наиболее часто употребляемыми
при создании столбцов таблиц и позволяют организовать рациональное хране-
ние информации и осуществлять соответствующие операции над данными.
54
3.4 Оператор SELECT
Для выборки строк из таблиц базы данных используется команда
SELECT.
Синтаксис команды SELECT выглядит следующим образом:
SELECT [ DISTINCT ] { *| столбец [ псевдоним ], …}
FROM таблица
[WHERE условие]
[ORDER BY {столбец | выражение [ASC | DESC], … }];
Рассмотрим подробнее каждый из пунктов данного синтаксиса. Ключе-
вых операторов здесь только два: SELECT и FROM. Любой запрос на выборку
данных из таблиц должен состоять как минимум из 2 данных операторов.
После оператора SELECT обязательно необходимо указать имена столб-
цов таблицы, которые должны отображаться в запросе. Если необходимо ис-
пользовать все столбцы таблицы в запросе, пользователь вместо их последова-
тельного перечисления может использовать символ *. После оператора FROM
обязательно необходимо указать имя таблицы или нескольких таблиц, данные
из которой будут отображены в итоге.
Например, в результате запуска команды SELECT * FROM Студент на
экран будут выведены все строки из таблицы «Студент».
Необязательным, но довольно часто используемым является оператор
WHERE, который используется для отбора строк, соответствующих некоторому
условию. Условие представляет собой некоторое логическое выражение, кото-
рое может состоять из имен столбцов, выражений, констант, операторов срав-
нения и логических операторов. В результирующую выборку попадут только те
строки таблицы, для которых заданное логическое выражение будет иметь зна-
чение ‘истина’.
Последний оператор ORDER BY используется для сортировки данных
выборки по одному или нескольким полям в порядке возрастания или убыва-
ния.
Оператор SELECT используется именно для выборки необходимых дан-
ных. Получив эту команду от приложения-клиента, приложение-сервер отбира-
ет столбцы и строки, удовлетворяющие условиям запроса, и передает их обрат-
но клиенту. То, что произойдет с полученными данными дальше, зависит от
функций приложения-клиента. Данные могут быть просто выведены на экран,
55
на печать, сохранены в файл, переданы на обработку и т. п. За все эти операции
команда SELECT уже не отвечает.
Рассмотрим примеры различных запросов к отношению «Студент», при-
ведённому в таблице 3.2.
Таблица 3.2 – Отношение «Студент»
Номер
ФИО
Дата
рождения
Группа
Стипен-
дия, руб.
1
Иванов Сергей Петрович
14.05.1988
116
1500
2
Петров Иван Сергеевич
27.01.1989
598
500
3
Алексеев Семен Олегович
05.10.1993
445
1500
4
Белов Петр Иванович
01.11.1988
116
2500
5
Сидорова Анна Игоревна
05.04.1991
116
1000
6
Егорова Ирина Петровна
18.12.1992
445
–
7
Широков Иван Дмитриевич
22.07.1991
445
2000
· · · · · · · · · · · · · · · · · · · · · · ·
Пример 3.1
· · · · · · · · · · · · · · · · · · · · · · ·
Вывод списка фамилий, имен, отчеств (ФИО) и номеров групп студентов,
реализуемый с помощью запроса SELECT ФИО, Группа FROM Студент,
приведен в таблице 3.3.
Таблица 3.3 – Список фамилий и номеров групп
ФИО
Группа
Иванов Сергей Петрович
116
Петров Иван Сергеевич
598
Алексеев Семен Олегович
445
Белов Петр Иванович
116
Сидорова Анна Игоревна
116
Егорова Ирина Петровна
445
Широков Иван Дмитриевич
445