tcl, dcl, mdl, ddl, scl

agnusdei·2024년 7월 27일
0

SQL 명령어 종합 가이드 (개선판)

1. DCL (Data Control Language)

GRANT

목적: 사용자에게 특정 데이터베이스 객체에 대한 권한을 부여합니다.

GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'hostname';

설명: 'username'에게 'database_name.table_name'에 대한 SELECT와 INSERT 권한을 부여합니다. 실제 사용 시 database_name, table_name, username, hostname을 적절히 변경해야 합니다.

REVOKE

목적: 사용자로부터 특정 데이터베이스 객체에 대한 권한을 회수합니다.

REVOKE DELETE, UPDATE ON database_name.table_name FROM 'username'@'hostname';

설명: 'username'으로부터 'database_name.table_name'에 대한 DELETE와 UPDATE 권한을 회수합니다.

DENY

목적: 특정 사용자나 역할에 대해 명시적으로 권한을 거부합니다. (주로 Microsoft SQL Server에서 사용)

DENY SELECT ON schema_name.table_name TO user_name;

설명: 'user_name'에게 'schema_name.table_name'에 대한 SELECT 권한을 명시적으로 거부합니다. 이는 GRANT로 부여된 권한보다 우선적으로 적용됩니다.

2. DML (Data Manipulation Language)

SELECT

목적: 데이터베이스에서 데이터를 조회합니다.

SELECT column1, column2 FROM table_name WHERE condition;

설명: 'table_name'에서 'condition'을 만족하는 'column1'과 'column2'의 데이터를 조회합니다.

INSERT

목적: 테이블에 새로운 데이터를 삽입합니다.

INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);

설명: 'table_name'에 새로운 행을 추가합니다. 열 이름과 값은 실제 데이터에 맞게 변경해야 합니다.

UPDATE

목적: 테이블의 기존 데이터를 수정합니다.

UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;

설명: 'condition'을 만족하는 행의 'column1'과 'column2' 값을 업데이트합니다.

DELETE

목적: 테이블에서 특정 데이터를 삭제합니다.

DELETE FROM table_name WHERE condition;

설명: 'condition'을 만족하는 행을 삭제합니다.

MERGE

목적: 조건에 따라 데이터를 삽입, 업데이트 또는 삭제합니다.

MERGE INTO target_table t
USING source_table s
ON (t.id = s.id)
WHEN MATCHED THEN
    UPDATE SET t.column1 = s.column1, t.column2 = s.column2
WHEN NOT MATCHED THEN
    INSERT (id, column1, column2) VALUES (s.id, s.column1, s.column2);

설명: source_table의 데이터를 기반으로 target_table의 데이터를 병합합니다.

3. DDL (Data Definition Language)

CREATE TABLE

목적: 새로운 테이블을 생성합니다.

CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    column3 datatype constraint,
    ...
);

설명: 'table_name'이라는 새 테이블을 생성합니다. 열 이름, 데이터 타입, 제약 조건은 실제 요구사항에 맞게 지정해야 합니다.

ALTER TABLE

목적: 기존 테이블의 구조를 수정합니다.

ALTER TABLE table_name
ADD column_name datatype,
MODIFY column_name new_datatype,
DROP COLUMN column_name;

설명: 'table_name'에 새 열을 추가하고, 기존 열의 데이터 타입을 변경하고, 열을 삭제합니다.

DROP TABLE

목적: 테이블을 삭제합니다.

DROP TABLE table_name;

설명: 'table_name'을 데이터베이스에서 완전히 제거합니다.

TRUNCATE

목적: 테이블의 모든 데이터를 빠르게 삭제합니다.

TRUNCATE TABLE table_name;

설명: 'table_name'의 모든 데이터를 삭제하지만 테이블 구조는 유지합니다.

4. TCL (Transaction Control Language)

COMMIT

목적: 트랜잭션의 변경사항을 데이터베이스에 영구적으로 저장합니다.

COMMIT;

ROLLBACK

목적: 마지막 COMMIT 이후의 모든 변경사항을 취소합니다.

ROLLBACK;

SAVEPOINT

목적: 트랜잭션 내에 체크포인트를 생성합니다.

SAVEPOINT savepoint_name;

설명: 'savepoint_name'이라는 저장점을 생성합니다. 이후 ROLLBACK TO SAVEPOINT로 이 지점까지 롤백할 수 있습니다.

5. 기타 중요 명령어

CREATE INDEX

목적: 테이블에 인덱스를 생성하여 검색 속도를 향상시킵니다.

CREATE INDEX index_name ON table_name (column1, column2, ...);

설명: 'table_name'의 지정된 열들에 대해 'index_name'이라는 인덱스를 생성합니다.

CREATE VIEW

목적: 가상 테이블(뷰)을 생성합니다.

CREATE VIEW view_name AS
SELECT column1, column2
FROM table_name
WHERE condition;

설명: 'view_name'이라는 뷰를 생성합니다. 이 뷰는 지정된 SELECT 문의 결과를 표시합니다.

CREATE PROCEDURE

목적: 저장 프로시저를 생성합니다.

CREATE PROCEDURE procedure_name
    @parameter1 datatype,
    @parameter2 datatype
AS
BEGIN
    -- SQL statements
END;

설명: 'procedure_name'이라는 저장 프로시저를 생성합니다. 프로시저 내부의 SQL 문은 실제 로직에 맞게 작성해야 합니다.

이 가이드는 SQL의 주요 명령어와 그 사용법을 더 자세히 설명합니다. 각 DBMS(MySQL, PostgreSQL, Oracle 등)마다 문법이 조금씩 다를 수 있으므로, 실제 적용 시에는 사용 중인 DBMS의 문서를 참조하는 것이 좋습니다.

profile
DevSecOps ⚙️ + CTF🚩

0개의 댓글