1. Skip to Menu
  2. Skip to Content
  3. Skip to Footer

Лекція 10 - SQL:Створення та модифікація таблиць та індексів – оператори CREATE, ALTER

Обмеження визначеності та унікальності – оператори NOT NULL, UNIQUE
Обмеження первинних ключів – оператор PRIMARY
Задання допустимих значень полів - оператор CHECK
Задання значень по замовчуванню DEFAULT

Обмеження визначеності та унікальності – оператори NOT NULL, UNIQUE

Для адекватного представлення інформації в базах даних на її таблиці необхідно накладати обмеження. Обмеження (CONSTRAINTS) можуть накладатися як на стовпчики (COLUMN CONSTRAINTS), так і на таблицю в цілому (TABLE CONSTRAINTS). Обмеження на стовпчик додаються в кінці його означення після визначення стовпчика та його довжини. Обмеження на таблицю розташовуються в кінці означення таблиці після означення останнього стовпчика.

  CREATE TABLE student1 
 (student_id INTEGER NOT NULL,
   surname  CHAR (40) NOT NULL, 
   name   CHAR (30) NOT NULL,  
   stipend  DECIMAL, 
   kurs   INTEGER, 
   city   VARCHAR (30), 
   birthday DATE,      
   univ_id    INTEGER);

Якщо при створенні таблиці обмеження NOT NULL не встановлювалося, а значення в нього ще не вносилися, його можна задати командою ALTER TABLE. Коли атрибут оголошується визначеним на нього можна накласти обмеження унікальності UNIQUE. В цьому випадку ввід повторюваних значень у відповідний атрибут блокується

  CREATE TABLE student1 
 (student_id   INTEGER NOT NULL UNIQUE, 
   surname     CHAR (25) NOT NULL, 
   name     CHAR (10) NOT NULL,  
   stipend  DECIMAL, 
   kurs   INTEGER, 
   city   VARCHAR (30), 
   birthday DATE,      
   univ_id    INTEGER);

Обмеження на таблицю UNIQUE використовується для забезпечення унікальності групи полів. Наприклад, коли не допускається, щоб в один день студент здавав більше одного екзамену застосовуємо наступне обмеження

  CREATE TABLE exam_marks 
 (exam_id   INTEGER NOT NULL, 
  student_id  INTEGER NOT NULL, 
  subj_id   INTEGER NOT NULL, 
  mark     INTEGER (2),  
  exam_date   DATE NOT NULL,      
  UNIQUE  stud_exam   (student_id  , exam_date )); 

В даному випадку обмеженню присвоєно ім’я stud_exam. Таке іменування дозволяє при порушенні обмеження отримати діагностику, що саме воно і було порушене.

Обмеження первинних ключів – оператор PRIMARY

Первинні ключі використовуються для забезпечення доступу до записів таблиць бази даних. Він може складатися з одного поля або кількох полів і поєднує умови визначеності та унікальності. Наприклад

CREATE TABLE student 
 (student _id  INTEGER PRIMARY KEY, 
   surname   VARCHAR (40) NOT NULL, 
   name       CHAR (10) NOT NULL,  
   stipend   DECIMAL, 
   kurs        INTEGER, 
   city         VARCHAR (30), 
   birthday   DATE,      
   univ_id    INTEGER);

   CREATE TABLE     exam_marks 
 (exam_id   INTEGER NOT NULL,      
student _id  INTEGER NOT NULL, 
   subj_id       INTEGER NOT NULL, 
   mark           INTEGER, 
   exam_date  DATE, 
  CONSTRAINT   EX_PR_KEY PRIMARY KEY (exam_id, student _id  ));

Задання допустимих значень полів - оператор CHECK

Обмеження CHECK дозволяє визначати умову, якій повинно задовольняти значення в даному полі або сукупності полів.

CREATE TABLE student 
 (student_id  INTEGER PRIMARY KEY, 
   surnamre   CHAR (25) NOT NULL, 
   name     CHAR (10) NOT NULL,  
   stipend   DECIMAL CHECK (stipend < 900), 
   kurs     INTEGER, 
   city     CHAR (15), 
   birthday    DATE,      
   univ_id   INTEGER); 

CREATE TABLE student 
 (student_id  INTEGER PRIMARY KEY, 
   surnamre   CHAR(25) NOT NULL, 
   name         CHAR (10) NOT NULL,  
   stipend      DECIMAL, 
   kurs           INTEGER, 
   city           CHAR(15), 
   birthday    DATE,      
   univ_id   INTEGER UNIQUE, 
  CHECK(   stipend   < 900 AND     univ_id   =  10 ));

Задання значень по замовчуванню DEFAULT

Коли при вводі значення деяких полів не встановлені, вони можуть бути введені, якщо визначені значення по замовчуванню за допомогою оператора DEFAULT.

CREATE TABLE student 
  (student _id   INTEGER PRIMARY KEY, 
   surname   VARCHAR (40) NOT NULL, 
   name     VARCHAR (30) NOT NULL,  
   stipend   INTEGER CHECK (STIPEND < 900), 
   kurs     INTEGER, 
   city     VARCHAR (40)  DEFAULT ‘Тернопіль’ , 
   birthday   DATE,      
   univ_id   INTEGER);

 

Додати коментар


Захисний код
Оновити

  •  Facebook 
  •  Vk 

Обрати мову

Хто на сайті

На сайті 88 гостей та відсутні користувачі