Лекция 8. Реляционные языки запросов. Язык SQL
Существуют языки: ISBL - язык системы PRTV , QUEL -язык системы
INGRES , SQL - язык системы System R ; QBE - язык интерфейса высокого уровня
в ряде СУБД, PIQUE - язык экспериментальной системы PITS . ISBL основан на
реляционной алгебре. QUEL и SQL - на исчислении кортежей. QBE -язык,
основанный на исчислении доменов. PIQUE - похож на исчисление кортежей, но
обеспечивает интерфейс со схемой помощью W-функций.
В реляционных системах выполняются как минимум 2 условия:
1. Данные воспринимаются пользователем как таблицы.
2. В распоряжении пользователя имеются операторы (например, для выборки
данных), среди которых есть операторы SELECT , PROJECT и JOIN .
- Операция SELECT предназначена для извлечения определенных строк из таблицы.
- Операция PROJECT предназначена для извлечения определенных столбцов из таблицы.
- Операция JOIN предназначена для соединения двух таблиц на основе общих значений в общих столбцах.
400р. 2 . PROJECT: SELECT № отдела , Бюджет FROM ОТДЕЛЫ 3. JOIN: SELECT ОТДЕЛЫ.*, СЛУЖАЩИЕ.* FROM ОТДЕЛЫ, СЛУЖАЩИЕ WHERE ОТДЕЛЫ. № отдела = СЛУЖАЩИЕ. № отдела " width="640"
Пример 6.1. Пусть имеются 2 таблицы:
ОТДЕЛЫ (№ отдела, Наименование, Бюджет)
СЛУЖАЩИЕ (№ служащего, № отдела, Оклад)
1. SELECT :
SELECT № отдела, Наименование, Бюджет
FROM ОТДЕЛЫ
WHERE Оклад 400р.
2 . PROJECT:
SELECT № отдела , Бюджет
FROM ОТДЕЛЫ
3. JOIN:
SELECT ОТДЕЛЫ.*, СЛУЖАЩИЕ.*
FROM ОТДЕЛЫ, СЛУЖАЩИЕ
WHERE ОТДЕЛЫ. № отдела = СЛУЖАЩИЕ. № отдела
Функции определения данных:
CREATE TABLE - оператор создания таблицы ;
CREATE INDEX - оператор создания индексной таблицы;
DROP TABLE - оператор удаления таблицы ;
DROP INDEX - оператор удаления индексной таблицы.
8 .2. Операторы манипулирования данными
SELECT (выдать, выбрать), UPDATE (обновить), DELETE (удалить)
INSERT (включить).
Создадим БД Поставщиков ( S ) .
CREATE TABLE S
( НОМЕР _ ПОСТАВЩИКА CHAR (5),
ИМЯ CHAR (20),
СОСТОЯНИЕ SMALLINT,
ГОРОД CHAR (15));
8 .3.Выборки
SELECT – FROM - WHERE (выбрать – из – где).
Структура оператора SELECT :
SELECT [DISTINCT] элементы
FROM таблица
[WHERE предикат ]
[GROUP BY поле [HAVING [ предикат ]]
[ORDER BY поле ]
Пример 6. 2 . Простая выборка. Выдать номера для всех поставляемых деталей:
SELECT НОМЕР _ ДЕТАЛИ
FROM SP
Пример 6. 3 . Выборка с исключением дубликатов.
SELECT DISTINCT НОМЕР _ ДЕТАЛИ
FROM SP
Пример 6. 4 . Выборка вычисляемых значений. Выдать номер и вес каждой детали
SELECT НОМЕР_ДЕТАЛИ, ВЕС
FROM P
Фраза SELECT (и фраза WHERE ) может включать арифметические выражения, а также
прочие имена полей. Можно, кроме того, осуществлять выборку просто констант.
SELECT НОМЕР_ДЕТАЛИ, 'Вес в граммах =', ВЕС
FROM P
20 Условие или предикат, следующий за ключевым словом WHERE , может включать операторы сравнения =, = (не равно), , , =, , и операторы AND (и), OR (или) и NOT (нет), а скобки указывают требуемый порядок вычислений. Пример 6. 8 . Выборка с упорядочением. Выдать номера и состояния поставщиков, находящихся в Перми, в порядке убывания их состояния: SELECT НОМЕР_ПОСТАВЩИКА FROM S WHERE ГОРОД=’Пермь’ ORDER BY СОСТОЯНИЕ DESC " width="640"
Пример 6. 6 . Выдать полные характеристики для всех поставщиков:
SELECT *
FROM S
Пример 6. 7 . Ограниченная выборка. Выдать номера поставщиков, которые
находятся в Перми и имеют состояние больше, чем 20.
SELECT НОМЕР_ПОСТАВЩИКА
FROM S
WHERE ГОРОД=’Пермь’ AND СОСТОЯНИЕ 20
Условие или предикат, следующий за ключевым словом WHERE , может
включать операторы сравнения =, = (не равно), , , =, , и
операторы AND (и), OR (или) и NOT (нет), а скобки указывают требуемый
порядок вычислений.
Пример 6. 8 . Выборка с упорядочением. Выдать номера и состояния поставщиков,
находящихся в Перми, в порядке убывания их состояния:
SELECT НОМЕР_ПОСТАВЩИКА
FROM S
WHERE ГОРОД=’Пермь’
ORDER BY СОСТОЯНИЕ DESC
Параметры : ASC – возрастание, DECS – убывание, ORDER BY – упорядочить.
При упорядочивании необходимо указать номер столбца:
SELECT НОМЕР_ДЕТАЛИ, ВЕС
FROM P
ORDER BY 2, НОМЕР _ ДЕТАЛИ
В строке ORDER BY … цифра 2 означает ссылку на второй столбец
результирующей таблицы.
Пример 6. 9 . Выборка с использованием BETWEEN (между). Выдать сведения
деталях, вес которых находится в диапазоне от 16 до 19 включительно:
SELECT НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ЦВЕТ, ВЕС, ГОРОД
FROM P
WHERE ВЕС BETWEEN 16 AND 19
Может также использоваться NOT BETWEEN .
Пример 6.1 0 . Выборка с использованием IN .Выдать детали, вес которых 12,16,17.
SELECT НОМЕР _ДЕТАЛИ, НАЗВАНИЕ, ВЕС, ГОРОД
FROM P
WHERE ВЕ GIN (12, 16,17)
Существует также предикат NOT IN (не принадлежит).
Пример 6.12. Выборка с использованием предиката LIKE (похоже на).Выдать все
детали, название которых начинается с буквы В:
SELECT НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ЦВЕТ, ВЕС, ГОРОД
FROM P
WHERE НАЗВАНИЕ LIKE 'B%'
Обычно предикат LIKE имеет форму:
Имя столбца LIKE литерная строковая константа,
где имя столбца имеет тип CHAR .
Литеры:
- Литера " _ " (разрыв или подчеркивание) - обозначает любую одиночную литеру.
- Литера " %" (процент) - обозначает любую последовательность из п литер.
- Все другие литеры обозначают просто сами себя.