Database
 sql >> база данни >  >> RDS >> Database

Проверете Ограничение в SQL

Ограничението за проверка в SQL е правилото или набор от правила, използвани за ограничаване на диапазона от данни, който може да бъде въведен в колона на таблица. Ограничението за проверка се използва както за таблицата, така и за колоната. Така че можем да кажем, че ограничението за проверка може да бъде създадено на ниво колона и ниво таблица.

Отметнете Ограничението, приложено към колоната, и ще позволи определени стойности за тази колона, докато се вмъква в колоната. Ако дефинирате ограничение CHECK на таблица, то може да ограничи стойностите в определени колони въз основа на стойности в други колони в реда. Можем да приложим множество ограничения за проверка в една таблица.

Нека видим някои примери, за да разберем по-ясно концепцията за проверка на ограничението.

Ограничение за проверка на нивото на колона

Ограничението за проверка се дефинира непосредствено след името на колоната, известно като Ограничение за проверка на ниво колона. Синтаксис на ограничението за проверка на ниво колона, както следва,

CREATE TABLE TABLE_NAME(COLUMN_NAME1 DATATYPE(SIZE), COLUMN_NAME2 DATATYPE(SIZE) CHECK(COLUMN_NAME CONDITION), COLUMN_NAME3 DATATYPE(SIZE));

Например, ще създадем таблица и ще дефинираме ограничение за проверка на ниво колона за една от следните колони в таблица:

CREATE TABLE EMPLOYEES (EMPLOYEEID INT PRIMARY KEY, EMPLOYEE_NAME VARCHAR(50) NOT NULL, SALARY INT CHECK(SALARY > 40000), CITY VARCHAR(20) NOT NULL, DEPARTMENT VARCHAR(30) NOT NULL);

В горната заявка създадохме таблица с име Служители и дефинирани определени колони. В таблицата Служител сме посочили ограничения за проверка на заплатата колона. Самото ограничение казва, че колоната за заплати ще приема само тези данни, чиято заплата на служителите е по-голяма от 40 000; ако заплатата е по-малка от 40 000, ще възникнат грешки при нарушение на ограниченията.

За да проверите дали ограничението CHECK е дефинирано за Заплата колона, ще използваме следната заявка:

SHOW CREATE TABLE EMPLOYEES;

Ще вмъкнем запис в таблицата на служителите, където заплатата на служителя е по-малка от 40 000.

INSERT INTO EMPLOYEES VALUES (1171101, 'Parag Chordia', 38000, 'Pune', 'Java');

Когато вмъкнем запис на служител, чиято заплата е по-малка от 40 000, се показва съобщението за грешка при неуспешно ограничение; защо? Тъй като приложихме ограничение за проверка на заплата, което ще позволи само онези записи, чиято заплата на служителите е по-голяма от 40 000.

Ще вмъкнем запис в таблицата на служителите, където заплатата на служителя е по-голяма от 40 000.

INSERT INTO EMPLOYEES VALUES (1171101, 'Parag Chordia', 45000, 'Pune', 'Java');

За кръстосана проверка дали данните са вмъкнати в таблица, ще използваме следната заявка:

SELECT * FROM EMPLOYEES;

Запис на служител е успешно вмъкнат в таблицата, тъй като въведохме заплата на служителите, по-голяма от 40 000.

Пример 2: Ще създадем таблица и ще дефинираме ограничение за проверка на ниво колона за повече от една колона в таблица.

CREATE TABLE MANAGER(MANAGERID INT PRIMARY KEY, NAME VARCHAR(40) NOT NULL, SALARY INT CHECK(SALARY>=60000), DEPARTMENT VARCHAR(20) NOT NULL CHECK(DEPARTMENT IN('Oracle', 'FMW', 'Testing', 'Java' )));

Създадохме мениджър на имена на таблица в горната заявка и дефинирахме определени колони. Ние сме посочили ограничения за проверка на колоната за заплати в мениджър на таблица. Самото ограничение казва, че колоната за заплати ще приема само тези данни, чиято заплата на мениджър е по-голяма от 60 000; ако заплатата е по-малка от 60 000, ще възникнат грешки при нарушаване на ограниченията и отделът на мениджъра е Oracle, FMW, Testing и Java.

За да проверим кръстосано дали ограничението CHECK е дефинирано в колоната „Заплата“ и колоната „Отдел“, ще използваме следната заявка:

SHOW CREATE TABLE MANAGER;

Ще вмъкнем запис в таблицата на мениджъра, където заплатата на мениджър е по-малка от 60 000 и отделът е Java.

INSERT INTO MANAGER VALUES(1, 'Bhavesh Bardiya', 59500, 'Java');

Когато вмъкнем запис на мениджър, чиято заплата е по-малка от 60000, се показва съобщението за грешка при неуспешно ограничение; защо? Тъй като приложихме ограничение за проверка на заплата, което ще позволи само онези записи, чиято заплата на мениджър е по-голяма от 60 000. Но в колоната Отдел не възникна грешка при ограничение, защото вмъкнахме онези стойности, чиято колона позволи да бъдат вмъкнати,

