Database
 sql >> Baza danych >  >> RDS >> Database

Sprawdź ograniczenie w SQL

Ograniczenie sprawdzania w SQL to reguła lub zestaw reguł używanych do ograniczania zakresu danych, który można wprowadzić w kolumnie tabeli. Ograniczenie sprawdzania jest używane zarówno w tabeli, jak iw kolumnie. Możemy więc powiedzieć, że ograniczenie Sprawdź można utworzyć na poziomie kolumny i na poziomie tabeli.

Zaznacz Ograniczenie zastosowane do kolumny, a pozwoli to na wprowadzenie pewnych wartości dla tej kolumny podczas wstawiania do kolumny. Jeśli zdefiniujesz ograniczenie CHECK w tabeli, może ograniczyć wartości w niektórych kolumnach na podstawie wartości w innych kolumnach w wierszu. W jednej tabeli możemy zastosować wiele ograniczeń kontrolnych.

Zobaczmy niektóre przykłady, aby lepiej zrozumieć koncepcję sprawdzania ograniczenia.

Ograniczenie sprawdzania poziomu kolumny

Ograniczenie sprawdzające jest definiowane zaraz po nazwie kolumny, znanej jako Ograniczenie sprawdzające na poziomie kolumny. Składnia ograniczenia sprawdzania poziomu kolumny w następujący sposób,

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

Na przykład utworzymy tabelę i zdefiniujemy ograniczenie sprawdzania na poziomie kolumny dla jednej z następujących kolumn w tabeli:

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);

W powyższym zapytaniu utworzyliśmy tabelę o nazwie Pracownicy i zdefiniował określone kolumny. W tabeli Pracownik określiliśmy ograniczenia kontrolne dotyczące wynagrodzenia kolumna. Samo ograniczenie mówi, że kolumna wynagrodzeń zaakceptuje tylko te dane, których wynagrodzenie pracownika jest większe niż 40000; jeśli pensja jest mniejsza niż 40000, wystąpią błędy naruszenia ograniczeń.

Aby sprawdzić, czy ograniczenie CHECK jest zdefiniowane w Wynagrodzeniu kolumna, użyjemy poniższego zapytania:

SHOW CREATE TABLE EMPLOYEES;

Wstawimy rekord w tabeli Pracownik, w którym wynagrodzenie pracownika jest mniejsze niż 40000.

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

Po wstawieniu rekordu pracownika, którego wynagrodzenie jest mniejsze niż 40000, wyświetlany jest komunikat o błędzie ograniczenia; czemu? Ponieważ zastosowaliśmy ograniczenie sprawdzania wynagrodzenia, które pozwoli tylko na te rekordy, których wynagrodzenie pracownika jest większe niż 40000.

Wstawimy rekord w tabeli Pracownik, w którym wynagrodzenie pracownika jest większe niż 40000.

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

Aby sprawdzić krzyżowo, czy dane są wstawiane do tabeli, użyjemy poniższego zapytania:

SELECT * FROM EMPLOYEES;

Rekord pracownika został pomyślnie wstawiony do tabeli, gdy wprowadziliśmy wynagrodzenie pracownika większe niż 40000.

Przykład 2: Stworzymy tabelę i zdefiniujemy ograniczenie sprawdzania na poziomie kolumny dla więcej niż jednej kolumny w tabeli.

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' )));

W powyższym zapytaniu utworzyliśmy nazwę tabeli Manager i zdefiniowaliśmy określone kolumny. Określiliśmy ograniczenia sprawdzające w kolumnie wynagrodzeń w Menedżerze tabeli. Samo ograniczenie mówi, że kolumna wynagrodzeń zaakceptuje tylko te dane, których pensja menedżera jest większa niż 60000; jeśli wynagrodzenie jest mniejsze niż 60000, wystąpią błędy naruszenia ograniczeń, a działem menedżera jest Oracle, FMW, Testing i Java.

Aby sprawdzić, czy ograniczenie CHECK jest zdefiniowane w kolumnie Salary i Department, użyjemy poniższego zapytania:

SHOW CREATE TABLE MANAGER;

Wstawimy rekord w tabeli Manager, w którym pensja menedżera jest mniejsza niż 60000, a dział to Java.

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

Po wstawieniu rekordu menedżera, którego wynagrodzenie jest mniejsze niż 60000, wyświetlany jest komunikat o błędzie ograniczenia; czemu? Ponieważ zastosowaliśmy ograniczenie sprawdzania pensji, które pozwoli tylko na te rekordy, których pensja menedżera jest większa niż 60000. Ale nie wystąpił błąd ograniczenia w kolumnie Dział, ponieważ wstawiliśmy te wartości, które kolumnę można było wstawić,

