Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции БД.doc
Скачиваний:
15
Добавлен:
26.11.2018
Размер:
388.1 Кб
Скачать

З апросы в sql.

Запросы бывают:

  1. Простые (данные берутся только из одной таблицы)

  2. Многотабличные (данные из нескольких таблиц)

  3. Вложенные (запрос внутри запроса)

SELECT [[ALL]/DISTINCT] {*/поле1, поле2…}

FROM {базовая таблица1/представление 1}, {базовая таблица2/представление 2}

[WHERE условие]

Результатом команды SELECT есть таблица (представление).

ALL все значения в столбцах

DISTINCT только уникальные значения

FROM задает таблицы, откуда запрашивается

WHERE условия на выборку

Пример1:

Список штукатуров

SELECT Фамилия

FROM Сотрудник

WHERE Должность=’штукатур’

Пример2:

Данные о всех студентах АД-76

SELECT *

FROM Студенты

WHERE Группа=’АД-76’

Составное условие

WHERE [NOT] условие1 [AND/OR] [NOT] условие2…

условия:

значение {=/<>/<=/</>=/>} {константа/выражение}

значение1 [NOT] BEETWEEN значение2 AND значение3

значение [NOT] IN {список констант/значений}

значение IS [NOT] NULL

Пример3:

Сотрудники с окладом 800..1000 р.

SELECT Фамилия

FROM Сотрудники

WHERE Оклад BEETWEEN 800 AND 1000

Пример4:

Сотрудники 2, 5 и 6 отделов

SELECT Фамилия

FROM Сотрудники

WHERE Отдел IN 2,5,6

Пример5:

Студенты АД-76, не сдававшие экзамен

SELECT Фамилия

FROM Студент

WHERE Группа=’АД-76’ AND Оценка IS NULL

ORDER BY Упорядочить выводимые поля

ASC по возрастанию

DESC по убыванию

Пример6:

Студенты АД-76, упорядоченные по алфавиту

SELECT Фамилия

FROM Студент

WHERE Группа=’АД-76’

ORDER BY Фамилия ASC

Многотабличный запрос

Сотрудники:

Код сотрудника

Фамилия

Код отдела

1

Иванов

1

2

Петров

3

Отделы

Код отдела

Название

1

Снабжение

Пример7:

Список сотрудников из отдела «Снабжения»

SELECT Фамилия

FROM Сотрудники, Отдел

WHERE Название=’Снабжение’

AND Сотрудники.КодОтдела=Отдел.КодОтдела

Алгоритм выполнения запроса:

  1. Строится декартово произведение таблиц

  2. Из результата произведения выбираются нужные строки

  3. Из строк выбираются нужные столбцы

Пример8:

КодСотрудника

ФИО

КодОтдела

КодНачальника

Необходимо выбрать ФИО и Фамилию начальника

SELECT А.Фамилия, В.Фамилия

FROM Сотрудник.А, Сотрудник.В

WHERE В.КодСотрудник=А.КодНачальника

Вложеные запросы.

Подзапрос помещается в WHERE главного запроса

Пример9:

Расписание

КодСотрудника

День

Время

Должности работающих в понедельник

SELECT Должность

FROM Сотрудник

WHERE КодСотрудника IN (

SELECT КодСотрудника

FROM Расписание

WHERE День=’Понедельник’

)

Подзапросы бывают двух видов:

  1. Некорелированные (результат подзапроса не зависит от главного запроса)

  2. Корелированные (связи нет)

Пример10:

Списки людей, работающих в тех отделах, которые работают по понедельникам

Расписание

КодОтдела

День

Время

SELECT Должность

FROM Сотрудники

WHERE КодОтдела IN (

SELECT КодОтдела

FROM Расписание

WHERE День=’Понедельник’ AND

Сотрудник.КодОтдела=

Расписание. КодОтдела=

)