Вибір читачів
Популярні статті
Обмеження UNIQUEв SQLдозволяє ідентифікувати кожен запис у таблиці.
Якщо міститься обмеження стовпця UNIQUEу полі при створенні таблиці, база даних відхиляє будь-яку спробу введення в це поле для одного з рядків, значення, яке вже представлене в іншому рядку. Це обмеження може застосовуватися тільки до полів, які були оголошені як непусті ( NOT NULL), оскільки немає сенсу дозволити одному рядку таблиці мати значення NULL, а потім виключати інші рядки з NULLзначеннями як дублікати.
Приклад створення таблиці SQLз обмеженням UNIQUE:
CREATE TABLE Student
(Kod_stud integer NOT NULL UNIQUE,
Fam char (30) NOT NULL UNIQUE,
Adres char (50),
Коли оголошується поле Fam унікальним, дві Смирнові Марії можуть бути введені у різний спосіб- наприклад, Смирнова Марія та Смирнова М. Стовпці (не первинні ключі), чиї значення вимагають унікальності, називаються ключами-кандидатами або унікальними ключами. Можна визначити групу полів як унікальну за допомогою команди обмеження таблиці. UNIQUE. Оголошення групи полів унікальної, відрізняється від оголошення унікальними індивідуальних полів, оскільки це комбінація значень, а чи не просто індивідуальне значення, що має бути унікальним. Унікальність групи полягає в тому, що кілька рядків зі значеннями стовпців «a», «b» і «b», «a» розглядалися окремо один від одного.
Якщо база даних визначає, що кожна спеціальність належить одному і лише одному факультету, то кожна комбінація коду факультету (Kod_f) та коду спеціальності (Kod_spec) у таблиці Spec має бути унікальною. Наприклад:
CREATE TABLE Spec
(Kod_spec integer NOT NULL,
Kod_f integer NOT NULL,
Nazv_spec char (50) NOT NULL,
UNIQUE(Kod_spec, Kod_f));
Обидва поля в обмеженні таблиці UNIQUE все ще використовують обмеження стовпця - NOT NULL. Якби використовувалося обмеженнястовпця UNIQUEдля поля Kod_spec, таке обмеженнятаблиці було б необов'язковим. Якщо значення поля Kod_spec є різним для кожного рядка, то не може бути двох рядків з ідентичною комбінацією значень полів Kod_spec і Kod_f. Обмеженнятаблиці UNIQUEнайбільш корисно, коли індивідуальні поля не обов'язково мають бути унікальними.
Приклад створення таблиці Persons у MySQLз обмеженням UNIQUE:
CREATE TABLE Persons (
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE(P_Id)
);
Якщо після створення обмеження UNIQUEі в тому випадку, коли обмеження UNIQUEне має сенсу, UNIQUEможна видалити. Для цього використовуйте наступний SQL:
SQL Server / Oracle / MS Access:
ALTER TABLE table_name DROP CONSTRAINT uc_PersonID;
ALTER TABLE table_name DROP INDEX uc_PersonID;
У РОЗДІЛІ 17 , Ви дізналися як створюються таблиці. Тепер більш ретельно з цього місця ми покажемо вам, як ви можете встановлювати обмеження в таблицях. Обмеження - це частина визначень таблиці, яка обмежує значення, які ви можете вводити в стовпці. До цього місця в книзі, єдиним обмеженням на значення які ви могли вводити, були тип даних і розмір значень, що вводяться, які повинні бути сумісні з тими стовпцями в які ці значення поміщаються (як і визначено в команді CREATE TABLE або команді ALTER TABLE). Обмеження дають вам значно більші можливості, і скоро ви це побачите. Ви також дізнаєтесь як визначати значення за промовчанням у цьому розділі. За замовчуванням - це значення, яке вставляється автоматично в будь-який стовпець таблиці, коли значення для цього стовпця відсутнє в команді INSERT для цієї таблиці. NULL - це значення, що найбільш широко використовується за замовчуванням, але в цьому розділі буде показано як визначати й інші значення за замовчуванням.
Ви можете згадати, що NULL - це спеціальне позначення, яке відзначає поле як порожнє. NULL може бути корисним, коли є випадки, коли ви хочете бути від них гарантовано. Очевидно, що первинні ключі ніколи не повинні бути порожніми, оскільки це підриватиме їх функціональні можливості. Крім того, такі стать як імена, вимагають у більшості випадків, певних значень. Наприклад, ви напевно захочете мати ім'я для кожного замовника в таблиці Замовників. Якщо ви помістите ключові слова NOT NULL відразу після типу даних (включаючи розмір) стовпця, будь-яка спроба помістити значення NULL у цьому полі буде відхилена. Інакше SQL розуміє, що NULL дозволено.
Наприклад, давайте покращимо наше визначення таблиці Продавців, не дозволяючи поміщати NULL значення в стовпці snum або sname: CREATE TABLE Salespeople (Snum integer NOT, Sname char(10) NOT, city char(10), comm decimal); Важливо пам'ятати, що будь-якому стовпцю з обмеженням NOT NULL має бути встановлене значення в кожній пропозиції INSERT, що впливає на таблицю. За відсутності NULL SQL може не мати значень для встановлення в ці стовпці, якщо звичайно значення за замовчуванням, описане раніше в цьому розділі, вже не було призначено.
Якщо ваша система підтримує використання ALTER TABLE, щоб додавати нові стовпці до вже існуючої таблиці, ви можете ймовірно поміщати обмеження стовпців типу NOT NULL для цих нових стовпців. Однак, якщо ви наказуєте новому стовпцю значення NOT NULL, поточна таблиця повинна бути порожньою.
Безперечно, унікальні індекси - один із найпростіших і найефективніших методів розпорядження унікальності. З цієї причини деякі реалізації обмеження UNIQUE використовують унікальні індекси; тобто вони створюють індекс не повідомляючи вам про це. Залишається фактом, що ймовірність безладу в базі даних досить мала, якщо ви наказуєте унікальність разом з обмеженням.
Припустимо, наприклад, що ми розробили таблицю щоб стежити за всіма порядками щодня для кожного продавця. Кожен рядок такої таблиці становить суму чисел будь-яких порядків, а не просто індивідуальний порядок. У цьому випадку ми могли б усунути деякі можливі помилкипереконавшись, що на кожен день є не більше одного рядка для даного продавця, або що кожна комбінація полів snum і odate є унікальною. Ось як наприклад ми могли б створити таблицю з ім'ям Salestotal: CREATE TABLE Salestotal (cnum integer NOT NULL, odate date NULL, totamt decimal, UNIQUE (snum, odate)); Крім того, є команда, яку ви будете використовувати, щоб поміщати поточні дані в цю таблицю: INSERT INTO Salestotal
PRIMARY KEY може обмежувати таблиці чи їх стовпці. Це обмеження працює так само як і обмеження UNIQUE, за винятком, коли тільки один первинний ключ (для будь-якої кількості стовпців) може бути визначений для даної таблиці. Існує також різниця між первинними ключами і унікальністю стовпців у способі їх використовуватися із зовнішніми ключами, про які буде розказано в Розділі 19 . Синтаксис та визначення їх унікальності ті ж, що й для обмеження UNIQUE.
Первинні ключі не можуть дозволити значення NULL. Це означає, що подібно полям в обмеженні UNIQUE, будь-яке поле, що використовується в обмеженні PRIMARY KEY, має вже бути оголошено NOT NULL . Є покращений варіант створення нашої таблиці Продавців: CREATE TABLE Salestotal (snum integer NOT NULL PRIMARY KEY, sname char(10) NOT NULL UNIQUE, city char(10), comm decimal); Як ви бачите, унікальність (UNIQUE) полів може бути оголошена для тієї ж таблиці. Найкраще поміщати обмеження PRIMARY KEY в полі (або в поля) яке утворюватиме ваш унікальний ідентифікатор рядка, і зберегти обмеження UNIQUE для полів, які повинні бути унікальними логічно (такі як номери телефону або поле sname), а не для ідентифікації рядків.
Розгляньмо ще раз таблицю Продавців. Стовпець комісійних виражається десятковим числом і тому може бути помножений безпосередньо на суму придбань внаслідок чого буде отримано суму комісійних (у доларах) продавця з встановленим праворуч значком долара ($). Хтось може використати поняття відсотка, однак, можна про це й не знати. Якщо людина введе помилково 14 замість.14 щоб вказати у відсотках свої комісійні, це буде розцінено як 14.0, що є законним десятковим значенням, і буде нормально сприйнято системою. Щоб запобігти цій помилці, ми можемо накласти обмеження стовпця - CHECK щоб переконатися, що значення, що вводиться менше ніж 1. CREATE TABLE Salespeople (snum integer (comm< 1));
CREATE TABLE Salespeople (snum integer NOT NULL UNIQUE, sname char(10) NOT NULL UNIQUE, city char(10) CHECK, (city IN ("London", "New York", "San Jose", "Barselona")), comm decimal CHECK (comm Створимо таблицю Порядків: CREATE TABLE Orders (onum integer NOT NULL UNIQUE, amt decimal, odate date NOT NULL, cnum integer NOT NULL, snum integer NOT NULL); Як ми вже говорили у Розділі 2, тип DATЕ(ДАТА) широко підтримується, але не є частиною стандарту ANSI. Що ж робити, якщо ми використовуємо базу даних, яка слідує за ANSI, не розпізнає тип DATЕ? Якщо ми оголосимо поле odate будь-яким типом числа, ми не зможемо використовувати похилу межу вправо (/) або рису (-) як розділи. Оскільки номери, що друкуються, - це символи ASCII, ми можемо оголосити тип поля date - CHAR. Основна проблема в тому, що ми повинні використовувати одиночні лапки кожного разу, коли посилаємося на значення підлогу odate в запиті. Ні більшецієї проблеми там, де тип DATЕ став таким популярним. Як ілюстрація, давайте оголосимо поле odate - типом CHAR. Ми можемо принаймні накласти на нього наш формат з обмеженням CHECK: CREATE TABLE Orders (10) NOT NULL CHECK (odate LIKE "--/--/--- -"), cnum NOT NULL, snum NOT NULL); Крім того, якщо ви хочете, ви можете накласти обмеження, що гарантують, що введені символи - числа, і що вони - в межах значень нашого діапазону.
Фактично, ви могли б використовувати складне обмеження CHECK для вищезгаданого, якби знали заздалегідь, які мають бути комісійні у різних містах. Наприклад, ви могли б встановити обмеження типу цього: CHECK ((comm = .15 AND clty = "London") OR (comm = .14 AND city = "Barcelona") OR (comm = 11 AND city = "San Jose") ..) Ви отримали ідею. Чим накладати такий комплекс обмежень, ви могли б просто використовувати подання з пропозицією WITH CHECK OPTION, яка має всі ці умови у своєму предикаті (див. Главу 20 і для інформації про подання та WITH CHECK OPTION). Користувачі можуть звертатися до представлення таблиці замість таблиці. Однією з переваг цього буде те, що процедура зміни в обмеженні не буде такою хворобливою чи трудомісткою. Подання з WITH CHECK OPTION - хороший замінник обмеження CHECK, що буде показано у Розділі 21 .
Значення DEFAULT(ЗА УМОВЧАННЯМ) вказується в команді CREATE TABLE тим же способом, що і обмеження стовпця, хоча, з технічної точки зору, значення DEFAULT не обмежувального властивості - воно не обмежує значення які ви можете вводити, а просто визначає, що може статися якщо ви не введете будь-яку з них. Припустимо, що ви працюєте в офісі Нью-Йорка і переважна більшість ваших продавців живуть у Нью-Йорку. Ви можете вказати Нью Йорк як значення підлогу city, за замовчуванням, для вашої таблиці Продавців: CREATE TABLE Salespeople (snum integer NOT NULL UNIQUE, sname char(10) NOT NULL UNIQUE, city char(10) DEFAULT = "New York", comm decimal CHECK (comm< 1); Конечно, вводить значение Нью Йорк в таблицу каждый раз когда назначается новый продавец, не такая уж необходимость, и можно просто пренебречь им (не ввод его) даже если оно должно иметь некоторое значение. Значение по умолчанию такого типа, более предпочтительно, чем, например, длинный конторский номер указывающий на ваше собственное ведомство, в таблице Порядков. Длинные числовые значения - более расположены к ошибке, поэтому если подавляющее большинство (или все) ваших порядков должны иметь ваш собственный конторский номер, желательно устанавливать для них значение по умолчанию.
Інший спосіб використовувати значення за замовчуванням – це використовувати його як альтернативу для NULL. Так як NULL (фактично) невірний за будь-якого порівняння, іншому ніж IS NULL, він може бути виключений за допомогою більшості предикатів. Іноді, вам потрібно бачити порожні значення ваших полів, не обробляючи їх певним чином. Ви можете встановити значення за замовчуванням, типу нуль або пробіл, які функціонально менші за значенням, ніж просто не встановлене значення - порожнє значення (NULL). Відмінність між ними та звичайним NULL у тому, що SQL оброблятиме їх також як і будь-яке інше значення.
Припустимо, що замовникам не призначено оцінки спочатку. Кожні шість місяців, ви підвищуєте оцінку всім вашим замовникам, які мають оцінку нижче середньої, включаючи і тих, хто попередньо не мав жодного призначення оцінки. Якщо ви бажаєте вибрати всіх цих замовників як групу, наступний запит виключить усіх замовників з оцінкою = NULL: SELECT * FROM Customers WHERE rating< = 100; Однако, если вы назначили значение по умолчанию = 000, в поле rating, заказчики без оценок будут выбраны наряду с другими. Приоритет каждого метода - зависит от ситуации. Если вы будете делать запрос с помощью пол оценки, то захотите ли Вы включить строки без значений, или исключите их? Друга характеристика значений по умолчанию этого типа, позволит объявить Вам поле оценки - как NOT NULL. Если вы используете его по умолчанию, чтобы избежать значений = NULL, то это - вероятно хороша защита от ошибок.
Ви також можете використовувати обмеження UNIQUE або PRIMARY KEY в цьому полі. Якщо ви зробите це, то маєте на увазі, що тільки один рядок одночасно може мати значення за промовчанням. Будь-який рядок, який містить значення за замовчуванням, потрібно буде модифікувати, перш ніж другий рядок із установкою за замовчуванням буде вставлений. Це не так, як ви зазвичай використовуєте значення за промовчанням, тому обмеження UNIQUE та PRIMARY KEY (особливо останнє) зазвичай не встановлюються для рядків зі значеннями за умовчанням.
2. Створіть таблицю Продавців так щоб комісійні, за замовчуванням, становили 10%, не дозволялися значення NULL, щоб поле snum було первинним ключем, і щоб усі імена були в алфавітному порядку між A і M включно (враховуючи, що всі імена будуть надруковані в верхньому регістрі).
3. Створіть таблицю Порядків, будучи впевненими, що поле onum більше ніж поле cnum, а cnum більше ніж snum. Заборонено значення NULL у будь-якому з цих трьох полів.
Останнє оновлення: 09.07.2017
При створенні стовпців у T-SQL ми можемо використовувати низку атрибутів, які є обмеженнями. Розглянемо ці атрибути.
За допомогою виразу PRIMARY KEY стовпець можна зробити первинним ключем.
CREATE TABLE Customers (Id INT PRIMARY KEY, Age INT, FirstName NVARCHAR(20), LastName NVARCHAR(20), Email VARCHAR(30), Phone VARCHAR(20))
Первинний ключ унікально ідентифікує рядок таблиці. Як первинний ключ необов'язково повинні виступати стовпці з типом int, вони можуть представляти будь-який інший тип.
Установка первинного ключа лише на рівні таблиці:
CREATE TABLE Customers (Id INT, Age INT, FirstName NVARCHAR(20), LastName NVARCHAR(20), Email VARCHAR(30), Phone VARCHAR(20), PRIMARY KEY(Id))
Первинний ключ може бути складеним (compound key). Такий ключ може знадобитися, якщо у нас одразу два стовпці мають унікально ідентифікувати рядок у таблиці. Наприклад:
CREATE TABLE OrderLines (OrderId INT, ProductId INT, Quantity INT, Price MONEY, PRIMARY KEY(OrderId, ProductId))
Тут поля OrderId та ProductId разом виступають як складовий первинний ключ. Тобто в таблиці OrderLines не може бути двох рядків, де для обох з цих полів одночасно були б ті самі значення.
Атрибут IDENTITY дозволяє зробити стовпець ідентифікатором. Цей атрибут може бути призначений для стовпців числових типів INT, SMALLINT, BIGINT, TYNIINT, DECIMAL і NUMERIC. При додаванні нових даних до таблиці SQL Server інкрементуватиме на одиницю значення цього стовпця у останнього запису. Як правило, у ролі ідентифікатора виступає той самий стовпець, який є первинним ключем, хоча в принципі це необов'язково.
CREATE TABLE Customers (Id INT PRIMARY KEY IDENTITY, Age INT, FirstName NVARCHAR(20), LastName NVARCHAR(20), Email VARCHAR(30), Phone VARCHAR(20))
Також можна використовувати повну форму атрибуту:
IDENTITY(seed, increment)
Тут параметр seed вказує на початкове значення, з якого починатиметься відлік. А параметр increment визначає, наскільки збільшуватиметься таке значення. За умовчанням атрибут використовує такі значення:
IDENTITY(1, 1)
Тобто, відлік починається з 1. А наступні значення збільшуються на одиницю. Але ми можемо цю поведінку перевизначити. Наприклад:
Id INT IDENTITY (2, 3)
В даному випадку відлік почнеться з 2, а значення кожного наступного запису буде збільшуватися на 3. Тобто перший рядок матиме значення 2, другий - 5, третій - 8 і т.д.
Також слід враховувати, що у таблиці лише один стовпець повинен мати такий атрибут.
Якщо ми хочемо, щоб стовпець мав лише унікальні значення, то для нього можна визначити атрибут UNIQUE.
CREATE TABLE Customers (Id INT PRIMARY KEY IDENTITY, Age INT, FirstName NVARCHAR(20), LastName NVARCHAR(20), Email VARCHAR(30) UNIQUE, Phone VARCHAR(20) UNIQUE)
В даному випадку стовпці, які представляють електронна адресаі телефон буде мати унікальні значення. І ми не зможемо додати до таблиці два рядки, які мають значення для цих стовпців співпадати.
Також ми можемо визначити цей атрибут на рівні таблиці:
CREATE TABLE Customers (Id INT PRIMARY KEY IDENTITY, Age INT, FirstName NVARCHAR(20), LastName NVARCHAR(20), Email VARCHAR(30), Phone VARCHAR(20), UNIQUE(Email, Phone))
Щоб вказати, чи може стовпець приймати значення NULL, при визначенні стовпця можна задати атрибут NULL або NOT NULL . Якщо цей атрибут явно не буде використаний, то за умовчанням стовпець допускатиме значення NULL. Винятком є той випадок, коли стовпець виступає ролі первинного ключа - у разі за умовчанням стовпець має значення NOT NULL.
CREATE TABLE Customers (Id INT PRIMARY KEY IDENTITY, Age INT, FirstName NVARCHAR(20) NOT NULL, LastName NVARCHAR(20) NOT NULL, Email VARCHAR(30) UNIQUE, Phone VARCHAR(20) UNIQUE)
Атрибут DEFAULT визначає значення за промовчанням для стовпця. Якщо при додаванні даних для стовпця не буде передбачено значення, то для нього використовуватиметься значення за замовчуванням.
CREATE TABLE Customers (Id INT PRIMARY KEY IDENTITY, Age INT DEFAULT 18, FirstName NVARCHAR(20) NOT NULL, LastName NVARCHAR(20) NOT NULL, Email VARCHAR(30) UNIQUE, Phone VARCHAR(20) UNIQUE
Тут для стовпця Age передбачено значення за промовчанням 18.
Ключове слово CHECK визначає обмеження для діапазону значень, які можуть зберігатися в стовпці. Для цього після слова CHECK вказується в дужках умова, якій має відповідати стовпець або кілька стовпців. Наприклад, вік клієнтів не може бути меншим за 0 або більше 100:
CREATE TABLE Customers (Id INT PRIMARY KEY IDENTITY, Age INT DEFAULT 18 CHECK(Age >0 AND Age< 100), FirstName NVARCHAR(20) NOT NULL, LastName NVARCHAR(20) NOT NULL, Email VARCHAR(30) UNIQUE CHECK(Email !=""), Phone VARCHAR(20) UNIQUE CHECK(Phone !=""));
Тут також вказується, що стовпці Email і Phone не можуть мати порожній рядок як значення (порожній рядок не еквівалентний NULL).
Для з'єднання умов використовується ключове слово AND. Умови можна задати у вигляді операцій порівняння більше (>), менше (<), не равно (!=).
Також за допомогою CHECK можна створити обмеження загалом для таблиці:
CREATE TABLE Customers (Id INT PRIMARY KEY IDENTITY, Age INT DEFAULT 18, FirstName NVARCHAR(20) NOT NULL, LastName NVARCHAR(20) NOT NULL, Email VARCHAR(30) UNIQUE, Phone VARCHAR(20) UNI 0 AND Age<100) AND (Email !="") AND (Phone !="")))
За допомогою ключового слова CONSTRAINT можна встановити ім'я для обмежень. Як обмеження можуть використовуватися PRIMARY KEY, UNIQUE, DEFAULT, CHECK.
Імена обмежень можна встановити на рівні стовпців. Вони вказуються після CONSTRAINT перед атрибутами:
CREATE TABLE Customers (Id INT CONSTRAINT PK_Customer_Id PRIMARY KEY IDENTITY, Age INT CONSTRAINT DF_Customer_Age DEFAULT 18 CONSTRAINT CK_Customer_Age CHECK(Age >0 AND Age< 100), FirstName NVARCHAR(20) NOT NULL, LastName NVARCHAR(20) NOT NULL, Email VARCHAR(30) CONSTRAINT UQ_Customer_Email UNIQUE, Phone VARCHAR(20) CONSTRAINT UQ_Customer_Phone UNIQUE)
Обмеження можуть носити довільні назви, але, як правило, застосовуються такі префікси:
"PK_" - для PRIMARY KEY
"FK_" - для FOREIGN KEY
"CK_" - для CHECK
"UQ_" - для UNIQUE
"DF_" - для DEFAULT
В принципі необов'язково вказувати імена обмежень, при установці відповідних атрибутів SQL Server автоматично визначає їх імена. Але знаючи ім'я обмеження, ми можемо до нього звертатися, наприклад, для його видалення.
Також можна задати всі імена обмежень через атрибути таблиці:
CREATE TABLE Customers (Id INT IDENTITY, Age INT CONSTRAINT DF_Customer_Age DEFAULT 18, FirstName NVARCHAR(20) NOT NULL, LastName NVARCHAR(20) NOT NULL, Email VARCHAR(30), Телефон VARCHAR(20) , CONSTRAINT CK_Customer_Age CHECK(Age >0 AND Age< 100), CONSTRAINT UQ_Customer_Email UNIQUE (Email), CONSTRAINT UQ_Customer_Phone UNIQUE (Phone))
УНІКАЛЬНЕ обмеження однозначно ідентифікує кожен запис у таблиці бази даних.
Унікально та PRIMARY KEY обмеження стовпець або набір стовпців забезпечує унікальність гарантії.
PRIMARY KEY обмеження автоматично має обмеження унікальності визначено.
Зауважте, що кожна таблиця може мати кілька обмежень унікальності, але кожна таблиця може мати лише одне обмеження первинного ключа.
Наступний SQL, коли "Обличчя" таблиця була створена, щоб створити унікальне обмеження на колонці "p_id":
CREATE TABLE Persons
P_Id int NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Persons
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
Для того, щоб назвати унікальні обмеження UNIQUE обмеження та визначити кілька стовпців, використовуйте наступний синтаксис SQL:
CREATE TABLE Persons
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)
Коли таблиця була створена, створити обмеження унікальності у стовпці "p_id", будь ласка, використовуйте наступний SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD UNIQUE (P_Id)
Для того, щоб назвати унікальні обмеження UNIQUE обмеження та визначити кілька стовпців, використовуйте наступний синтаксис SQL.
Про межу унікальності запобігає створенню двох записів з тих, що мають однакові значенняу стовпці. У таблиці CUSTOMERS, наприклад, ви можете захотіти створити два або більше людей, які мають однаковий вік.
Наприклад, наступний SQL запит створює нову таблицю з ім'ям CUSTOMERS і додає п'ять стовпців. Тут стовпець AGE встановлено в UNIQUE, так що ви не можете мати два записи з тим самим віком.
CREATE TABLE CUSTOMERS(ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL UNIQUE, ADDRESS CHAR (25) , SALARY DECIMAL (18, 2), PRIMARY KEY (ID));
Якщо таблиця CUSTOMERS вже створена, якщо ви хочете додати обмеження UNIQUE на колонку AGE, ви повинні написати заяву, як запит, який задається в блоці коду нижче.
ALTER TABLE CUSTOMERS MODIFY AGE INT NOT NULL UNIQUE;Ви також можете використовувати наступний синтаксис, який підтримує обмеження надання імен у кількох стовпцях.
ALTER TABLE CUSTOMERS ADD CONSTRAINT myUniqueConstraint UNIQUE(AGE, SALARY);
Щоб видалити обмеження UNIQUE, використовуйте наступний запит SQL.
Статті на тему: | |
Файл ESP: що це і як відкрити
Як створити плагін (esp) без використання редактора Creation Kit. Чому не запускається сервіс стим і що робити
Сам процес Steam завис Якщо процес Стім не запускається, то існує... Релевантність - що це простими словами
У цій статті я докладно розповім про релевантність інформації – що... |