Wstawimy rekord w tabeli Manager, w którym pensja menedżera jest większa niż 60000, a działem jest Java.

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

Aby sprawdzić krzyżowo, czy dane są wstawiane do tabeli, użyjemy poniższego zapytania:

SELECT * FROM MANAGER;

Rekord menedżera został pomyślnie wstawiony do tabeli, ponieważ wprowadziliśmy wynagrodzenie menedżera większe niż 60000 i nazwę działu Java.

Ograniczenie sprawdzania poziomu tabeli

Ograniczenie sprawdzające jest zdefiniowane na końcu tabeli, znane jako ograniczenie sprawdzające na poziomie tabeli. Składnia ograniczenia sprawdzania poziomu tabeli w następujący sposób,

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

Przykład 1: Stworzymy tabelę i zdefiniujemy ograniczenie sprawdzania poziomu tabeli w jednej z następujących kolumn w tabeli.

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));

W powyższym zapytaniu utworzyliśmy tabelę o nazwie Pracownicy i zdefiniował określone kolumny. W tabeli Pracownik określiliśmy ograniczenia kontrolne dotyczące wynagrodzenia kolumna. Samo ograniczenie mówi, że kolumna wynagrodzeń zaakceptuje tylko te dane, których wynagrodzenie pracownika jest większe niż 40000; jeśli wynagrodzenie jest mniejsze niż 40000 ograniczeń, wystąpią błędy naruszenia.

Aby sprawdzić, czy ograniczenie CHECK jest zdefiniowane w kolumnie Wynagrodzenie, użyjemy poniższego zapytania:

SHOW CREATE TABLE EMPLOYEES;

Wstawimy rekord w tabeli Pracownik, w którym wynagrodzenie pracownika jest mniejsze niż 40000.

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

Po wstawieniu rekordu pracownika, którego wynagrodzenie jest mniejsze niż 40000, wyświetlany jest komunikat o błędzie ograniczenia; czemu? Ponieważ zastosowaliśmy ograniczenie sprawdzania wynagrodzenia, które pozwoli tylko na te rekordy, których wynagrodzenie pracownika jest większe niż 40000.

Wstawimy rekord w tabeli Pracownik, w którym wynagrodzenie pracownika jest większe niż 40000.

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

Aby sprawdzić krzyżowo, czy dane są wstawiane do tabeli, użyjemy poniższego zapytania:

SELECT * FROM EMPLOYEES;

Rekord pracownika został pomyślnie wstawiony do tabeli, gdy wprowadziliśmy wynagrodzenie pracownika większe niż 40000.

Przykład 2: Stworzymy tabelę i zdefiniujemy ograniczenie sprawdzania na poziomie kolumny dla więcej niż jednej kolumny w tabeli.

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')));

Stworzyliśmy nazwę tabeli Menedżer w powyższym zapytaniu i określonych kolumnach. Określiliśmy ograniczenia czekowe dla wynagrodzenia kolumna w Menedżerze tabel. Samo ograniczenie mówi, że kolumna wynagrodzeń zaakceptuje tylko te dane, których pensja menedżera jest większa niż 60000; jeśli wynagrodzenie jest mniejsze niż 60000, wystąpią błędy naruszenia ograniczeń, a działem menedżera jest Oracle, FMW, Testing i Java.

Aby sprawdzić, czy ograniczenie CHECK jest zdefiniowane w kolumnie Salary i Department, użyjemy poniższego zapytania:

SHOW CREATE TABLE MANAGER;

Wstawimy rekord w tabeli Manager, w którym pensja menedżera jest mniejsza niż 60000, a dział to Java.

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

Po wstawieniu rekordu menedżera, którego wynagrodzenie jest mniejsze niż 60000, wyświetlany jest komunikat o błędzie ograniczenia; czemu? Ponieważ zastosowaliśmy ograniczenie sprawdzania pensji, które pozwoli tylko na te rekordy, których pensja menedżera jest większa niż 60000. Ale nie wystąpił błąd ograniczenia w kolumnie Dział, ponieważ wstawiliśmy te wartości, które kolumnę można było wstawić,

Wstawimy rekord w tabeli Manager, w którym pensja menedżera jest większa niż 60000, a działem jest Java.

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

Aby sprawdzić krzyżowo, czy dane są wstawiane do tabeli, użyjemy poniższego zapytania:

SELECT * FROM MANAGER;

Rekord menedżera został pomyślnie wstawiony do tabeli, ponieważ wprowadziliśmy wynagrodzenie menedżera większe niż 60000 i nazwę działu Java.

Sprawdź wiązanie za pomocą Alt

