Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Інструкції SQL та їх приклади




Інструкції SQL поділяються на такі категорії:

• інструкції Мови Визначення Даних (DDL- data definishion language);

• інструкції Мови Маніпулювання Даними (DML- data manipulation language).

 

Інструкції DDL використовуються для створення, зміни, ви­лучення об'єктів бази даних, зміни імен схеми бази даних, вилу­чення даних.

Створення таблиць.

Для створення таблиць використовується інструкція CREATE TABLE. Наприклад, інструкція створення таблиці ПРАЦІВНИКИ буде мати такий вигляд: CREATE TABLE ПРАЦІВНИКИ ([ТАБЕЛЬНИЙ НОМЕР] DOUBLE, [ПРІЗВИЩЕ] TEXT (20), [ПОСАДА] TEXT (15), [ОКЛАД] FLOAT);

Додавання та вилучення полів.

За допомогою команди ALTER TABLE можна додавати, вилучати та змінювати поля. Для дода­вання поля використовується параметр ADD COLUMN, для ви­лучення стовпчика — DROP COLUMN.

Наприклад, для додавання у таблицю ПРАЦІВНИКИ поля ДОМАШНЯ АДРЕСА типа TEXT довжиною ЗО символів потрібно записати інструкцію такого вигляду:

ALTER TABLE ПРАЦІВНИКИ ADD COLUMN [ДОМАШНЯ АДРЕСА] TEXT (ЗО);

Для змінення поля спочатку необхідно його вилучити, а потім -додати. Наприклад, необхідно збільшити розмір поля ПОСАДА до 25 символів:

ALTER TABLE ПРАЦІВНИКИ DROP COLUMN [ПОСАДА];

ALTER TABLE ПРАЦІВНИКИ ADD COLUMN [ПОСАДА ] TEXT (25);

Створення та вилучення індексів. Індекс можна створити зи допомогою інструкцій CREATE TABLE, CREATE INDEX та ALTER TABLE. Під час створення індексу необхідно задавати його тип, який може приймати такі значення:

• UNIQUE — визначає поле або декілька полів (складений індекс) як унікальний ключ;

• PRIMARY KEY — визначає поле або набір полів як первинний ключ;

• FOREIGN KEY — визначає поле або декілька полів як зовнішній ключ.

Наприклад, для таблиці ТАБЕЛЬ необхідно створити первинний індекс за полями МІСЯЦЬ та ТАБЕЛЬНИЙ НОМЕР різними методами:

a) під час створення таблиці: CREATE TABLE ТАБЕЛЬ ([МІ СЯЦЬ] INTEGER,[ТАБЕЛЬНИЙ НОМЕР] DOUBLE, [КІЛЬ КІСТЬ ВІДПРАЦЬОВАНИХ ДНІВ] DOUBLE, CONSTRAINТ ІНДЕКС_МІС_ТАБ PRIMARY KEY ([МІСЯЦЬ], [ТАБЕЛЬНИМ НОМЕР]));

b) створення індексу для існуючої таблиці за допомогою інструкції CREATE INDEX:

CREATE PRIMARY KEY INDEX ІНДЕКС_МІС_ТАБ ON ТАБЕЛЬ ([МІСЯЦЬ], [ТАБЕЛЬНИЙ Ho МЕР]); (Потрібно пам'ятати, що таблиця може мати тільки один індекс типу PRIMARY KEY)

c) додавання індексу до існуючої таблиці за допомогою інструкції ALTER TABLE:

ALTER TABLE ТАБЕЛЬ ADD CONSTRAINT ІНДЕКС_МІС_ТАБ PRIMARY KEY ([МІСЯЦЬ], [ТАБЕЛЬНИЙ НОМЕР]);

Інструкції DML використовуються для вибирання, додавання, вилучення та модифікації записів у таблицях.

Вибирання записів.

Інструкція SELECT вибирає записи з бази даних у тимчасовий об'єкт RECORDSET. Ці записи надалі можна виводити на екран, вилучати, змінювати та використовувати у звітах. Формат інструкції SELECT:

SELECT [предикат] <список полів або виразів>

FROM <таблиці>[ IN <зовнішня база даних>]

[WHERE <умова вибирання записів>]

[GROUP BY <список полів>]

[HAVING <критерій>]

[ORDER BY <список полів>]

[WITH OWNERACCESS OPTION ];

Предикат використовується для обмеження кількості за­писів, що вибираються, і може приймати такі значення: ALL (всі записи), DISTINCT (записи, значення в яких повторю­ються, вибираються один раз) або ТОР (вибирає задану кіль­кість перших записів). За замовчанням використовується зна­чення ALL.

Замість списку полів може задаватися символ «*», що означає вибрати всі поля із заданої таблиці. Полю або виразу можна на­дати нову назву таким чином: <ім'я поля(вираз)> AS <назва> (наприклад, АДРЕСА AS ДОМАШНЯ АДРЕСА; КІЛЬКІСТЬ* ЦІНА AS ВАРТІСТЬ).

