refik.in.ua 1

Тема: Мова SQL. Оператори для роботи із БД

1. Типи даних

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

3. Модифікація таблиці

4. Видалення таблиць

1. Типи даних
У мові SQL92S підтримуються наступні типи даних:

  • CHARACTER(n) або CHAR(n) - символьні рядки постійної довжини в п символів. При завданні даного типу під кожне значення завжди приділяється п символів, і якщо реальне значення займає менш, ніж п символів, те СУБД автоматично доповнює відсутні символи пробілами.

  • NUMERIC[(n,m)] - точні числа, тут n - загальна кількість цифр у числі, m - кількість цифр ліворуч від десяткової крапки.

  • DECIMAL[(n,m)] - точні числа, тут n - загальна кількість цифр у числі, m - кількість цифр ліворуч від десяткової крапки.

  • DEC[(n,m)] - те ж, що й DECIMAL[(n,m)].

  • INTEGER або INT - цілі числа.

  • SMALLINT - цілі числа меншого діапазону.

  • VARCHAR(n) - рядка символів змінної довжини.

  • NCHAR(N) - рядка локалізованих символів постійної довжини.

  • NCHAR VARYING(n) - рядка локалізованих символів змінної довжини.

  • BIT(n) - рядок битов постійної довжини.

  • BIT VARYING(n) - рядок битов змінної довжини.

  • DATE - календарна дата.

  • ТIMESТАМР(точність) - дата й час.

  • INTERVAL - часовий інтервал.


^ 2. Створення таблиці
Оператор CREATE TABLE використається для того, щоб створювати таблиці. Хоча безпосередно створення таблиці виявляється зовсім простою справою, перш, ніж використати оператор CREATE TABLE, потрібно з усією старанністю підійти до питання планування структури таблиці.

От кілька простих питань, на які при створенні таблиці потрібно одержати відповіді.

• Якого типу дані будуть уводитися в таблицю?

• Яким повинне бути ім'я таблиці?

• Яким стовпцем (або стовпцями) буде задаватися ключове поле (складовій ключ)?

• Які імена варто привласнити стовпцям (полям)?

• Які типи даних варто призначити стовпцям?

• Який вибрати довжину кожного зі стовпців?

• Які стовпці таблиці будуть вимагати обов'язкового уведення даних?

Одержавши відповіді на всі ці питання, не становить праці побудувати підходящий оператор CREATE TABLE і застосувати його.

Синтаксис оператора для створення таблиць буде наступним:

CREATE TABLE ІМ'Я_ТАБЛИЦІ ( ПОЛЕ1 ТИП ДАНИХ [ NOT NULL ] , ПОЛЕ2 ТИП ДАНИХ [ NOT NULL ] , ПОЛІЗ ТИП ДАНИХ [ NOT NULL ] , ПОЛЕ4 ТИП ДАНИХ [ NOT NULL ] , ПОЛЕ5 ТИП ДАНИХ [ NOT NULL ] ) ;

^ 3. Модифікація таблиці

Команда ALTER TABLE

Таблицю можна модифікувати й після її створення за допомогою команди ALTER TABLE. За допомогою цієї команди можна додавати й видаляти стовпці, міняти визначення стовпців, додавати й видаляти обмеження, а в деяких реалізаціях і модифікувати значення, що задають ключовим словом STORAGE.

Стандартний синтаксис команди ALTER TABLE наступний:

^ ALTER TABLE ІМ'Я_ТАБЛИЦІ [MODIFY] [COLUMN ІМ'Я_СТОВПЦЯ] [ТИП ДАННЫХ|NULL NOT NULL] [RESTRICT|CASCADE]