Stworzyliśmy tabelę i zapomnieliśmy dodać CHECK CONSTRAINT podczas tworzenia tabeli, a następnie musimy dodać CHECK CONSTRAINT w tabeli. W takich przypadkach użyjemy polecenia ALTER, aby zastosować OGRANICZENIE SPRAWDŹ OGRANICZENIE do istniejącej tabeli.

Składnia ograniczenia sprawdzania przy użyciu Alter w następujący sposób,

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

Przykład 1: Załóżmy, że utworzyliśmy Pracowników tabeli bez dodawania ograniczeń sprawdzania. Teraz chcemy dodać Check Constraint na jednej z kolumn. Następnie użyjemy poniższego zapytania:

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

Aby sprawdzić, czy ograniczenie CHECK jest zdefiniowane w Wynagrodzeniu kolumna, użyjemy poniższego zapytania:

SHOW CREATE TABLE EMPLOYEES;

Wstawimy rekord w tabeli Pracownik, w którym wynagrodzenie pracownika jest mniejsze niż 35000.

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

Po wstawieniu rekordu pracownika, którego wynagrodzenie jest mniejsze niż 35000, wyświetlany jest komunikat o błędzie ograniczenia; czemu? Ponieważ zastosowaliśmy ograniczenie sprawdzania wynagrodzenia, które pozwoli tylko na te rekordy, których wynagrodzenie pracownika jest większe niż 35000.

Przykład 2: Załóżmy, że utworzyliśmy Pracowników tabeli bez dodawania ograniczeń sprawdzania. Teraz chcemy dodać Check Constraint na jednej z kolumn. Następnie użyjemy poniższego zapytania:

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

Aby sprawdzić, czy ograniczenie CHECK jest zdefiniowane w Miasto kolumna, użyjemy poniższego zapytania:

SHOW CREATE TABLE EMPLOYEES;

Wstawimy rekord w tabeli Pracownik, w którym miastem pracownika jest Jaipur.

SHOW CREATE TABLE EMPLOYEES;

Po wstawieniu rekordu pracownika, którego nazwa miasta to Jaipur, wyświetlany jest komunikat o błędzie ograniczenia; czemu? Ponieważ zastosowaliśmy ograniczenie sprawdzania w mieście, które zezwala tylko na te rekordy, w których nazwa miasta będzie brzmieć „Mumbai”, „Pune”, „Bangalore” lub „Chennai”.

Upuść ograniczenie sprawdzania

Załóżmy, że zdefiniowaliśmy OGRANICZENIE SPRAWDŹ OGRANICZENIE w kolumnach tabeli. Później chcemy usunąć to OGRANICZENIE z kolumny. Następnie użyjemy polecenia ALTER, aby usunąć Ograniczenie CHECK.

Składnia ograniczenia kontroli upuszczania w następujący sposób,

ALTER TABLE TABLE_NAME DROP CONSTRAINT CONSTRAINT_NAME;

Przykład 1: Załóżmy, że zdefiniowaliśmy Check Constraint w jednej z kolumn tabeli Employees. Później zdecydowaliśmy się zrezygnować z tego ograniczenia.

Najpierw sprawdzimy utworzone ograniczenie, w tym celu użyj następującego zapytania:

SHOW CREATE TABLE EMPLOYEES;

Napiszemy poniższe zapytanie, aby usunąć ograniczenie o nazwie „City_Constraint”.

ALTER TABLE EMPLOYEES DROP CONSTRAINT City_Constraint;

Ponownie użyjemy zapytania SHOW CREATE TABLE, aby sprawdzić, czy ograniczenie zostało pomyślnie usunięte.

SHOW CREATE TABLE EMPLOYEES;

Przykład 2: Załóżmy, że zdefiniowaliśmy ograniczenie sprawdzania w jednej z kolumn tabeli menedżera. Później zdecydowaliśmy się zrezygnować z tego ograniczenia.

Najpierw sprawdzimy utworzone ograniczenie, w tym celu użyj następującego zapytania:

SHOW CREATE TABLE MANAGER;

Napiszemy poniższe zapytanie, aby usunąć ograniczenie o nazwie „SALARY_CONST”.

ALTER TABLE MANAGER DROP CONSTRAINT SALARY_CONST;

Ponownie użyjemy zapytania SHOW CREATE TABLE, aby sprawdzić, czy ograniczenie zostało pomyślnie usunięte.

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. Jaki wpływ może mieć wybór typu danych?

  2. Problemy z konfiguracją dziennika transakcji

  3. N-ta najwyższa pensja

  4. Sekrety domina, czyli model danych gry w domino

  5. Jaka jest średnia pensja programisty SQL?