
- •§ 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. Формат оператора удаления кортежей и замечание

Формат операторов подъязыка DML
НАЗВАНИЕ |
НАЗНАЧЕНИЕ |
ОПЕРАТОРА |
ОПЕРАТОРА |
|
|
SELECT |
Выборка кортежей |
UPDATE |
Изменение кортежей |
INSERT |
Вставка новых кортежей |
DELETE |
Удаление кортежей |
51

1. Формат оператора выборки кортежей
SELECT[ALL|DISTINCT]
<список данных>
FROM <список отношений>
[WHERE <условие выборки>] [GROUP BY <имя_атрибута>
[, <имя_атрибута>]…]
[HAVING <условие поиска>] [ORDER BY <спецификация>
[, <спецификация> ]…];
52

Оператор SELECT позволяет произ- водить выборку и вычисления над данными из одного или нескольких отношений. Результатом выполнения этого оператора является ответная
таблица, которая может иметь (ALL), или не иметь (DISTINCT) повторя-
ющиеся кортежи. По умолчанию в ответную таблицу включаются все кортежи, в том числе и повто- ряющиеся.
53

В отборе участвуют кортежи одной или нескольких таблиц, перечисленных в списке таблиц после слова FROM.
При использовании в списке данных не- скольких таблиц для указания принад- лежности атрибута некоторой таблице
применяют конструкцию вида
<Имя_отношения> . <Имя_атрибута> . Список данных может содержать и вы- ражения над атрибутами, в том числе, знаки арифметических операций, конс- танты и круглые скобки.
54

Операнд WHERE задает условия, которым должны удовлетворять кортежи в результирующей табли- це. Выражение <условие выборки> является логическим. Его элемен- тами могут быть имена атрибутов, операции сравнения, логические связки and, or, not, круглые скобки,
а также специальные функции LIKE,
NULL, IN и др.
55

Операнд GROUP BY позволяет выделять в результирующем множестве кортежей группы. Группой являются кортежи с сов- падающими значениями в столбцах, перечисленных за ключевыми словами GROUP BY. Выделение групп требуется
для использования в логических выра- жениях операндов WHERE и HAVING, где
HAVING<условия поиска> является спе- циальной формой операнда WHERE, и указывает дополнительный критерий отбо- ра данных в каждую группу.
56

В логических и арифметических выра- жениях можно использовать следую- щие функции как групповые:
AVG, MAX, MIN, SUM, COUNT.
Наконец, опция ORDER BY задает по- рядок сортировки результирующего множества кортежей. Она аналогична конструкции оператора CREATE INDEX.
Каждая <спецификация> представляет собой пару
<имя_атрибута> [ASC|DESC].
57

2. Формат оператора изменения кортежей
UPDATE
<имя_отношения>
SET<имя_атрибута> =
= {<выражение>,
NULL}
[, SET
<имя_атрибута>=
= {<выражение>,
NULL}…]
[ WHERE <условие>];
Выполнение опера- тора UPDATE сос-
тоит в изменении значений в опреде- ленных операндом SET атрибутах для тех кортежей, кото- рые удовлетворяют
условию, заданному операндом WHERE.
58

3. Форматы оператора вставки новых кортежей
а) INSERT INTO |
|
б) INSERT INTO |
<имя_отноше- |
|
<имя_отноше- |
ния> |
|
ния> |
[(<список |
|
[(<список |
атрибутов>)] |
|
атрибутов>)] |
VALUES (<список |
|
<предложение |
значений>); |
|
SELECT>; |
|
|
|
59

4. Формат оператора удаления кортежей и замечание
DELETE FROM
<имя_отношения> [WHERE <условие>];
Замечание. Язык SQL обладает ре- ляционной полно- той.
60