STUDY/DataBase

SQL 제약조건 | Constraints

nicesugi 2022. 11. 21. 17:56

SQL 제약 조건은 테이블의 데이터에 대한 규칙을 지정하는 데 사용됩니다.

CREATE / ALTER TABLE  명령문을 사용하여 테이블을 만들 때 혹은 테이블을 만든 후! 에 ! 제약조건을 지정

CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    column3 datatype constraint,
    ....
);

 


 

NOT NULL - 컬럼이 NULL 값을 가질 수 없도록 보장

- "Persons" 테이블이 이미 생성된 경우 "Age" 열에 제약 조건 을 생성

ALTER TABLE Persons
--SQL 서버/MS 액세스:
ALTER COLUMN Age int NOT NULL;
--My SQL/Oracle(이전 버전 10G):
MODIFY COLUMN Age int NOT NULL;
--Oracle 10G 이상:
MODIFY Age int NOT NULL;

UNIQUE - 열의 모든 값이 서로 다른지 확인

CREATE TABLE

- "Persons" 테이블이 생성될 때 "ID" 열에 제약 조건을 생성

--SQL 서버/Oracle/MS 액세스:
CREATE TABLE Persons (
    ID int NOT NULL UNIQUE,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

--My SQL:
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    UNIQUE (ID)
);

 

- UNIQUE 제약 조건의 이름을 지정하고 여러 열에 대한 UNIQUE 제약 조건을 정의하려면 다음 SQL 구문을 사용

--MySQL / SQL Server / Oracle / MS 액세스:
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CONSTRAINT UC_Person UNIQUE (ID,LastName)
);

ALTER TABLE

--MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD UNIQUE (ID);

- UNIQUE 제약 조건의 이름을 지정하고 여러 열에 대한 UNIQUE 제약 조건을 정의하려면 다음 SQL 구문을 사용

--MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);

DROR TABLE

ALTER TABLE Persons
--MySQL:
DROP INDEX UC_Person;
--SQL Server / Oracle / MS Access:
DROP CONSTRAINT UC_Person;

PRIMARY KEY - NOT NULL와 의 조합 UNIQUE. 테이블의 각 행을 고유하게 식별

CREATE TABLE

- "Persons" 테이블이 생성될 때 "ID" 열에 PRIMARY KEY를 생성

--MySQL:
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID)
);

--SQL Server / Oracle / MS Access:
CREATE TABLE Persons (
    ID int NOT NULL PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

- PRIMARY KEY 제약 조건의 이름 지정을 허용하고 여러 열에서 PRIMARY KEY 제약 조건을 정의
(참고: 위의 예에는 하나의 기본 키(PK_Person)만 있습니다. 그러나 기본 키의 VALUE는 TWO COLUMNS(ID + LastName)로 구성됩니다)

--MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);

ALTER TABLE

- 테이블이 이미 생성된 경우 "ID" 열에 PRIMARY KEY 제약 조건을 생성

--MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD PRIMARY KEY (ID);

- PRIMARY KEY 제약 조건의 이름 지정을 허용하고 여러 열에서 PRIMARY KEY 제약 조건을 정의
(참고: ALTER TABLE을 사용하여 기본 키를 추가하는 경우 기본 키 열은 NULL 값을 포함하지 않도록 선언되어야 합니다(테이블이 처음 생성될 때))

--MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);

DROR TABLE

- PRIMARY KEY 제약 조건을 삭제

--MySQL:
ALTER TABLE Persons
DROP PRIMARY KEY;

--SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;

FOREIGN KEY - 테이블 간의 링크를 파괴하는 작업 방지

CREATE TABLE

- "Orders" 테이블이 생성될 때 "PersonID" 열에 FOREIGN KEY를 생성

--MySQL:
CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

--SQL Server / Oracle / MS Access:
CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

- FOREIGN KEY 제약 조건의 이름 지정을 허용하고 여러 열에서 FOREIGN KEY 제약 조건을 정의

--MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);

ALTER TABLE

- "Orders" 테이블이 이미 생성된 경우 "PersonID" 열에 FOREIGN KEY 제약 조건을 생성

--MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

- FOREIGN KEY 제약 조건의 이름 지정을 허용하고 여러 열에서 FOREIGN KEY 제약 조건을 정의

--MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

DROR TABLE

- FOREIGN KEY 제약 조건을 삭제

ALTER TABLE Orders
--MySQL:
DROP FOREIGN KEY FK_PersonOrder;
--SQL Server / Oracle / MS Access:
DROP CONSTRAINT FK_PersonOrder;

CHECK- 컬럼의 값이 특정 조건을 만족하는지 확인

 

  • DEFAULT- 값이 지정되지 않은 경우 열의 기본값을 설정합니다.

 

  • CREATE INDEX- 데이터베이스에서 데이터를 매우 빠르게 생성하고 검색하는 데 사용

 

참고링크 : https://www.w3schools.com/sql/

 

 

반응형

'STUDY > DataBase' 카테고리의 다른 글

SQL | (create | drop | alter) TABLE + Constraints  (0) 2022.11.14
SQL | (show | create | drop | alter | backup) DATABASE  (0) 2022.11.11
SQL | DELETE  (0) 2022.11.11
SQL | UPDATE  (0) 2022.11.11
SQL | INSERT INTO | NULL  (0) 2022.11.11