- •§ 7. Обзор основных операторов структурированного языка запросов к БД SQL
- •1. Общие сведения о языках
- •Главное отличие между этими языками
- •Для того чтобы узнать имена доступных отношений БД, в языке QBE предусмотрен запрос
- •Краткая история стандартизации языка SQL
- •Первый документ из числа проектов стандарта датирован октябрем 1985 г. и является уже
- •Осознавая неполноту стандарта SQL/89, на фоне завершения разработки этого стандарта специалисты различных компаний
- •В1995 г. стандарт был дополнен
- •В 1996 г. к стандарту SQL/92 был
- •Незадолго до завершения работ по определению стандарта SQL2
- •Первая часть стандарта посвящена
- •В конце 2003 г. был принят и опубликован
- •2. Структура языка SQL и его типы данных. Понятие представления
- •Разделение языка SQL на уровни
- ••Встроенный (embedded) уровень
- •Типы данных в языке SQL
- •Категории типов данных
- •Приближенные числовые типы
- •Типы символьных строк
- •Операции над символьными типами
- •Функция LOVER заменяет в заданной строке все прописные буквы строчными.
- •Типы даты и времени
- •Тип TIME. Значения этого параметризо- ванного типа состоят из компонентов- значений часа (2
- •Булевский тип
- •Другие типы данных в SQL
- •Замечание 1
- •Понятие представления
- •Преимущество использования представ- лений по сравнению запросами к основной таблице состоит в том,
- •Описание и использование курсора
- •3. Основные операторы языка SQL
- •Операторы подъязыка DDL
- •Формат операторов подъязыка DDL
- •Конструкция NOT NULL служит дополнительным правилом контроля вводимых значений и для столбца означает,
- •Пример 1
- •Замечания 2 и 3
- •2. Оператор удаления отношения
- •3. Формат оператора изменения структуры отношения
- •Пример 2
- •4. Формат оператора создания индекса
- •Пример 3
- •5. Формат оператора удаления индекса
- •6. Формат оператора создания представления
- •Пример 4
- •7. Формат оператора удаления представления
- •8. Операторы назначения и удаления привилегий
- •Каждый пользователь БД в среде SQL имеет специальное идентификационное имя (ID) доступа. Команда,
- •Каждый пользователь имеет набор привилегий. Эти привилегии могут изме- няться со временем: новые
- •Пример 5
- •Теперь Курилова может выполнять запросы к таблице STUDENTS без других
- •Формат операторов подъязыка DML
- •1. Формат оператора выборки кортежей
- •Оператор SELECT позволяет произ- водить выборку и вычисления над данными из одного или
- •В отборе участвуют кортежи одной или нескольких таблиц, перечисленных в списке таблиц после
- •Операнд WHERE задает условия, которым должны удовлетворять кортежи в результирующей табли- це. Выражение
- •Операнд GROUP BY позволяет выделять в результирующем множестве кортежей группы. Группой являются кортежи
- •В логических и арифметических выра- жениях можно использовать следую- щие функции как групповые:
- •2. Формат оператора изменения кортежей
- •3. Форматы оператора вставки новых кортежей
- •4. Формат оператора удаления кортежей и замечание
3. Основные операторы языка SQL
Опишем минимальное подмножество
языка SQL, опираясь на его реализа- цию в стандартном интерфейсе
ODBC (совместимость открытых БД) фирмы MICROSOFT (стандарт ISO SQL/92 и ANSI SQL/92). Операторы
языка SQL можно условно разделить на два подъязыка: язык определения данных (DDL) и язык манипулирования данными (DML).
31
Операторы подъязыка DDL
|
|
|
|
|
|
|
|
|
НАЗВАНИЕ |
НАЗНАЧЕНИЕ |
|
|
CREATE TABLE |
Создание таблицы |
|
|
DROP TABLE |
Удаление таблицы |
|
|
ALTER TABLE |
Изменение структуры таблицы |
|
|
CREATE INDEX |
Создание индекса |
|
|
DROP INDEX |
Удаление индекса |
|
|
CREATE VIEW |
Создание представления |
|
|
DROP VIEW |
Удаление представления |
|
|
GRANT |
Назначение привилегий |
|
|
REVOKE |
Удаление привилегий |
Формат операторов подъязыка DDL
1. CREATE TABLE <имя_таблицы>
( < имя_столбца > < тип данных > [NOT NULL] [, < имя_столбца >
< тип данных > [NOT NULL ]]…)
В СУБД FOX PRO вместо CREATE
TABLE пишут CREATE DBF .
33
Конструкция NOT NULL служит дополнительным правилом контроля вводимых значений и для столбца означает, что в нем должно быть определено не пустое значение. В некоторых СУБД в качестве NOT NULL указывается размер поля в символах.
34
Пример 1
CREATE TABLE
STUDENTS
(SNUM INTEGER, SFAM CHAR (20), SIMA CHAR (10), SOTCH CHAR (15), STIP DECIMAL);
Создано отношение с именем «Студенты» и атрибутами соот- ветственно «Номер студенческого биле- та», «Фамилия», «Имя», «Отчество» студента и «Размер получаемой стипен- дии».
35
Замечания 2 и 3
•Порядок расположения атрибутов в отношении определяется тем, в какой последовательности они указаны в команде создания отношения.
•Кроме создания отношения в SQL/92 аналогичной командой CREATE SCHEMA можно создавать схемы с
необязательным указанием автора, а также можно создать домен – CREATE
DOMAIN.
36
2. Оператор удаления отношения
Оператор удаления отношения имеет формат
DROP TABLE <имя отношения>
Перед удалением отношения необ-
ходимо убедиться в том, что оно не ссылается на другое отношение и не используется в каком-либо пред-
ставлении. Кроме того, чтобы удалить
отношение, пользователь должен быть его собственником. Перед удалением отношение должно быть очищено.
37
3. Формат оператора изменения структуры отношения
ALTER TABLE <имя
отношения> ({ADD, MODIFY,
DROP} <имя_атри-
бута> [<тип данных>] [NOT NULL]
[, ({ADD, MODIFY,
DROP} <имя_атри-
бута>[<тип данных>] [NOT NULL]…]);
ADD, MODIFY, DROP – соот-
ветственно
добавление, изменение и удаление од- ного или не- скольких ат- рибутов отно- шения.
38
Пример 2
Добавим к отношению STUDENTS два атрибута для хранения инфор- мации о курсе и специальности студента:
ALTER TABLE STUDENTS (ADD COURS INTEGER, SPEC CHAR (10));
39
4. Формат оператора создания индекса
CREATE
[UNIQUE] INDEX
<имя_ индекса> ON <имя_отно-
шения> (<имя_ат- рибута> [ASC|
DESC]
[, имя_атрибута> [ASC|DESC]…]);
Индексы создаются для ускорения вы- полнения запросных и поисковых опера-
ций с отношением. Опция UNIQUE (уни-
кальность значений во всех указанных
атрибутах) является
необязательной.
ASC|DESC – сорти- ровка значений.
40