Ще вмъкнем запис в таблицата на мениджъра, където заплатата на мениджър е по-голяма от 60 000, а отделът е Java.

INSERT INTO MANAGER VALUES(1, 'Bhavesh Bardiya', 62000, 'Java');

За кръстосана проверка дали данните са вмъкнати в таблица, ще използваме следната заявка:

SELECT * FROM MANAGER;

Записът на мениджъра е успешно вмъкнат в таблицата, тъй като въведохме мениджърска заплата по-голяма от 60 000 и име на отдел Java.

Ограничение за проверка на нивото на таблица

Ограничението за проверка е дефинирано в края на таблицата, известно като ограничение за проверка на ниво таблица. Синтаксис на ограничението за проверка на ниво таблица, както следва,

CREATE TABLE TABLE_NAME(COLUMN_NAME1 DATATYPE(SIZE), COLUMN_NAME2 DATATYPE(SIZE), COLUMN_NAME3 DATATYPE(SIZE), CONSTRAINT CONSTAINT_NAME CHECK(COLUMN_NAME CONDITION));

Пример 1: Ще създадем таблица и ще дефинираме ограничение за проверка на ниво таблица на една от следните колони в таблица.

CREATE TABLE EMPLOYEES (EMPLOYEEID INT PRIMARY KEY, EMPLOYEE_NAME VARCHAR(50) NOT NULL, SALARY INT, CITY VARCHAR(20) NOT NULL, DEPARTMENT VARCHAR(30) NOT NULL, CONSTRAINT salary_constraint CHECK(SALARY > 40000));

В горната заявка създадохме таблица с име Служители и дефинирани определени колони. В таблицата Служител сме посочили ограничения за проверка на заплатата колона. Самото ограничение казва, че колоната за заплати ще приема само тези данни, чиято заплата на служителите е по-голяма от 40 000; ако заплатата е по-малка от 40 000 ограничения, ще възникнат грешки при нарушение.

За да проверим кръстосано дали ограничението CHECK е дефинирано в колоната Заплата, ще използваме следната заявка:

SHOW CREATE TABLE EMPLOYEES;

Ще вмъкнем запис в таблицата на служителите, където заплатата на служителя е по-малка от 40 000.

INSERT INTO EMPLOYEES VALUES (1171101, 'Naman Sharma', 38000, 'Pune', 'Java');

Когато вмъкнем запис на служител, чиято заплата е по-малка от 40 000, се показва съобщението за грешка при неуспешно ограничение; защо? Тъй като приложихме ограничение за проверка на заплата, което ще позволи само онези записи, чиято заплата на служителите е по-голяма от 40 000.

Ще вмъкнем запис в таблицата на служителите, където заплатата на служителя е по-голяма от 40 000.

INSERT INTO EMPLOYEES VALUES (1171101, 'Naman Sharma', 45000, 'Pune', 'Java');

За кръстосана проверка дали данните са вмъкнати в таблица, ще използваме следната заявка:

SELECT * FROM EMPLOYEES;

Запис на служител е успешно вмъкнат в таблицата, тъй като въведохме заплата на служителите, по-голяма от 40 000.

Пример 2: Ще създадем таблица и ще дефинираме ограничение за проверка на ниво колона за повече от една колона в таблица.

CREATE TABLE MANAGER (MANAGERID INT PRIMARY KEY, NAME VARCHAR(40) NOT NULL, SALARY INT, DEPARTMENT VARCHAR(40) NOT NULL, CONSTRAINT SALARY_CONST CHECK(SALARY>60000), CONSTRAINT DEPT_CONST CHECK(DEPARTMENT IN(‘'Oracle', 'FMW', ‘Java’, 'Testing')));

Създадохме таблица с име Мениджър в горната заявка и дефинирани определени колони. Зададохме ограничения за проверка на заплатата колона в мениджър на таблица. Самото ограничение казва, че колоната за заплати ще приема само тези данни, чиято заплата на мениджър е по-голяма от 60 000; ако заплатата е по-малка от 60 000, ще възникнат грешки при нарушаване на ограниченията и отделът на мениджъра е Oracle, FMW, Testing и Java.

За да проверим кръстосано дали ограничението CHECK е дефинирано в колоната „Заплата“ и колоната „Отдел“, ще използваме следната заявка:

SHOW CREATE TABLE MANAGER;

Ще вмъкнем запис в таблицата на мениджъра, където заплатата на мениджър е по-малка от 60 000 и отделът е Java.

INSERT INTO MANAGER VALUES(1, 'Surili Jain', 59500, 'Java');

Когато вмъкнем запис на мениджър, чиято заплата е по-малка от 60000, се показва съобщението за грешка при неуспешно ограничение; защо? Тъй като приложихме ограничение за проверка на заплата, което ще позволи само онези записи, чиято заплата на мениджър е по-голяма от 60 000. Но в колоната Отдел не възникна грешка при ограничение, защото вмъкнахме онези стойности, чиято колона позволи да бъдат вмъкнати,

