[SQL] 간단하고 명료하게 SQL 명령어 훑기(DDL/DML/DCL/TCL)

2022. 7. 4. 17:27Server의 세계/MySql

1. SQL 명령어 종류

  • DDL - Data Definition Language (데이터 정의 언어)
  • DML - Data Manipulation Language (데이터 조작 언어)
  • DCL - Data Control Language (데이터 제어 언어)
  • TCL - Transaction Control Language(트렌젝션 제어 언어)

 

2. DDL(Data Definition Language)

-데이터 정의어다. 테이블 같은 데이터 구조를 정의하는데 사용되는 명령어며, 테이블 같은 데이터 구조를 생성, 변경, 삭제를 처리하는 명령어다. 

명령어 내용 예시
CREATE 데이터베이스 내 개체(테이블, 인덱스 제약조건,
프로시저, 펑션 등)을 생성할 때
CREATE TABLE myTable(field1 int PRIMARY KEY, field2 VARCHAR(50)); 
DROP 데이터베이스 내 개체를 삭제할때 DROP TABLE myTable;
ALTER 데이터베이스 내 개체 속성 및 정의를 변경할 때 ALTER TABLE myTable ADD field3 NUMBER(3) NOT NULL;
RENAME 데이터베이스내 개체의 이름을 변경 할 때 ALTER TABLE myTable RENAME TO yourTable;
TRUNCATE 테이블 내 모든 데이터를 빠르게 삭제할 때 TRUNCATE TABLE myTable;

 

* DROP과 TRUNCATE 의 차이점

- DROP TABLE : TABLE 전체 삭제.

- TRUNCATE TABLE : TABLE 초기화.  TABLE 내 데이터 초기화.(생성 시점으로 회복)

3. DML (Data Manipulation Language)

데이터를 조작할 때 사용하는 언어를 통틀어서 이야기한다. 데이터베이스에 들어있는 데이터를 조작할때 사용하는 언어이며, 가장 기본적인 언어다.

 

명령어 내용 예시
INSERT 특정 테이블에서 데이터를 신규로 삽입할 때
(입력하지 않은 값은 자동으로 NULL값 입력)
INSERT INTO 테이블명(column_list) VALUES (COLUMN_LIST에 넣을 VALUE_LIST);
UPDATE 입력되어 있는 데이터 내용 중,  데이터의 전체, 또는 일부를 새로운 값으로 갱신할 때 UPDATE 테이블명 SET 컬럼명 = '갱신할 값' WHERE ...조건 ;
DELETE 특정 테이블 내 데이터의 전체, 또는 일부를 삭제할 때 DELETE FROM 테이블명 WHERE 조건;
SELECT 특정 테이블내 데이터를 전체 또는 일부를 획득할 때 SELECT 컬럼리스트 FROM 테이블명 WHERE 조건;

 

4. DCL(Data Control Language)

데이터 제어어이다. 데이터의 보완, 무결성, 데이터 회복, 병행수행, 제어 등 정의하는데 사용하는 언어이다.

명령어 내용 예시
GRANT DB 사용자에게 특정 작업의 수행 권한을 부여 할 때 GRANT 옵션 TO 사용자명; 
REVOKE 데이터베이스 사용자에게 부여권 수행 권한을 박탈 할 때  REVOKE CONNECT, RESOURCE FROM scott;
SET TRANSACTION 트랜잭션 모드로 설정 할 때  
BEGIN 트랜잭션의 시작을 의미 BEGIN;
LOCK 테이블 자원을 점유 할 때 LOCK;

 

4. TCL(Transaction Control Language)_Oracle

목적 : 데이터의 일관성을 유지하면서 안정적으로 테이터를 복구시키기 위해

트렌젝션은 데이터 처리의 한 단위이다.  데이터의 일관성을 유지하면서 안정적으로 데이터를 복구할 때 사용하는 쿼리문이다.

데이터 조작어(DML)에 의해 변경된 내용을 관리한다.(DDL은 auto commit)

명령어 내용 예시
COMMIT 모든 데이터를 DB에 저장하고 현재의 트랜잭션 종료 COMMIT;
ROLLBACK 저장되지 않은 모든 DML 취소하고 현재의 트랜잭션 종료 ROLLBACK;
SAVEPOINT 현재까지의 트랜잭션을 특정 이름으로 지정 SAVEPOINT 저장점 name;