SQL 기본 (DDL, DML, DCL, TCL)

fever·2024년 3월 18일
0

SQL Database

목록 보기
2/2
post-thumbnail

📌 DDL(Data Definition Language)

  • 데이터 구조를 정의하거나 조작하는 데 사용
  • 데이터베이스, 테이블, 인덱스 등을 생성, 수정 또는 삭제할 때 사용
  • 주요 명령어: CREATE, ALTER, DROP, TRUNCATE 등

1-1. CREATE

--테이블 생성
CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT,
    department VARCHAR(100)
);

--INDEX 생성
CREATE INDEX idx_name ON employees (name);

--VIEW 생성
CREATE VIEW employee_view AS
SELECT id, name, department
FROM employees
WHERE age > 30;

1-2. ALTER

--테이블 수정 (칼럼 추가)
ALTER TABLE employees
ADD COLUMN salary DECIMAL(10, 2);

--제약조건 추가
ALTER TABLE employees
ADD CONSTRAINT pk_employee_id PRIMARY KEY (id);

1-3. DROP

--테이블 삭제
DROP TABLE employees;

--INDEX 삭제
DROP INDEX index_name;

--VIEW 삭제
DROP VIEW view_name;

--제약조건 삭제
ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

📌 DML (Data Manipulation Language)

  • 데이터를 검색, 삽입, 수정, 삭제하는 데 사용
  • 주요 명령어: SELECT, INSERT, UPDATE, DELETE 등

2-1. SELECT

--데이터 모든 조회
SELECT * FROM employees;

--특정 열 선택
SELECT name, age FROM employees;

--조건으로 검색
SELECT * FROM employees WHERE department = 'IT';

--정렬 기준으로 검색
SELECT * FROM employees ORDER BY age DESC;

--그룹화 검색
SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department;

2-2. INSERT

--데이터 추가
INSERT INTO employees (id, name, age, department, salary)
VALUES (1, 'John Doe', 30, 'IT', 50000);

2-3. UPDATE

--데이터 수정
UPDATE employees
SET salary = 55000
WHERE id = 1;

2-4. DELETE

--데이터 삭제
DELETE FROM employees
WHERE id = 1;

📌 DCL (Data Control Language)

  • 특정 사용자나 사용자 그룹에 대한 특정 데이터베이스 객체에 대한 특정 권한을 부여
  • 권한 부여는 데이터베이스 보안 및 접근 제어를 관리하는 데 중요
  • 주요 명령어: GRANT, REVOKE 등

3-1.GRANT

--권한 부여
GRANT SELECT, INSERT, UPDATE ON employees TO user1;

3-2.REVOKE

--권한 박탈
REVOKE INSERT, UPDATE ON employees FROM user1;

📌 TCL (Transaction Control Language)

  • 트랜잭션의 처리를 제어하는 데 사용
  • 트랜잭션의 커밋 또는 롤백을 수행할 때 사용
  • 주요 명령어: COMMIT, ROLLBACK, SAVEPOINT 등
COMMIT;
ROLLBACK;


--SAVEPOINT 사용
START TRANSACTION;

INSERT INTO employees (id, name, age, department)
VALUES (1, 'John Doe', 30, 'IT');

SAVEPOINT before_update;

UPDATE employees
SET age = 31
WHERE id = 1;

ROLLBACK TO SAVEPOINT before_update;
-- before_update 위치로 돌아가서 업데이트만 실행됨

COMMIT;
profile
선명한 삶을 살기 위하여

0개의 댓글