Ще вмъкнем запис в таблицата на мениджъра, където заплатата на мениджър е по-голяма от 60 000, а отделът е Java.

INSERT INTO MANAGER VALUES(1, 'Surili Jain', 62500, 'Java');

За кръстосана проверка дали данните са вмъкнати в таблица, ще използваме следната заявка:

SELECT * FROM MANAGER;

Записът на мениджъра е успешно вмъкнат в таблицата, тъй като въведохме мениджърска заплата по-голяма от 60 000 и име на отдел Java.

Проверете ограничението с помощта на Alter

Създадохме таблица и забравихме да добавим CHECK CONSTRAINT, докато създаваме таблица, а след това трябва да добавим CHECK CONSTRAINT в таблица. В такива случаи ще използваме команда ALTER, за да приложим CHECK CONSTRAINT към съществуващата таблица.

Синтаксис на Check Constraint, използващ Alter, както следва,

ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_NAME CHECK (COLUMN_NAME CONDITION);

Пример 1: Да предположим, че сме създали Служители таблица без добавяне на Ограничения за проверка. Сега искаме да добавим Check Constraint към една от колоните. След това ще използваме следната заявка:

ALTER TABLE EMPLOYEES ADD CONSTRAINT Sal_Constraint CHECK (SALARY > 35000);  

За да проверите дали ограничението CHECK е дефинирано за Заплата колона, ще използваме следната заявка:

SHOW CREATE TABLE EMPLOYEES;

Ще вмъкнем запис в таблицата на служителите, където заплатата на служителя е по-малка от 35 000.

INSERT INTO EMPLOYEES VALUES (1001, 'Abhinav Patil', 30000, 'Mumbai', 'Testing');

Когато вмъкнем запис на служител, чиято заплата е по-малка от 35000, се показва съобщението за грешка при неуспешно ограничение; защо? Тъй като приложихме ограничение за проверка на заплата, което ще позволи само онези записи, чиято заплата на служителите е по-голяма от 35 000.

Пример 2: Да предположим, че сме създали Служители таблица без добавяне на Ограничения за проверка. Сега искаме да добавим Check Constraint към една от колоните. След това ще използваме следната заявка:

ALTER TABLE EMPLOYEES ADD CONSTRAINT City_Constraint CHECK (CITY IN ('Mumbai', 'Pune', 'Bangalore', 'Chennai'));

За кръстосана проверка дали ограничението CHECK е дефинирано в Град колона, ще използваме следната заявка:

SHOW CREATE TABLE EMPLOYEES;

Ще вмъкнем запис в таблицата на служителите, където градът на служител е Джайпур.

SHOW CREATE TABLE EMPLOYEES;

Когато вмъкнахме запис на служител, чието име на град е Джайпур, се показва съобщението за грешка неуспешно ограничение; защо? Тъй като приложихме ограничение за проверка на град, което ще позволи само онези записи, при които името на града ще бъде „Мумбай“, „Пуна“, „Бангалор“ или „Ченнай“.

Отпускане на ограничението за проверка

Да предположим, че сме дефинирали ПРОВЕРКА НА ОГРАНИЧЕНИЕТО на колоните на таблицата. По-късно искаме да изтрием това ОГРАНИЧЕНИЕ от колоната. След това ще използваме команда ALTER, за да премахнем CHECK CONSTRAINT.

Синтаксис на ограничението за проверка на отпадане, както следва,

ALTER TABLE TABLE_NAME DROP CONSTRAINT CONSTRAINT_NAME;

Пример 1: Да предположим, че сме дефинирали Ограничение за проверка на една от колоните на таблицата Служители. По-късно решихме да премахнем това ограничение.

Първо ще проверим създаденото ограничение, за това използвайте следната заявка:

SHOW CREATE TABLE EMPLOYEES;

Ще напишем заявката по-долу, за да премахнем ограничението с име „City_Constraint“.

ALTER TABLE EMPLOYEES DROP CONSTRAINT City_Constraint;

Отново ще използваме заявката SHOW CREATE TABLE, за да проверим дали ограничението е премахнато успешно.

SHOW CREATE TABLE EMPLOYEES;

Пример 2: Да предположим, че сме дефинирали ограничение за проверка на една от колоните на таблицата на мениджъра. По-късно решихме да премахнем това ограничение.

Първо ще проверим създаденото ограничение, за това използвайте следната заявка:

SHOW CREATE TABLE MANAGER;

Ще напишем заявката по-долу, за да премахнем ограничението с име „SALARY_CONST“.

ALTER TABLE MANAGER DROP CONSTRAINT SALARY_CONST;

Отново ще използваме заявката SHOW CREATE TABLE, за да проверим дали ограничението е премахнато успешно.

SHOW CREATE TABLE MANAGER;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете временна таблица в SQL?

  2. Модел на данни за грижи за домашни любимци

  3. SQL INTERSECT

  4. Как да добавя колона в таблица в SQL?

  5. Сравняване на производителността на Windows Azure VM, част 2