Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ по ОБД ИТП 2 сем.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
6.48 Mб
Скачать

4. Звіт про виконання роботи

Звіт повинен містити опис і результати роботи, що представляються в наступній послідовності:

1. Друк сценарію створення бази даних з коментарями, які повинні містити відомості про автора, дату створення, всіх виконуваних діях і пояснення до введених уручну операторів зміни даних.

2. Зведення про кількість введених в кожну таблицю тестових даних.

3. Перелік файлів, отриманих при виконанні лабораторної роботи з вказівкою їх імен, місця розташування, дати зміни і розмірів (сценарій, база даних, резервна копія бази даних, файл із звітом).

5. Контрольні питання

1. Що таке DML?

2. Які бувають різновиду оператора вставки нових даних?

3. Як видалити з таблиці відразу всі рядки?

4. Як видалити з таблиці лише деякі рядки?

5. Як змінити всі рядки таблиці?

6. Як змінити лише деякі рядки?

7. Написати синтаксис оператора вставки даних.

8. Написати синтаксис оператора видалення даних.

9. Написати синтаксис оператора оновлення даних.

10. Навести приклади операторів INSERT, DELETE, UPDATE.

11. Як додати дані в декілька таблиць?

12. Як видалити дані з декількох таблиць?

13. Як змінити дані в декількох таблицях?

14. Як заборонити зменшувати значення якого-небудь поля, але вирішити його збільшувати?

15. Як дозволити вносити зміни в базу даних лише в певні дні тижня?

16. Як дозволити вносити зміни лише певним користувачам?

3.7 Лабораторна робота №7

Тема роботи: Вибірка даних

Мета роботи: Вивчити оператор вибору даних з таблиць, який використовується в реляційних СУБД. Отримати навики роботи з оператором SELECT в програмі "IB Expert".

1 Теоретичні відомості

У SQL є єдиний оператор, який призначений для вибірки даних з бази даних. Як і оператори INSERT, DELETE і UPDATE він відноситься до підмножини DML.

Нижче приведений майже повний синтаксис оператора SELECT.

SELECT [DISTINCT | ALL]

{* | <величина> [, <величина> ...]}

[INTO : Змінна [, :Змінна ...]]

FROM <tableref> [, <tableref> ...]

[WHERE <умова пошуку>]

[GROUP BY Колонка [, Колонка ...]]

[HAVING <умова пошуку>]

[UNION [ALL] <select_expr>]

[ORDER BY <список сортування>];

<величина> = {Колонка | : Змінна | <константа> | <вираження>

| <функція> | udf ([<величина> [, <величина> ...]]) | NULL | USER}

[AS Псевдонім]

<константа> = Число | 'Рядок'

<вираження> = SQL вираження, що повертає одиничне значення

<функція> =

COUNT (* | [ALL] <величина> | DISTINCT <величина>)

| SUM ([ALL] <величина> | DISTINCT <величина>)

| AVG ([ALL] <величина> | DISTINCT <величина>)

| MAX ([ALL] <величина> | DISTINCT <величина>)

| MIN ([ALL] <величина> | DISTINCT <величина>)

| CAST(<величина> AS <тип даних>)

| UPPER(<величина>)

| GEN_ID(Імя_Генератора, <величина>)

<tableref> = {<joined_table> | table | view

| procedure[(<величина> [, <величина> ...])]} [Псевдонім]

<joined_table> = <tableref> <join_type> JOIN <tableref>

ON <умова пошуку> | (<joined_table>)

<join_type> = [INNER] | {LEFT | RIGHT | FULL } [OUTER]

<умова пошуку> =

<величина> <оператор порівняння>

{<величина> | (<select_one>)}

| <величина> [NOT] BETWEEN <величина> AND <величина>

| <величина> [NOT] LIKE <величина>

| <величина> [NOT] IN

(<величина> [, <величина> ...] | <select_list>)

| <величина> IS [NOT] NULL

|<величина> {>= | <=} <величина>

| <величина> [NOT] {= | < | >} <величина>

| {ALL | SOME | ANY} (<select_list>)

| EXISTS (<select_expr>)

| SINGULAR (<select_expr>)

| <величина> [NOT] CONTAINING <величина>

| <величина> [NOT] STARTING [WITH] <величина>

| (<умова пошуку>)

| NOT <умова пошуку>

| <умова пошуку> OR <умова пошуку>

| <умова пошуку> AND <умова пошуку>

<оператор порівняння> = {= | < | > | <= | >= | !< | !> | <> | !=}

<select_one> = оператор SELECT, що вибирає одну колонку та повертає рівно одне значення

<select_list> = оператор SELECT, що вибирає одну колонку, та повертає нуль або багато значень

<select_expr> = оператор SELECT, що вибирає декілька величин та повертає нуль або багато значень

<список сортування> =

{Колонка | Номер}

[ASC | DESC]

[, <список сортування> ...]

Деякі параметри, що входять в цього оператора, описані в таблиці. 1

Як видно з синтаксису оператора SELECT, обов'язковими є лише слово SELECT з переліком видаваних колонок і слово FROM.

Приклад простого оператора SELECT:

Видати перелік всіх службовців:

SELECT * FROM Employee;

Таблиця 1 - Опис параметрів оператора SELECT

Параметр

Опис

DISTINCT | ALL

DISTINCT – запобігає дублюванню даних, які витягуватимуть. ALL (за умовчанням) – приведе до витягання всіх даних

{* | <величина> [, <величина> ...]}

Зірочка (*) означає, що треба витягувати всі колонки з вказаних таблиць. <величина> [, <величина> ...] – витягує список вказаних колонок, змінних або виразів

INTO :Змінна [, :Змінна ...]

Використовується лише в тригерах і процедурах, що зберігаються, для операторів SELECT, що повертають не більш за один рядок. Вказується список змінних, в які витягуються величини

FROM <tableref> [, <tableref> ...]

Вказує список таблиць, переглядів і процедур, що зберігаються, з яких витягуються дані. Список може включати з'єднання і з'єднання можуть бути вкладеними

table

Ім'я що існує в базі даних таблиці

view

Ім'я що існує базі даних перегляду

procedure

Ім'я існуючої процедури, що зберігається, призначеної для використання в операторові SELECT

Псевдонім

Коротке альтернативне ім'я для таблиці, перегляду або колонки. Після опису в <tableref>, псевдонім може використовуватися для заслань на таблицю або перегляд

join_type

Задає типа з'єднання, яке може бути внутрішнім або зовнішнім

Нижче приведено декілька спрощених варіантів синтаксису оператора SELECT, що допомагають навчитися складати прості запити.

Спрощений синтаксис внутрішнього з'єднання (стандарт SQL-92):

SELECT Колонка [, Колонка ...] | *

FROM <tableref_left> [INNER] JOIN <tableref_right>

[ON <умова пошуку>]

[WHERE <умова пошуку>];

Спрощений синтаксис зовнішнього з'єднання:

SELECT Колонка [, Колонка ...] | *

FROM <tableref_left>

{LEFT | RIGHT | FULL} [OUTER] JOIN

<tableref_right>

[ON <умова пошуку>]

[WHERE <умова пошуку>];

Спрощений синтаксис використання підзапиту:

SELECT [DISTINCT] Колонка [, Колонка ...]

FROM <tableref> [, <tableref> ...]

WHERE

{expression {[NOT] IN | <оператор порівняння>}

| [NOT] EXISTS

}

(SELECT [DISTINCT] Колонка [, Колонка ...]

FROM <tableref> [, <tableref> ...]

WHERE <умова пошуку>

);