БАЗИ ДАНИХ. МОВИ ЗАПИТІВ, УПРАВЛІННЯ ТРАНЗАКЦІЯМИ,

РОЗПОДІЛЕНА ОБРОБКА ДАНИХ

 

1.3  Базові оператори мови SQL та особливості їх запису

     

        1.3.1 Оператори мови визначення даних
             1.3.2 Оператори мови маніпулювання даними

 

Оператори мови SQL можна умовно розділити на чотири підмови:

- мова визначення даних (Data Definition Language – DDL);

- мова маніпулювання даними (Data Manipulation Language – DML);

- мова управління даними (Data Control Language – DCL); 

- мова управління транзакціями (Transaction Control Language – TCL).

Базові оператори мови SQL наведено в табл. 1.1

 

Таблиця 1.1 – Базові оператори мови SQL

Підмова

Назва оператора

Призначення

DDL

CREATE TABLE

створення таблиці

ALTER TABLE

зміна структури таблиці

DROP TABLE

видалення таблиці

DML

SELECT

вибірка з вмісту таблиці

INSERT

порядкове додавання даних в таблицю

UPDATE

модифікація даних таблиці

DELETE

видалення рядків таблиці

DCL

GRANT

надання прав користувачу

DENY

явна заборона для користувача

REVOKE

відміна заборони/дозволу користувачу

TCL

BEGIN TRANSACTION

початок транзакції

COMMIT

збереження змін, внесений транзакцією

ROLLBACK

відкат, повертає вміст таблиці БД в її початковий стан, зафіксований останньою командою COMMIT

 

Перш, ніж детально розглянути приклади використання операторів мови SQL, варто ознайомитися з особливостями їх запису.

У кожного об'єкту в БД є унікальне ім'я. Відповідно до стандарту ANSI/ISO, в SQL імена повинні містити від 1 до 18 символів, починатися з літери і не містити пропуски або спеціальні символи пунктуації. У стандарті SQL2 максимальне число символів в імені збільшене до 128, при цьому на практиці в різних СУБД дозволене використання в іменах таблиць спеціальних символів. Тому для підвищення переносності краще робити імена порівняно короткими і уникати використання в них спеціальних символів.

Стандарт ISO SQL не підтримує такі формальні терміни, як відношення, атрибут і кортеж. Замість них використовують терміни таблиця, стовпець, рядок.

Оператор SQL складається з зарезервованих слів, а також зі слів, що визначаються користувачем. Зарезервовані слова слід записувати саме так, як зазначено в стандарті, і не можна розбивати на частини для переносу з одного рядка на інший. Слова, визначені користувачем, задаються самим користувачем (у відповідності з певними синтаксичними правилами) і являють собою імена різних об'єктів бази даних – таблиць, стовпців, представлень, індексів і т.д.

Хоча в стандарті це не зазначено, однак у багатьох діалектах мови SQL вимагають завдання в кінці оператора деякого символу, що позначає закінчення його тексту; як правило, з цією метою використовується крапка з комою (;).

Більшість компонентів операторів SQL не відчутно до регістру. Одним важливим виключенням з цього правила є символьні літерали – дані, які повинні вводитися точно так, як були введені відповідні їм значення, що зберігаються в базі даних. Наприклад, якщо в базі даних зберігається значення прізвища ІВАНОВ’, а в умові пошуку вказано символьний літерал Іванов, то цей запис не буде знайдений. Всі нечислові значення даних завжди повинні бути взяті в одинарні лапки, а всі числові дані не повинні бути взяті в одинарні лапки. Нижче наведено приклад використання літералів для вставки даних в таблицю.

Оскільки мова SQL має вільний формат, окремі оператори SQL і їх послідовності будуть мати більш зручний для читання вигляд при використанні відступів і вирівнювання. Рекомендується дотримуватися наступних правил:

- кожна конструкція в операторі повинна починатися з нового рядка;

- початок кожної конструкції має бути позначено таким же відступом, що і початок інших конструкцій оператора;

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

Найчастіше для визначення формату операторів SQL використовують розширену форму системи позначень BNF (Backus Naur Form – форма Бекуса-Наура), відповідно до якої:

- прописні літери використовуються для запису зарезервованих слів;

- рядкові літери використовуються для запису слів, що визначаються користувачем;

- фігурні дужки визначають обов'язковий елемент, наприклад {а};

- квадратні дужки визначають необов'язковий елемент, наприклад [а].

Багато крапок (...) використовується для вказання необов’язкової можливості повторення конструкції від нуля до декількох разів.

 

1.3.1 Оператори мови визначення даних

 

Оператор створення таблиці має формат:

 

CREATE TABLE <ім’я таблиці>

(<ім’я стовпця><тип даних>[NOT NULL]

   [,<ім’я стовпця><тип даних>[NOT NULL]]…);

 

Обов’язковими операндами оператора є ім’я створюваної таблиці та ім’я хоча б одного стопвця (поля) з вказанням типу даних, що зберігатимуться у цьому стовпці. При створенні таблиці для окремих полів можуть вказуватись деякі додаткові правила контролю введення в них даних, наприклад конструкція NOT NULL (не пусте) означає, що в цьому стовці повинно бути визначене значення.

 

