ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Базы данных
Добавлен: 28.11.2018
Просмотров: 5433
Скачиваний: 10
71
Развитие
реляционного
подхода
привело
к
созданию
ре
-
ляционных
языков
.
Например
,
язык
SQL,
реализованный
в
большинстве
СУБД
.
Он
включает
в
себя
,
помимо
операций
реляционной
алгебры
,
полный
набор
операторов
над
стро
-
ками
- «
включить
», «
удалить
», «
обновить
»,
а
также
реали
-
зует
арифметические
операции
и
операции
сравнения
.
Упражнения
и
задачи
Для
реляционной
БД
,
построенной
в
предыдущем
упражне
-
нии
,
сформулируйте
задачи
,
которые
решаются
при
помощи
операций
реляционной
алгебры
.
72
5.
Запросы
к
БД
5.1.
Простые
запросы
Простой
запрос
-
запрос
,
который
обращается
только
к
одной
таблице
базы
данных
.
Ниже
приведены
примеры
про
-
стых
запросов
.
Работник
№
рабо
-
Фамилия
Недельная
Спец
-
ть
№
Менеджер
тника
зарплата
1235
И
.
Петров
12.50
электрик
1311
1412
К
.
Иванов
13.75
штукатур
1520
2920
Р
.
Смирнов
10.00
кровельщик
2920
1520
Г
.
Сидоров
11.75
штукатур
1412
1311
Х
.
Васильев
15.50
электрик
1311
Работа
№
рабо
-
№
здания
Дата
_
начала
Число
_
дней
тника
1235 312 10.10 5
2920 460 05.10 18
1235 435 17.10 22
3231 111 10.10 8
1412 435 15.10 15
1311 460 23.10 24
Здание
№
здания
Адрес
Тип
312
ул
.
Вязов
, 123
офис
435
ул
.
Кленов
, 456
склад
515
ул
.
Березовая
, 12
магазин
210
ул
.
Нахимова
, 4
склад
Рис
. 5.1.
База
данных
строительной
компании
«
Премьер
»
73
Запрос
:
Вывести
фамилии
штукатуров
?
SELECT
Фамилия
FROM
Работник
WHERE
Специальность
= '
Штукатур
'
Результат
:
Фамилия
К
.
Иванов
Г
.
Сидоров
Этот
запрос
иллюстрирует
три
наиболее
часто
встре
-
чающиеся
фразы
SQL: SELECT, FROM
и
WHERE.
В
данном
примере
мы
поместили
их
на
разные
строки
,
они
все
могут
стоять
в
одной
строке
.
Они
также
могут
помещаться
с
раз
-
ными
отступами
,
а
слова
внутри
фраз
могут
разделяться
произвольным
числом
пробелов
.
Рассмотрим
характеристики
каждой
фразы
:
Select.
Фраза
SELECT
перечисляет
столбцы
,
которые
должны
войти
в
результирующую
таблицу
.
В
данном
приме
-
ре
результирующая
таблица
состоит
из
одного
столбца
(
Фамилия
),
но
в
общем
случае
она
может
содержать
не
-
сколько
столбцов
;
она
также
может
содержать
вычисленные
значения
или
константы
.
Если
результирующая
таблица
должна
содержать
более
одного
столбца
,
то
все
нужные
столбцы
перечисляются
после
команды
SELECT
через
запя
-
тую
.
Например
,
фраза
SELECT
№
работника
,
Фамилия
выдает
в
результате
таблицу
,
состоящую
из
столбцов
«
№
работника
»
и
«
Фамилия
».
From.
Фраза
FROM
задает
одну
или
более
таблиц
,
к
ко
-
торым
обращается
запрос
.
Все
столбцы
,
перечисленные
во
фразах
SELECT
и
WHERE,
должны
существовать
в
одной
из
таблиц
,
перечисленных
в
команде
FROM.
Where.
Фраза
WHERE
содержит
условие
,
на
основании
которого
выбираются
строки
таблицы
(
таблиц
).
В
данном
примере
условие
состоит
в
том
,
что
столбец
Специаль
-
ность
должен
содержать
константу
‘
Штукатур
’,
заключенную
в
апострофы
.
Фраза
WHERE -
наиболее
изменчивая
коман
-
да
SQL;
она
может
содержать
множество
разнообразных
условий
.
Приведенный
выше
запрос
SQL
обрабатывается
системой
в
следующем
порядке
: FROM, WHERE, SELECT.
В
данном
примере
из
каждой
такой
строки
выбирается
Фамилия
,
и
74
все
выбранные
значения
выводятся
в
качестве
результатов
запроса
.
Запрос
:
Вывести
все
данные
о
зданиях
офисов
.
SELECT *
FROM
Здание
WHERE
тип
= '
Склад
'
Результат
:
Здание
№
здания
Адрес
Тип
435
ул
.
Кленов
456
склад
210
ул
.
Нахимова
4
склад
Звездочка
(*)
в
команде
SELECT
означает
«
строка
цели
-
ком
».
Запрос
:
Вывести
недельную
зарплату
каждого
электрика
.
SELECT
Фамилия
,'
Недельная
зарплата
= ', 40*
Недель
-
ная
зарплата
FROM
Работник
WHERE
Специальность
= '
Электрик
'
ORDER BY
Фамилия
Результат
:
Фамилия
М
.
Петров
Недельная
зарплата
= 500.00
Х
.
Васильев
Недельная
зарплата
= 620.00
Этот
запрос
иллюстрирует
употребление
символьных
констант
и
вычислений
в
команде
SELECT.
Внутри
команды
SELECT
можно
производить
вычисления
,
в
которых
исполь
-
зуются
числовые
столбцы
и
числовые
константы
,
а
также
стандартные
арифметические
операторы
(+,-,*, /),
сгруппиро
-
ванные
по
мере
необходимости
с
помощью
скобок
.
Команда
ORDER BY
сортирует
результат
запроса
в
возрастающем
алфавитно
-
числовом
порядке
по
указанному
столбцу
.
Если
вы
хотите
упорядочить
результаты
по
убыванию
,
то
к
ко
-
манде
нужно
добавить
DESC.
Фраза
ORDER BY
может
сор
-
75
тировать
результаты
по
нескольким
столбцам
,
по
одним
–
в
порядке
возрастания
,
по
другим
–
в
порядке
убывания
.
Пер
-
вым
указывается
столбец
первичного
ключа
сортировки
.
Запрос
:
Вывести
фамилии
работников
,
у
которых
почасо
-
вая
ставка
от
10
до
12
рублей
.
SELECT *
FROM
Работник
WHERE
Недельная
зарплата
> = 10 AND
Недельная
зарплата
< = 12
Результат
:
№
рабо
-
Фамилия
Недельная
Специальность
тника
зарплата
2920
Р
.
Смирнов
10.00
кровельщик
520
Г
.
Сидоров
11.75
штукатур
Этот
запрос
иллюстрирует
некоторые
дополнительные
возможности
команды
WHERE:
операторы
сравнения
и
бу
-
леву
операцию
AND (
И
).
Для
сравнения
столбцов
с
другими
столбцами
или
с
константами
могут
использоваться
шесть
операторов
сравнения
(=,<> (
не
равно
),<, >, <=, >=).
Для
от
-
рицания
условий
могут
использоваться
булевы
операции
AND(
И
), OR(
ИЛИ
), NOT(
НЕТ
).
Для
группировки
условий
могут
использоваться
скобки
.
Для
формулировки
этого
запроса
также
можно
было
ис
-
пользовать
оператор
BETWEEN (
между
):
SELECT *
FROM
Работник
WHERE
Недельная
зарплата
BETWEEN 10 AND 12
BETWEEN
может
использоваться
для
сравнения
некото
-
рой
величины
с
двумя
другими
величинами
,
первая
из
ко
-
торых
меньше
второй
.
Сравнимая
величина
может
быть
равна
каждой
из
данных
величин
или
любому
значению
между
ними
.