- DDL
- CREATE, ALTER, DROP
- DML
- SELECT, INSERT, UPDATE, DELETE
- DCL
- GRANT, REVOKE
- TCL
- COMMIT, ROLLBACK
create table PLAYER(
id INT PRIMARY KEY
); create table PLAYER(
id VARCHAR(12),
number INT,
PRIMARY KEY(id, number)
);create table PLAYER(
id INT UNIQUE
); create table PLAYER(
id VARCHAR(12),
number INT,
UNIQUE(id, number)
);
create table Student(
number INT NOT NULL UNIQUE,
);
✔️ UNIQUE의 경우 NULL을 중복 허용
-> NOT NULL과 UNIQUE를 주로 같이 많이 사용
create table Orders (
menu VARCHAR(15) DEFAULT '짜장면'
);
create table EMPLOYEE(
age INT CHECK(age>=20)
); create table EMPLOYEE(
start_date DATE,
end_date DATE,
CHECK(start_date <= end_date)
);create table Employee(
dept_id INT,
FOREIGN KEY(dept_id)
references DEPARTMENT(id)
on delete reference_option
on update reference_option
);
✔️ reference_option
create table TEST(
age INT CONSTRINT age_over_20 CHECK(age>20)
);
attribute 추가
ALTER TABLE employee ADD blood VARCHAR(2);
attribute 이름 변경
ALTER TABLE employee RENAME COLUMN phone TO phone_num;
attribute 타입 변경
ALTER TABLE employee MODIFY COLUMN blood CHAR(2);
table 이름 변경
ALTER TABLE logs RENAME TO backend_logs;
primary key 추가
ALTER TABLE log ADD PRIMARY KEY (id);
🌟 ALTER TABLE로 인해 백엔드에 영향이 없을지 검토한 후 변경하는 것이 중요하다.
DROP TABLE table_name;
SELECT attribute(s)
FROM table(s)
[WHERE conditioin(s)];
AS
SELECT E.id, E.name, position
FROM project AS P, employee AS E
WHERE P.id = 2002 and P.leader_id=E.id;DISTINCT
SELECT DISTINCT P.id P.name
FROM employee AS E, works_on AS W, project AS P
WHERE E.position = 'DSGN' and E.id = W.empl_id
and W.proj_id = P.id;LIKE
SELECT name
FROM employee
WHERE name LIKE '%NG%';SELECT name
FROM employee
WHERE name LIKE '\%%' or name LIKE '%\_';INSERT INFO employee(name, birth_date, sex, position, id)
VALUES('JENNY', '2000-10-10','F', 'DEV_BACK',3);
INSERT INTO table_name(attributes list)
VALUES(attributest list 순서와 동일하게);
INSERT INTO table_name VALUES ( , ), ( , );
UPDATE table_name(s)
SET attribute = value[attribute = value,..]
[WHERE conditions(s)];
UPDATE employee SET dept_id = 1003 WHERE id=1;
UPDATE employee
SET salary = salary *2
WHERE dept_id = 1003;
UPDATE employee,works_on
SET salary = salary*2
WHERE id = empl_id and proj_id = 2003;
DELETE FROM table_name
[WHERE conditions(s)];
DELETE FROM employee WHERE id=8;
DELETE FROM employee;
✔️ 서비스의 스택과 데이터 일관성, 편의성, 확장성 등을 종합적으로 고려하여 DB 스키마를 정의해야한다.
✔️ SELECT로 조회할 때 조건들을 포함해서 조회를 한다면, 이 조건들과 관련된 attributes에 index가 걸려 있어야 한다.
그렇지 않으면, 데이터가 많아질수록 조회 속도가 느려진다.