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

4.4.2. Створення таблиці. Оператор create table

Процедура створення таблиці є більш стандартизованою. Базовий синтаксис від­повідного оператора є таким:

CREATE TABLE <ім'я таблиці> (<поле 1> <тип даних 1> [ NOT NULL ] [. <поле 2> <тип даних 2> [ NOT NULL ]]...)

Після ключових слів CREATE TABLE задаються ім'я таблиці та імена стовпців з ти­пами даних і деякими іншими характеристиками. Специфікатор NOT NULL забороняє введення у стовпець NULL-значень і застосовується зокрема до ключових полів.

Типи даних

Кожна система має свої типи даних. Наведемо типи даних у СКБД Oracle (табл. 4.2).

Таблиця 4.2. Типи даних у СКБД Oracle

Тип даних Коментарі

CHAR Текстові рядки довжиною від 1 до 255 символів. Довжина рядків фіксована

VARCHAR2 Текстові рядки довжиною від 1 до 2000 символів. Довжина рядків змінна

DATE Дата: рік, місяць, день, година, хвилина, секунда

LONG Рядок символьних даних змінної довжини до 2 Гбайт

LONG RAW Двійкові дані довжиною до 2 Гбайт

NUMBER Додатні чи від'ємні числа з фіксованою чи плаваючою комою

RAW Двійкові дані довжиною до 255 байтів

ROW ID Шістнадцятковий рядок, що містить унікальну адресу рядка в таблиці

Унікальні значення

Певні системи надають можливість зазначати, що те чи інше поле має містити унікальні (не повторювані) значення. Це особливо важливо для ключових полів. Інші системи, наприклад Oracle та SQL Server, дають змогу оголошувати унікаль­ні (UNIQUE) індекси. Є системи, в яких визначено тип даних, що його значення ав­томатично надаються створюваним рядкам. Ці значення є унікальними в межах таблиці протягом усього часу її існування. В Oracle таким типом даних є R0WID. Окрім того, в Oracle модифікатор UNIQUE застосовується для позначення полів, що разом забезпечують унікальність записів у межах таблиці.

Запит 4.48

Створити таблицю ФАКУЛЬТЕТ (застосовуємо типи даних Oracle).

CREATE TABLE ФАКУЛЬТЕТ (#F NUMBER (10).

Назва CHAR(50) NOT NULL.

Декан CHAR(25).

Корпус CHAR(5).

Фонд NUMBER(6.2))

Створення таблиці на базі існуючої

Для створення таблиць найчастіше використовують команду CREATE TABLE. Однак деякі системи надають альтернативний спосіб означення таблиць із використан­ням формату та даних наявної таблиці. Цей метод корисний для вибирання да­них із таблиці з метою тимчасового зберігання та модифікації. В СКБД Oracle синтаксис цієї команди виглядає так:

CREATE TABLE <нова таблиця>(<список полі в>)

AS (SELECT <список полів>

FROM <стара таблиця> [WHERE...])

Ця команда дає змогу створити нову таблицю з типами даних полів наявної таблиці та за необхідності перейменувати поля.

4.4.3. Модифікація таблиці. Оператор ALTER TABLE

Можливі ситуації, коли вже створена таблиця не відповідає зміненим вимогам до бази даних. Команда ALTER TABLE дає змогу змінити структуру таблиці після її створення: додати до вже визначеної таблиці стовпець або змінити наявний. Синтаксис команди такий:

ALTER TABLE <iм'я таблиці> [ADD <поле> <означення поля>|

ALTER <поле> <параметри>|

DROP <поле> <параметри>]

4.4.4. Видалення таблиці. Оператор DROP TABLE

У SQL є команда, призначена для видалення з бази даних усієї таблиці. Оператор DROP TABLE видаляє таблицю з усіма зв'язаними з нею віртуальними таблицями й індексами. Найчастіше він застосовується до тимчасових таблиць, які видаля­ються через певний час після створення. Синтаксис команди такий:

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

4.4.5. Видалення бази даних. Оператор DROP DATABASE

Команда DROP DATABASE застосовується для видалення всієї бази даних і має такий синтаксис:

DROP DATABASE <ім'я бази даних>

4.5. Віртуальні таблиці та індекси

У цьому підрозділі ми розглянемо два засоби SQL, які дають змогу зображувати дані не в тому вигляді, в якому вони зберігаються в БД. Мова йтиме про віртуаль­ні таблиці та індекси.

4.5.1. Використання віртуальних таблиць

Віртуальна таблиця — це пойменована таблиця, одержана в результаті виконан­ня оператора SELECT з можливою заміною імен стовпців.