[DROP] [CONSTRAINT ІМ'Я_ОБМЕЖЕННЯ]

[ADD] [COLUMN] ВИЗНАЧЕННЯ СТОВПЦЯ




Модифікація елементів таблиці

Зміна атрибутів стовпця

Атрибути стовпця задають правила подання даних у стовпці. За допомогою команди ALTER TABLE можна міняти атрибути стовпця. Під атрибутами тут розуміється наступне:

  • тип даних у стовпці;

  • довжина, точність або масштаб даних у стовпці;

  • . дозвіл або заборона мати в стовпці значення NULL.

У наступному прикладі команда ALTER TABLE використається для того, щоб змінити атрибути стовпця EMP_ID таблиці EMPLOYEE_TBL.

^ ALTER TABLE EMPLOYEE_TBL MODIFY (EMP_ID VARCHAR2(10));

Зміна таблиці.

Стовпцю вже був призначений тип даних VARCHAR2 (рядок символів змінної довжини), але тут була збільшена максимальна довжина рядка з 9 до 10.

^ Додавання стовпців, що вимагають обов'язкового уведення даних

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

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

1. Додайте стовпець, задавши йому атрибут NULL (це значить, що в стовпці не обов'язково повинні бути присутнім дані). 

2. Уведіть дані в кожний рядок нового стовпця таблиці.

3. Переконавшись, що стовпець містить значення в кожному з рядків таблиці, можна змінити атрибут стовпця на NOT NULL.

^ Зміна стовпців

При зміні стовпців таблиць потрібно враховувати цілий ряд моментів. Загальні правила наступні.

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

• Ширину стовпця можна зменшити тільки до найбільшої довжини наявних у цьому стовпці значень.

• Для стовпців із числовими даними ширину завжди можна збільшити.

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

• Для числових даних можна збільшувати або зменшувати число десяткових знаків.

• Тип даних у стовпці звичайно можна змінити.

У деяких реачизациях використання певних опцій оператора ALTER TABLE може бути заборонено. Наприклад, вам можуть не дозволити видаляти стовпці з таблиць. Замість цього вам потрібно буде видалити таблицю й створити нову з потрібним числом стовпців. Можуть виникнути проблеми з видаленням стовпців з таблиці, що залежить від стовпця з іншої таблиці, або з видаленням стовпця, на який посилається інша таблиця. Із цього приводу уважно переглянете документацію, пропоновану тією реалізацією SQL, з якої ви працюєте.




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

За допомогою комбінації операторів CREATE TABLE і SELECT можна створити копію вже існуючої таблиці. Стовпці нової таблиці будуть мати ті ж визначення. При цьому для копіювання можна вибрати як всі стовпці, так і тільки деяких.

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

Базовий синтаксис оператора створення таблиці із уже існуючої буде наступним.

^ CREATE TABLE ІМ'Я_НОВОЇ_ТАБЛИЦІ AS SELECT [ *|СТОЛБЕЦ!, СТОВПЕЦЬ2 ] FROM ІМ'Я_ТАБЛИЦІ [ WHERE ]

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

Спочатку виконаємо запит, щоб побачити дані в таблиці PRODUCTSJTBL.

^ SELECT * FROM PRODUCTSJTBL;

PROD_ID PROD_DESC COST




4. Видалення таблиць

Видалення таблиць є, мабуть, найпростішою справою. Якщо використається опція RESTRICT або на таблицю посилається подання або обмеження, використовуваний для видалення оператор DROP поверне помилку. При використанні опції CASCADE буде виконане видалення не тільки самої таблиці, але й всіх, що посилаються на таблицю подань і обмежень. Синтаксис оператора, використовуваного для видалення таблиць, що випливає:

^ DROP TABLE ІМЕНА_ТАБЛЙЦЫ [ RESTRICT|CASCADE ]

У наступному прикладі віддаляється тільки що створена нами таблиця.

DROP TABLE USER1.PRODUCTSJTMP;

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

^ Умови цілісності

УМОВИ цілісності забезпечують правильність і погодженість даних у реляционных базах даних. В основі цілісності даних у реляционных базах даних лежить поняття посилальної цілісності. Посилальна цілісність складається із цілого ряду умов цілісності, кожне з яких грає свою роль.

^ Ключові поля

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

^ Зовнішній ключ (foreign key) — це стовпець у дочірній таблиці, що засилає на ключ батьківської таблиці. Використання зовнішніх ключів є основним механізмом підтримки посилальної цілісності усередині реляционной бази даних. Стовпець, призначений зовнішнім ключем, використається для посилань на стовпець, певний як ключ в іншій таблиці.
^ Атрибут NOT NULL

У попередніх прикладах ключові слова NULL і NOT NULL використалися у всіх рядках з визначеннями стовпців після вказівки типу даних. Атрибут NOT NULL - це обмеження, яке можна призначити стовпцю в таблиці. Це обмеження не дозволяє залишати стовпці порожніми. Інакше кажучи, для стовпця, позначеного як NOT NULL, потрібне наявність даних у всіх рядках таблиці. Якщо атрибут NOT NULL не призначений для стовпця, для такого стовпця значенням за замовчуванням звичайно є NULL, що дозволяє мати порожні, значення в стовпці.

^ Використання умов перевірк

УМОВИ перевірки можна використати для перевірки правильності даних, що вводять у стовпець. Умови перевірки використаються для організації редагування даних у базі даних на нижньому рівні, хоча досить часто редагування даних буває організовано на рівні додатків. Загалом кажучи, звичайно при редагуванні є обмеження на вводять у таблиці або інші об'єкти дані, або на рівні самої бази даних або на рівні додатка, доступного користувачеві. Умови перевірки забезпечують додатковий рівень захисту даних.

Видалення умов

Кожне із призначених умов можна видалити за допомогою оператора ALTER TABLE з опцією DROP CONSTRAINT. Наприклад, щоб скасувати призначення ключа в таблиці EMPLOYEES, можна скористатися наступною командою.

ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;

Зміна таблиці.

У деяких реалізаціях SQL пропонуються спеціальні скорочення для видалення певних умов. Наприклад, щоб видалити ключ таблиці в Oracle, можна скористатися наступною командою.

ALTER TABLE EMPLOYEES DROP PRIMARY KEY;

Зміна таблиці.