Речення FROM використовується для задання таблиць, з яких вибираються записи. Якщо треба вибрати поля з кількох таблиць, перед їх іменами потрібно задавати ім'я таблиці з символом «.» (наприклад, ТАБЕЛЬ.ТАБЕЛЬНИЙ НОМЕР).

Речення WHERE визначає умову відбирання записів з бази даних. Якщо WHERE відсутнє, вибираються всі записи зада­них таблиць. Наприклад, для того, щоб вибрати записи за мі­сяці 1-ий, 2-ий, 3-ий можна записати: WHERE МІСЯЦЬ BET­WEEN 1 AND 3.

Приклад 1.

Вибрати всі поля всіх записів таблиці ТАБЕЛЬ:

SELECT * FROM ТАБЕЛЬ

Приклад 2.

Визначити прізвища перших трьох працівників, котрі мають більший оклад, ніж інші:

SELECT TOP 3 Працівники.Прізвище

FROM Працівники

ORDER BY Працівники.Оклад DESC;

У цьому прикладі DESC означає сортування записів у порядку зменшення значень.

Приклад 3.

Визначити КІЛЬКІСТЬ ВІДПРАЦЬОВАНИХ ДНІВ працівни­ка з табельним номером 1234 у 2 місяці:

SELECT Табель.[Кількість відпрацьованих днів]

FROM Табель

WHERE (((Табель.Місяць)=2) AND ((Табель.[Табельний номер])=1234));

 

Речення GROUP BY дозволяє з'єднати записи з однаковими значеннями заданих полів (таких як МІСЯЦЬ, ТАБЕЛЬНИЙ НОМЕР) в один запис. Якщо в інструкцію SELECT додати агре­гатну функцію SQL (SUM, AVG, тощо), для кожного запису створюється підсумкове значення. Наприклад, необхідно визна­чити суми окладів по кожній посаді. На рис. 10.141 відображено інструкцію запиту та результат його виконання.

 


Речення HAVING є необов'язковим і визначає, які згруповані записи повинні бути вибрані інструкцією SELECT з реченням GROUP BY. Наприклад, необхідно визначити суми окладів по посадах «Секретар» та «Економіст». У цьому випадку запит буде мати такий вигляд:

SELECT Працівники.Посада, SUМ([Оклад]) AS [Сума окладів]

FROM Працівники

GROUP BY Працівники.Посада

HAVING ПОСАДА="Економіст" OR ПОСАДА="Секретар";

Параметр WITH OWNERACCESS OPTION дає змогу корис­тувачам, котрі не мають доступу до початкових таблиць, пере­глядати дані запиту.

Для створення запитів на основі кількох таблиць речення FROM має такий формат: FROM <таблиця1> <тип з'єднання> <таблиця2> ON <таблиця1>.<поле>=<таблиця2>.<поле>. Тип з'єд­нання може приймати такі значення:

· INNER JOIN — з'єднуються записи з двох таблиць, в яких зустрічаються однакові значення у полі, яке є спільним для обох таблиць;

· LEFT JOIN — з'єднуються всі записи з першої таблиці і тільки ті записи з другої таблиці, в яких значення спільного поля збігаються;

· RIGHT JOIN з'єднуються всі записи з другої таблиці і тільки ті записи з першої таблиці, в яких значення спільного поля збіга­ються;

Наприклад, з таблиць РОБОЧІ ДНІ, ПРАЦІВНИКИ та ТА­БЕЛЬ треба вибрати записи за місяць, значення якого запрошу­ється під час виконання запиту та в яких нарахована заробітна плата >700. У запит включити лише такі поля: МІСЯЦЬ, ПРІ­ЗВИЩЕ, НАРАХОВАНО (розрахункове поле). Виконати сорту­вання записів по полям МІСЯЦЬ та ПРІЗВИЩЕ. Інструкція SQL для розв'язання цієї задачі буде мати такий вигляд: SELECT Табель.Місяць, Працівники.Прізвище, [Працівни­ки]![Оклад]/[Робочі дні]![Кількість робочих днів]*[Табель]![Кількість відпрацьованих днів] AS НАРАХОВАНО FROM [Робочі дні] RIGHT JOIN (Працівники RIGHT JOIN Табель ON Працівники.[Табельний номер] = Табель.[Табельний номер]) ON [Робочі дні].Місяць = Табель.Місяць WHERE (((Табель.Місяць)=[Уведіть номер місяця]) AND (([Працівники]![Оклад]/[Робочі дні-]![Кількість робочих днів]* [Табель]'.[Кількість відпрацьованих днів])>700)) ORDER BY Табель.Місяць, Працівники.Прізвище;

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...