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 |