데이터분석/SQL

SQL 프로그래밍 2 - SQL의 분류(DDL, DML, DCL)

devbean 2022. 1. 2. 13:44
반응형

https://kbkb456.tistory.com/98

 

SQL 프로그래밍 1 - SQL을 학습하는 방법과 연습환경(sql fiddle, sql test)

데이터 분석이 화두에 오르면서 데이터베이스에서 대이터를 추출하는 SQL에 대한 관심도가 높아지고 있다. 1. 그럼 우리가 왜 SQL을 배워야 하는 걸까? - 일하는데 많이 쓰인다. 요새는 개발자나

kbkb456.tistory.com

이전 시간에 SQL을 왜 배워야 하고 어떻게 편하게 실습할 수 있는지 알아봤다.

 

SQL이란 무엇일까?

- 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어

- 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안

- 많은 수의 데이터베이스 관련 프로그램들이 SQL을 표준으로 채택

 

SQL의 분류

SQL 분류

SQL은 용도에 따라서 DDL, DML, DCL, TCL으로 나뉜다. 각각 알아보도록 하자

DDL(Data Definition Language, 데이터 정의어)

- 데이터베이스 구조 또는 스키마(schema)를 정의하는 데 사용함

  (데이터베이스, 테이블, 뷰, 인덱스등 데이터 베이스 개체를 생성/삭제/변경하는 역할)

- 직접 데이터 베이스의 테이블에 영향을 주기 때문에 실행 즉시 AUTO COMMIT 함

- AUTO COMMIT이란? 자동으로 테이블의 상태를 데이터베이스의 적용하는 것

 

언어 역할
CREATE 데이터베이스의 객체(테이블) 생성
ALTER 데이터베이스의 구조 변경
DROP 데이터 베이스의 객체(테이블)삭제 -> 테이블의 모든 데이터와 구조를 삭제
RENAME 데이터 베이스의 객체이름(테이블, 컬럼)을 변경
COMMENT 데이터의 주석(설명) 추가
TRUNCATE 테이블에 할당된 모든공간의 레코드를 제거(테이블 객체 자체는 제거되지 않음)

 

DML(Data Manipulation Language, 데이터 조작어)

- 데이터 베이스 관리나 조회 시 사용

- AUTO COMMIT 되지 않음 -> DML에 의한 데이터의 변경은 롤백이 가능함

- DML 명령어의 경우 조작하는 테이블을 메모리에 올려놓고 작업함 -> 실시간으로 테이블에 영향을 주지 않음

- 따라서 실제로 DML을 통한 테이블 변경을 하려면 COMMIT 명령어를 쳐줘야 함

- SQL Server의 경우 DML도 AUTO COMMIT이 적용되니 조심해서 활용해야 함

 

언어 역할
SELECT 데이터 베이스에서 데이터를 검색할 때 활용
INSERT 테이블에 데이터를 추가
UPDATE 테이블 내의 기존 데이터들을 수정
DELETE 테이블에서 데이터를 삭제
MERGE 데이터 테이블에 존재하지 않으면 INSERT 아니면 UPDATE
CALL PL/SQL 또는 JAVA 서브 프로그램 호출
LOCK TABLE 동시성 제어
EXPLAIN PLAN 데이터 접근 경로를 해석 -> SQL문이 어떻게 실행/작동하는지

 

DCL(Data Control Language, 데이터 제어 언어)

- 데이터 베이스 접근권한을 부여하는 데 사용

언어 역할
GRANT 데이터 베이스에 대해서 어떤 사용자에게 엑세스 권한을 제공
REVOKE GRANT로 제공되었던 엑세스 권한 철회

 

TCL(Transaction Control Language, Transaction 제어 언어)

- 데이터의 보안, 무결성, 회복, 병행수행에 대한 제어를 하는 데 사용

언어 역할
COMMIT 트랜잭션의 작업결과를 저장하고 데이터베이스에 반영
ROLLBACK 데이터베이스를 마지막 COMMIT된 시점의 상태로 복원
SAVEPOINT 특정 시점의 트랜잭션을 정의하는데 활용 -> 해당 SAVEPOINT로 롤백가능
SET TRANSACTION Transaction 지정
반응형