Приклад 1.15. Створення таблиці.

Нехай потрібно створити таблицю goods опису товарів, яка містить поля: type – вид товару, comp_id – ідентифікатор компанії-виробника,  name – назва товару і price – ціна.

Оператор створення таблиці goods матиме вигляд:

 

CREATE TABLE goods

(type SQL_CHAR(8) NOT NULL,

comp_id SQL_CHAR(10) NOT NULL,

name SQL_VARCHAR(20),

price SQL_DECIMAL(8,2));

 

Формат оператора зміни структури таблиці має вигляд:

 

ALTER TABLE < ім’я таблиці >

  ({ADD,MODIFY,DROP} <імя стовпця> [<тип даних>][NOT NULL]

     [,{ADD,MODIFY,DROP} < і’мя стовпця > [<тип даних >][NOT NULL]]…);

 

Зміна структури таблиці може полягати в додаванні (ADD), зміні (MODIFY) або видаленні (DROP) одного чи декількох стовпців таблиці. Правила запису оператора ALTER TABLE такі ж, як і оператора CREATE TABLE. При видаленні стовпця тип даних вказувати не потрібно.

 

Приклад 1.16. Додавання поля таблиці.

Нехай в раніше створену таблицю необхідно додати поле number, яке відводиться для зберігання величини запасу товару.

Оператор модифікації таблиці goods матиме вигляд:

 

ALTER TABLE goods (ADD number SQL_INTEGER);

 

Оператор видалення таблиці має вигляд:

 

DROP TABLE <ім’я таблиці>;

 

Оператор дозволяє видалити наявну таблицю. Наприклад, для видалення таблиці з ім’ям goods достатньо записати оператор виду:

 

DROP TABLE goods;

 

Для прискорення виконання запитів і операцій пошуку для одного або декількох стовпців таблиці можуть створюватись індекси. Створення та видалення індексів відбувається за допомогою операторів CREATE INDEX і DROP INDEX відповідно.

 

1.3.2 Оператори мови маніпулювання даними

 

Серед операторів мови маніпулювання даними найчастіше використовується оператор формування запитів SELECT. Зважаючи на його важливість, особливості використання даного оператора розглядатимуться у підрозділі 1.4. 

Для додавання нових записів в таблицю використовується оператор INSERT INTO, який має такий формат:

 

INSERT INTO <ім’я таблиці>

    [(<список стовпців>)]

   VALUES (<список значень>)

або

INSERT INTO <ім’я таблиці>

    [(<список стовпців>)]

    <вираз SELECT>

 

У першому форматі оператор INSERT призначений для введення нових записів з заданими значеннями у стовпцях. Порядок перерахування імен стовпців повинен відповідати порядку значень, перерахованих в списку операнда VALUES. Якщо <список стовпців> опущений, то у <списку значень> повинні бути перераховані всі значення в порядку стовпців структури таблиці.

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

 

Приклад 1.17. Введення записів.

Ввести в таблицю EMP запис про нового співробітника.

Оператор INSERT матиме такий вигляд:

 

INSERT INTO emp

    VALUES (‘Ivanov’, 7500, ‘Lee’, ‘cosmetics’);

 

Для внесення змін у наявні записи використовується оператор UPDATE, який має формат виду:

 

UPDATE <ім’я таблиці>

    SET <ім’я стовпця> = {<вираз>, NULL}

    [, SET <ім’я стовпця> = {<вираз>, NULL}…]

    [WHERE <умова>];

 

Виконання оператора UPDATE полягає у зміні значення у визначених оператором SET стовпцях таблиці для тих записів, які задовільняють умові, заданій оператором WHERE. Нові значення полів в записах можуть бути порожніми (NULL), або обраховуватись у відповідності до арифметичного виразу.

 

Приклад 1.18. Зміна записів.

Нехай необхідно збільшити на 500 грн. заробітну плату тим співробітникам, які отримують 3200 грн. (по таблиці EMP).

Запит, сформульований за допомогою оператора UPDATE, може виглядати так:

 

UPDATE emp

    SET sal=3700

    WHERE sal=3200;

 

Видалення записів з таблиці можливо здійснити за допомогою оператора DELETE, який має формат:

 

DELETE FROM <ім’я таблиці>

    [WHERE <умова>];

 

 Результатом виконання оператора DELETE є видалення з вказаної таблиці рядків, які задовольняють умові, визначеній операндом WHERE. Якщо операнд WHERE опущений, видаленню підлягають всі записи таблиці.

 

Приклад 1.19. Видалення записів.

У звязку з ліквідацією відділу «Іграшки» (toy), потрібно видалити з таблиці EMP всіх співробітників цього відділу.

Оператор DELETE для цієї задачі буде мати вигляд:

 

DELETE FROM emp

    WHERE dept=’toy’;

 

У прикладі dept – поле для введення назви відділу.

 

 

попередня     ЗМІСТ    наступна

 

 

Пєтух А.М., Романюк О.В., Романюк О.Н.

ВНТУ 2016