DDL
- Data Definition Language, 데이터 정의어
DDL은 데이터베이스의 구조를 정의하고 조작하는 언어로서, 데이터베이스와 테이블을 생성, 수정, 삭제하는 등 전체적인 구조를 결정하는데 사용합니다.
CREATE
- Table
CREATE TABLE <table_name> (
column_name type (size) [NULL/NOT NULL],
column_name type (size) [NULL/NOT NULL],
...
);
- Index
CREATE INDEX index_name
ON table_name (column1, column2, ...);
ALTER
데이터베이스를 수정하는 명령어이며, 컬럼을 변경하는 경우, 성능상의 하락이 있을 수도 있습니다.
불가능한 경우
아래의 경우를 변경하는 것은 지원하는 DBMS마다 다르지만 대부분 불가능합니다.
-
Column 타입 변경
-
Column 길이 축소
-
Table
ALTER TABLE table_name
ADD column_name datatype;
ALTER TABLE table_name
DROP COLUMN column_name;
ALTER TABLE table_name
ALTER COLUMN column_name SET DATA TYPE new_datatype;
- Index
ALTER INDEX index_name
RENAME TO new_index_name;
- Schema
ALTER SCHEMA old_schema
RENAME TO new_schema;
- Constant
ALTER TABLE table_name
ALTER CONSTRAINT constraint_name
[NOT] DEFERRABLE [INITIALLY IMMEDIATE | INITIALLY DEFERRED];
DROP
- 아예 삭제하는 명령어
DROP TABLE table_name; -- Table
DROP INDEX index_name; -- Index
DROP VIEW view_name; -- View
DROP DATABASE database_name; -- Database
DROP SCHEMA schema_name; -- Schema
TRUNCATE
- 테이블의 데이터를 전부 삭제하고 사용하고 있던 공간을 반납
TRUNCATE TABLE table_name;
DML
- Data Manipulation Language, 데이터 조작어
정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 등의 역할을 하는 언어를 말합니다.
SELECT
SELECT [(column, ..., column)] FROM <table_name>
[WHERE contidion];
INSERT
INSERT INTO <table_name> [(column, ..., column)] VALUES (expression [..., expression])
UPDATE
UPDATE
문은 테이블에서 원하는 컬럼의 값을 변경하는 기능입니다. 만약 WHERE
문으로 조건을 지정하지 않는 경우, 테이블 전체의 값이 변경되는 무시무시한 일이 발생하니 이점 주의해야겠습니다.
UPDATE <table_name>
SET column = expression, [..., column = expression]
[WHERE condition, ALL];
DELETE
commit된 사항들은 rollback이 불가능합니다. 마찬가지로 WHERE
로 조건을 명시하지 않으면 전체가 삭제됩니다.
DELETE FROM <table_name>
[WHERE condition, ALL];
DCL
- Data Control Language
데이터베이스내의 데이터에 접근할 수 있는 권한을 다루는데 사용합니다.
GRANT
GRANT privileges ON object TO user_or_role;
GRANT SELECT, INSERT, UPDATE, DELETE ON table_name TO user_or_role; -- 원하는 권한 별로 지정 가능
GRANT ALL ON table_name TO user_or_role; -- 전체 권한
WITH GRANT OPTION
을 사용자나 역할 뒤에 작성해서 권한을 부여하는 권한을 다른 사용자에게 허용할 수 있습니다.
REVOKE
REVOKE privileges ON object FROM user_or_role;
CASCADE
옵션을 사용하여 권한을 부여한 사용자나 역할을 지정하면 해당 사용자가 다른 사용자에게 부여한 권한을 재귀적으로 확인하여 해당 권한을 모두 제거할 수 있습니다.
COMMIT
한번 commit
이 된 경우, 데이터베이스의 영구성에 의해 되돌릴 수 없습니다.
ROLLBACK
rollback
은 현재 트랜잭션 중에 변경된 모든 변경 사항을 취소하는 데 사용됩니다.
만약 롤백되면 트랜잭션이 시작되기 전의 데이터베이스 상태로 되돌립니다.
일반적으로 트랜잭션 도중에 오류가 발생하거나 변경 사항을 취소하려는 경우에 사용됩니다.