Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
37
Добавлен:
26.04.2015
Размер:
873.98 Кб
Скачать

Практическая работа 8

Простейшие запросы к РБД

Оформление:

Схема данных.

Далее для каждого запроса:

  1. Текст запроса (формулировка)

  2. Запрос на языке SQL

  3. Результат выполнения запроса в виде таблицы

Структура оператора Select.

Select [distinct] <список выражений над атрибутами>

From <список таблиц>

[Where <условие выборки>]

[Group by <список атрибутов>]

[Having <условие>]

[Union <выражения с оператором Select>]

[Order by <список атрибутов>]

  1. Select distinct maker from Product;

Вывод разных производителей из таблицы Product

  1. Select * from PC;

Выводит все поля из таблицы PC

  1. SELECT *

FROM Laptop

WHERE model='1752';

Выведет все поля из таблицы Laptop для записей у которых в поле Model стоит значение 1752

  1. SELECT model, type, price

FROM printer

WHERE price>200;

Выведет значения атрибутов model, type, price из таблицы printer для тех записей, у которых в поле price стоят значения большие 200

  1. SELECT *

FROM PC

WHERE hd>10 and ram>64;

Выведет все поля из таблицы PC для записей у которых в поле HD стоят значения больше 10 и в поле Ram стоят значения большие 64

Операторы in, between, like, is (not) null

In= равен любому из списка

Not in= не равен ни одному из списка

Используется для сравнения проверяемого значения с заданным списком

  1. SELECT *

FROM Printer

WHERE Printer.type In ('Laser','Jet');

Выведет все поля для принтеров, которые являются лазерными или струйными

  1. SELECT *

FROM Printer

WHERE type Not In ('Laser','Jet');

Выведет все поля для принтеров, которые являются матричными

Between Оператор between используется для проверки условия вхождения значения поля в заданный интервал, то есть вместо списка значений атрибута этот оператор задаёт границы его изменения

  1. SELECT *

FROM PC

WHERE Price between 600 and 850;

(граничные значения входят в интервал!)

Like осуществляет просмотр строковых значений полей с целью определить входит ли заданная в операторе Like подстрока в символьную строку

  1. SELECT *

FROM Printer

WHERE type like 'L*';

Значение которое стоит в поле «тип» начинается на “L”. *- обозначает любую последовательность символов

  1. SELECT *

FROM Printer

WHERE type like '*atr*';

Is null. Not is null проверяет пусто ли поле

  1. SELECT *

FROM Product

WHERE maker is not null;

Если в операторе Select после ключевого слова From указывается не одна, а две таблицы, то в результате выполнения запроса, в котором отсутствует предложение Where, каждая строка одной таблицы соединиться с каждой строкой второй таблицы. (количество строк в результирующем запросе= произведение количеств строк в соединяемых таблицах). Такая операция называется декартовым произведением или полным соединением таблиц БД. Сама по себе эта операция не имеет практического значения, более того, при ошибочном использовании она может привести к неожиданным нештатным ситуациям.

Результат выполнения:

Соединение таблиц имеет смысл только тогда, когда соединяются не все строки исходных таблиц, а только те, которые интересуют пользователя.

Задаётся это заданием предложения с ключевым словом ON.

Select *

from Staff S inner join Departments D On S.Number_of_Department=D.ID_Department;

Результат выполнения:

Например, найдём номер телефона отдела, в котором работает Иванов Андрей. Выведем также его фамилию и имя. Для этого:

Select S.Surname, S.Name, S.Number_of_Department, D.telefon

from Staff S inner join Departments D On S.Number_of_Department=D.ID_Department

where S.Surname='Иванов';

Результат выполнения:

Соединение, использующее предикаты, основанные на равенствах называется эквисоединением. Рассмотренный пример соединения таблиц относится к виду так называемого внутреннего (INNER) соединения. При таком типе соединения соединяются только те строки таблиц, для которых является истинным предикат, задаваемый в предложении ON запроса.

12.SELECT Product.maker, Product.model AS model1, PC.model AS model2, PC.price

FROM Product INNER JOIN PC ON Product.model=PC.model;

Выводит производителей, номера моделей и цены из таблиц Product и PC.

13. SELECT Product.maker, Product.model AS model1, PC.model AS model2, PC.price

FROM Product LEFT JOIN PC ON Product.model=PC.model

WHERE Product.type='PC';

Поскольку двух моделей компьютеров из таблицы Product нет в таблице PC, то два поля для двух записей в данном примере будут пустые.

При использовании левого внешнего соединения расширение выводимой таблицы (результирующей выборки) осуществляется за счёт записей входной таблицы, имя которой указано слева от оператора Join.

14. Найти производителей цветных принтеров

SELECT Product.maker, Product.model, Printer.color

FROM Product INNER JOIN Printer ON Product.model=Printer.model

WHERE Printer.color='y';

15. Указать производителя и скорость для тех ноутбуков, которые имеют жесткий диск объёмом не менее 10 Гб

SELECT P.maker, L.speed

FROM product AS P INNER JOIN laptop AS L ON P.model=L.model

WHERE hd>=10;

7

Соседние файлы в папке Подмога_БД_Величко