Віртуальна таблиця застосовується для створення складних запитів. Вона мо­же використовуватися в операторах SELECT, INSERT, INPUT, UPDATE, DELETE, хоча фізич­но не займає місця в базі даних, як звичайна таблиця. Синтаксис створення вір­туальної таблиці такий:

CREATE VIEW <віртуальна таблиця> [(<список полів>)] AS

SELECT <список полі в>

FROM <імена таблиць> [WHERE ...] [WITH CHECK OPTION]

Необов'язкова фраза WITH CHECK OPTION (з контролем) вказує на те, що для опе­рацій INSERT та UPDATE над цією таблицею має здійснюватися контроль, який забез­печує виконання умов, заданих у фразі WHERE підзапиту.

Проста віртуальна таблиця

Це віртуальна таблиця, що є копією вихідної, але має інше ім'я:

CREATE VIEW КОПІЯ_ФАКУЛЬТЕТУ AS

SELECT *

FROM ФАКУЛЬТЕТ

У результаті виконання наведеного оператора створюється віртуальна табли­ця КОПІЯ_ФАКУЛЬТЕТУ, що є точною копією таблиці ФАКУЛЬТЕТ. Можна також створю­вати віртуальні таблиці на базі інших віртуальних таблиць.

Вибирання стовпців

До віртуальної таблиці можна копіювати окремі стовпці вихідної таблиці:

CREATE VIEW ДЕКАНИ_ФАКУЛЬТЕТІВ (Назва. Декан) AS

SELECT *

FROM ФАКУЛЬТЕТ

Перейменування стовпців

Синтаксис створення віртуальних таблиць дає змогу перейменовувати стовпці вихідної таблиці. Для цього необхідно явно зазначити стовпець у фразі SELECT та імена стовпців у фразі CREATE VIEW:

CREATE VIEW ВИКЛАДАЧ_ПРІЗВИЩЕ_П0САДА (Прізвище. Положення) AS SELECT Прізвище. Посада FROM ВИКЛАДАЧ

Складні конструкції

Фраза WHERE у складі оператора CREATE VIEW може містити підзапити. Наведемо приклад.

Запит 4.49

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

CREATE VIEW ВИКЛАДАЧ_2 (Прізвище. Посада) AS SELECT ВИКЛАДАЧ.Прізвище. Посада

FROM ФАКУЛЬТЕТ. КАФЕДРА. ВИКЛАДАЧ

WHERE ФАКУЛЬТЕТ.#F = КАФЕДРА.#F AND

КАФЕДРА.#D = ВИКЛАДАЧ.#D AND ФАКУЛЬТЕТ.Назва = "інформатики" AND ВИКЛАДАЧ.Прізвище IN

(SELECT ВИКЛАДАЧ.Прізвище FROM ФАКУЛЬТЕТ. КАФЕДРА. ВИКЛАДАЧ

WHERE ФАКУЛЬТЕТ.#F = КАФЕДРАМ AND КАФЕДРА.#D = ВИКЛАДАЧ.#D ФАКУЛЬТЕТ.Назва ф "інформатики")

Обмеження, накладені на структуру запиту в операторі CREATE VIEW

SQL накладає певні обмеження на структуру запиту, що використовується для означення віртуальної таблиці: в ньому забороняється застосовувати оператор UNION та фразу ORDER BY.

Зміна даних через віртуальні таблиці

Віртуальні таблиці можна використовувати в операторах UPDATE, INSERT, DELETE для зміни даних у БД, але в цьому разі слід дотримуватися таких правил:

  • забороняється застосовувати оператор DELETE до віртуальних таблиць, визна­чених на багатьох базових таблицях;

  • директиву INSERT дозволяється використовувати лише в тому випадку, якщо віртуальна таблиця містить усі значення NOT NULL-стовпця базової таблиці;

  • під час додавання чи оновлення через віртуальну таблицю всі записи, що онов­люються, мають належати одній і тій самій фізичній таблиці;

  • забороняється додавати чи оновлювати записи через віртуальну таблицю, ви­значену із застосуванням модифікатора DISTINCT;

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

Застосування віртуальних таблиць

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

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

  • Захист даних. Надаючи користувачам доступ до певної інформації лише че­рез віртуальні таблиці, можна вирішити проблему захисту даних.

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

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

Видалення віртуальної таблиці

Для видалення віртуальної таблиці застосовується оператор DROP VIEW. Його син­таксис такий:

DROP VIEW <ім'я віртуальної таблиці>

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]