[데이터베이스] 데이터베이스 언어 정리

October 03, 2023


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은 현재 트랜잭션 중에 변경된 모든 변경 사항을 취소하는 데 사용됩니다.

만약 롤백되면 트랜잭션이 시작되기 전의 데이터베이스 상태로 되돌립니다.

일반적으로 트랜잭션 도중에 오류가 발생하거나 변경 사항을 취소하려는 경우에 사용됩니다.


Profile picture

이재원

이해하기 쉬운 코드를 작성하려 고민합니다.


© 2024 Won's blog Built with Gatsby