47620 (Мова запитів SQL), страница 2
Описание файла
Документ из архива "Мова запитів SQL", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "47620"
Текст 2 страницы из документа "47620"
name VARCHAR(20),
phone_num PHONE)
INSERT my_friends (name, phone)
VALUES (‘Pete F’, ‘(408)496-7223’);
Для видалення новоствореного типу: Sp_droptype phone
Атрибути NULL NOT NULL
Якщо в стовпці визначений атрибут НУЛЛ, це дозволяє опустити при вводі даних значення даного стовпчика. І напваки, якщо визначений атрибут НОТ НУЛЛ, стовпчик неможна залишати порожнім підчас вставки рядка. За замовчуванням задається останній атрибут. Атрибут визначається при створенні таблиці після зазначення типу стовпця. Напркилад
Create table t
(x int NULL, y char(10) NULLl). Для позначення атрибуту можна використовувати букви верхнього і нижнього регістрів. Атрибут НУЛЛ не допустимий для поля первинного ключа.
Властивість IDENTITY
Окрім опису типу і атрибуту НУЛЛ (НОТ НУЛЛ) для стовпців можна також визначити властивість IDENTITY (автоматичне збільшення значення). Потрібно вказати початкове значення, що автоматично розміщуватиметься у цьому стовпці в першому рядку таблиці, і приріст, який буде додаватися до попереднього значення стовпчика з кожним новим рядком.
IDENTITY(поч зн-ня, крок)
Id int IDENTITY(1, 11);
Цю властивість можна присвоїти стовпцю з типом всі INT, DECIMAL(p,0), NUMERIC(p,0) але ні в якому разі стовпцю з властивістю НУЛЛ. Якщо не вказати параметри для айдентіті, за замовчуванням встановвляться значення (1,1).
Обмежання.
Крім зазаначення безпосередньо типів та розміру полів таблиці можна задавати обмеження з метою забезпечення цілісності таблиці. При створенні таблиці (або, при її зміні), можна накладати обмеження на значення які можуть вводитися в поля. Якщо це зробити, SQL буде відхиляти будь-які значення які порушують критерії які визначені для того чи іншого поля.
Оператор CREATE TABLE дозволяє не лише створити первинні і зовнішні ключі, визначити унікальні стовпці і рядки, але й вказати обмеження, що використовуються при перевірці допустимих значень даних, а також стандартні значення для стовпців.
CREATE TABLE
( ,
,);
Обмежання PRIMARY KEY
При розробці таблиці визначається набір потенціальних ключів, тобто тих полів, значення яких однозначно ідентифікують кожен рядок таблиці. Причому з них, як наведено у попередньому прикладі, обирається в якості первинного ключа, для якого неможна використовувати атрибут NULL. Не може бути однакових значень цього поля для різних записів. Первинний ключ забезпечує цілісність даних у стовпцях та є першим кроком до цілісності у всій БД. СКБД створює унікальний індекс для стовпця первинного ключа. Якщо Ви не хочете, щоб створений індекс був кластеризованим, можна використовувати слово NONCLUSTERED при створенні обмеження.
CREATE TABLE customers
(customer_id INT IDENTITY CONSTRAINT customer_pk PRIMARY KEY NONCLUSTERED NOT NULL,
customer_name VARCHAR(20));
або якщо необхідно додати обмежання до вже створеної таблиці:
ALTER TABLE customers
ADD CONSTRAINT customer_pk PRIMARY KEY (customer_id);
Щодо інших потенціальних ключів, то вони є альтернативними ключами, і для позначення їх унікальності використовують унікальне обмеження (UNIQUE), яке гарантує відсутність дублікатів стовпця.
Унікальне обмеження має ті самі атрибути, що й первинний ключ з трьома відмінностями:
-
Унікальний стовпець може одноразово приймати значення NULL;
-
Заданим за замовчуванням типом індекса є NONCLUSTERED;
-
Одна таблиця може мати більше ніж одне обмеження.
Унікальний стовпець не може бути первинним ключем або входити до його складу.
Приклад:
CREATE TABLE Employees
(Name CHAR(20),
DEPARTMENT VARCHAR(20),
BADGE INTEGER UNIQUE);
Можна визначити групу полів як унікальну за допомогою команди обмеження таблиці — UNIQUE. Оголошення унікальності групи означає не унікальність значень складових цієї групи, а унікальність їх комбінації. Наприклад, кожного замовника обслуговує лише один продавець. Це означає, що кожна комбінація номера замовника (cnum) і номера продавця (snum) в таблиці, що створюється нижче повинна бути унікальною.
CREATE TABLE Customers
(cnum integer NOT NULL,
cname char (10) NOT NULL,
city char (10),
rating integer,
snum integer NOT NULL,
UNIQUE (cnum, snum));
Обмежання цілісності за посиланням, або зовнішній ключ
Після створення в одній таблиці поля первинного ключа, значення цього поля можуть використовуватися в іншій таблиці (таблицях) БД для створення істиних тверджень при характеристиці різних сутностей. В інших таблицях це поле вже не є унікальним, має назву поля зовнішнього ключа. FOREIGN KEY пов’язує один або декілька стовпців таблиці з ідентичним номером стовпців іншої таблиці. Його значення не можуть вийти за межі діапазону значень, який у першопочатковій таблиці задається значеннями цього ж поля але вже первинного ключа. Таким чином обмежання FOREIGN KEY використовується лише після створення у відповідній таблиці обмежання PRIMARY KEY для цього є поля. Причому, ці поля не обов’язково повинні мати однакову назв (хоча це бажано), але повинні мати один тип і однакову довжину. Коли в таблиці, де визначено обмежання PRIMARY KEY обновлюються значення стовпців, автоматично обновлюються значення в таблиці, для якої визначено обмежання FOREIGN KEY.
CREATE TABLE Department (Dname CHAR(20), ID_DEP INT Primary key NOT NULL, NUM INT) | CREATE TABLE Employees (Name CHAR(20), ID_DEP INT, BADGE INT) CONSTRAINT dept_id FOREIGN KEY (ID_DEP) REFERENCES Department (id_dep) |
Обмежання СНЕСК (перевірка)
Можна запобігти небажаним або помилковим введенням значень. Для цього використовується обмеження СНЕСК. Воно наклідає умову на значення, що вводиться, які можна ввести в один або декілька стовпців таблиці. Це область з якої стовпець може одержувати свої значення. СНЕСК виражається як булевий вираз, який приймає значення true або false.
У наступному прикладі обмежання СНЕСК визначає для стовпця CITY множину можливих значень і обмежує діапазон можливих значень стовпця Badge (номер службовця):
CREATE TABLE Employee
(Name CHAR(20),
id_DEP INT,
CITY VARCHAR(20)
CHECK (CITY IN (‘London’, ‘Paris’, ‘Rome’, ‘Athens’)),
Badge INT CHECK (Badge<100));
Додамо обмеження для поля номерів телефонів, таке щоб всі вони починалися з одного коду міста (415) та відповідали певному зразку. При цьому залишимо без перевірки ті поля, для яких вже були введені значення, навіть якщо вони не відповідають зразку:
ALTER TABLE myfriends
WITH NOCHECK
ADD CONSTRAINT friends_chk_num CHECK
(pho ne LIKE ‘(415)[0-9] [0-9][0-9] – [0-9][0-9][0-9][0-9]’);
Обмежання DEFAULT (значення за замовчуванням)
Коли ви вставляєте новий рядок у таблицю без вказання одного чи декількох значень чи при введені інформації залишаєте незаповненими поля, SQL повинен мати значення за замовчуванням для заповнення цих пропусків. Найбільш загальним значенням за замовчуванням є — NULL. Це значення за замовчуванням для будь-якого стовпця, якому не надано обмеження NOT NULL.
Значенння DEFAULT вказується в команді CREATE TABLE у той самий спосіб що і обмеження стовпця, хоча, з технічної точки зору, воно не має обмежуючих властивостей — воно не обмежує значення, які можнае вводити, а просто визначає, що може статися, якщо не ввести будь-яке з них. В якості обмеження обирають значення, що найчастіше зустрічається у стопці. Наприклад, в таблиці службовці, більшість робітників з Лондона, тому саме назву цього міста можна обрати значенням за замовчуванням для стовпця СІТУ:
CREATE TABLE Employee
(Name CHAR(20),
id_DEP INT,
CITY VARCHAR(20) DEFAULT ‘London’,
Badge INT CHECK (Badge<100));
100>100>