Материал: !Лабораторный практикум ТБД (задание)

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

where data between ’07-01-07’ and ’11-01-07’;

Пример 9:

Выбрать информацию по заводам, у которых поле «телефон» пустое: select kodz from zavod where telz is null;

Пример 10:

Выбрать информацию по заводам, у которых поле «телефон» заполнено: select kodz from zavod where telz is not null;

Синонимы и их применение при выборке данных.

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

create [public] synonym имя_синонима for имя_польз.имя_объекта;

(public означает, что данный синоним может использоваться любым пользователем.)

Пример 11:

Запрос, приведенный в примере № 3 можно записать короче: select b.kodz, b.namez, a.koddz, a.kolvo, a, data

from ZakupkaD a , Zavod b

where b.kodz=a.kodz and b.kodz=2;

Пример 12:

Создать синоним для таблицы Закупка деталей для пользователя студент: create synonym zakd for student.Zakupkad;

Подзапросы.

Запросы, в которых используются несколько предложений select. Могут быть однострочные (возвращают одну строку :в условии используются знаки равенства/ неравенства) и многострочные (подзапрос

возвращает несколько строк: используется in)

16

Пример 13:

Выбрать детали, которые покупались у заводов, в названии которых есть слово «лак»

select * from zakupkad where kodz in

( select kodz from zavod

where namez like ‘%лак%’ or namez like ‘%Лак%’ );

Представления

Пример 1. Сортировка:

Выбрать все записи из таблицы Закупка деталей и отсортировать по коду

детали:

 

 

 

 

select * from zakupkad

order by koddz;

KODDZ KODZ KOLVO PRICED DATA

---------- ---------- ---------- ---------- ------------

31

2

8

30

07.01.06

31

2

8

30

12.02.06

32

2

1

35

10.01.06

32

2

1

35

15.02.06

41

4

4

48

11.01.06

41

4

4

48

16.03.05

Возрастание ( ASC ) или убывание ( DESC ) для каждого столбца. По умолчанию установлено – возрастание

SELECT * FROM Orders ORDER BY cnum DESC;

Пример 2. Группировка:

Посчитать сколько раз покупали ту или иную деталь:

select koddz, count(data) from zakupkad

17

group by koddz;

KODDZ COUNT(DATA)

---------- -----------

312

322

412

ЗАМЕЧАНИЕ: в предложении group by указывается поле, которое обязательно должно присутствовать в предложении select, в отличие от предложения order by. Также, в предложении group by можно указывать несколько полей, в этом случае группировка будет последовательна сначала по одному полю, потом по второму.

Пример 4. Конкатенация (объединеие):

ЗАМЕЧАНИЕ: в предложениях select можно объединять значения двух или более полей (например, если ФИО разбито на 3 поля) и добавлять сторонний текст.

Вывести данные из примера №2, используя возможности конкатенации: select 'Деталь'||' '||koddz||' '||'покупалась'||' '||count(data)||'раз(-а)'

from zakupkad group by koddz;

'ДЕТАЛЬ'||''||KODDZ||''||'ПОКУПАЛАСЬ'||''||COUNT(DATA)||'РАЗ(-А)

----------------------------------------------------------------

Деталь 31 покупалась 2раз(-а) Деталь 32 покупалась 2раз(-а) Деталь 41 покупалась 2раз(-а)

Пример 5. Синонимы столбцов, ввод собственного текста:

При выполнении запросов в примерах 2-4, в качестве имени поля выводиться то, что пишется в предложениях select. Вид результата можно привести в более удобный для пользователя вид с помощью синонимов столбцов.

18

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

Название_завода.

select kodz Код, namez Название from zavod;

КОД

НАЗВАНИЕ

-----

----------------------------------------

1

Стекольный завод №1

2Лакокрасочный завод

4Деревообработывающий завод № 5

5Завод по изготовлению металлоконструкций

На базе примера № 3:

select Sum((KOLVO)*(PRICED)) Сумма from zakupkad where koddz=31;

СУММА

----------

480

Пример 6. Выборка неповторяющихся (уникальных) записей:

Добавим в таблицу Закупка деталей дублирующую строку со значениями

KODDZ KODZ KOLVO PRICED DATA

---------- ---------- ---------- ---------- ------------

41 4 4 48 11.01.06

Сделать выборку данных из всех полей таблицы Закупка деталей, исключая повторяющиеся записи:

select distinct * from zakupkad;

Таким образом дублирующяся запись пропущена, выведено 6 строк.

Пример 7. Применение NOT:

19

Выбрать информацию по заводам, у которых поле «телефон» не пустое:

select kodz

from zavod

where telz is not null;

АНАЛОГИЧНО:

 

select kodz

from zavod

where not telz is null;

Выбрать информацию по деталям, которые закупались в одну из дат: select * from zakupkad where data not in (’07-01-07’, ’10-01-07’, ’11-01-

07’);

АНАЛОГИЧНО:

select * from zakupkad where not data in (’07-01-07’, ’10-01-07’, ’11-01- 07’);

Пример 8. Применение агрегатных функций:

* COUNT - считает число значений в данном столбце, или число строк в таблице (count (*), например) . Когда она считает значения столбца, она используется с DISTINCT чтобы производить счет чисел различных значений в данном поле. Если вместо DISTINCT указать |ALL, то в результате будет выведено число строк, в которых указанное поле не нулевое.

SQL> select * from u;

I L P N

---------- --------------- --------------- ---------------

1

b

1

Бухгалтер

2

p

2

Плановик

3

m

3

Менеджер

4

 

4

Гость

SQL> select count(l)

20

Источник: https://studfile.net/preview/16527141/