
SQL에서 relation이란 relational data model에서의 relation이랑은 개념이 조금 다른데 multiset of tuples 라는 특징이 있다. 이 말은 중복된 tuple을 허용한다는 뜻이다.

primary key가 tean_id 와 back_number로 구성된 상황에서 1,2번재 줄은 중복된 값을 가지고 있고 3번재 줄은 NULL을 가지고 있어서 잘못된 예시이다.
create table PLAYER(
id INT PRIMARY KEY
);create table PLAYER(
TEAN_ID VARCHAR(12),
BACK_NUMBER INT,
:
PRIMARY KEY(TEAM_ID, BACK_NUMBER)
);
CREATE TABLE PLAYER(
ID INT UNIQUE
...
)CREATE TABLE PLAYER(
TEAM_ID VARCHAR(12),
BACK_NUMBER INT,
...
UNIQUE(TEAM_ID, BACK_NUMBER)
) 
CREATE TABLE STUDENT(
...
PHONE_NUMBER INT NOT NULL UNIQUE,
...
);
UNIQUE가 NULL의 경우에는 중복을 허용할 수 있기 때문에 NOT NULL의 경우에는 UNIQUE를 보통 같이 써주는 경우가 많다.

이 부분을 이해할 수 있으면 된다.
attribute의 default 값을 정의할 때 사용한다. 새로운 tuple을 정의할 때 해당 attribute에 대한 값이 없다면 default 값으로 저장.
CREATE TABLE ORDERS(
MENU VARCHAR(15) DEFAULT '짜장면'
);

CREATE TABLE EMPLYEE(
AGE INT CHECK(AGE >= 20)
);CREATE TABLE PROJECT(
START_DATE DATE,
END_DATE DATE,
:
CHECK (START_DATE < END_DATE)
);

FOREIGN KEY로 저장된 값은 다른 테이블의 PRIMARY KEY에 반드시 존재하는 값이어야 한다.


이 부분을 이해할 수 있으면 된다.
CREATE TABLE TEST(
AGE INT CONSTRAINT AGE_OVER_20 CHECK (AGE > 20)
);


ALTER TALBE 변경하려는 테이블 DEPARTMENT의 LEADER_ID에 FOREIGN KEY를 추가할 거라 ADD FOREIGN KEY(LEADER_ID) 이렇게 적어준다.REFERENCES EMPLYEE(ID) ON UPDATE CASCADEON DELETE SET NULL
이미 서비스 중인 TABLE의 SCHEMA를 변경하는 것이라면 변경 작업 때문에 서비스의 백엔드에 영향이 없을지 검토한 후에 변경하는 것이 중요하다.
테이블을 사용할 때 사용
DROP TABLE 테이블이름;