[Database] DBMS 데이터 언어 _ SQL의 종류

Dabi·2022년 5월 17일
0

데이터베이스

목록 보기
9/10

이번 포스팅은 SQL의 종류에 대하여 다루고 있습니다.


혹시 이전 포스팅에서 관계형 데이터 베이스 언어인 SQL과 비관계형 데이터 베이스 언어인

NOSQL을 다뤘던 것을 기억하시나요?

이번 포스팅에서는 그중 SQL에 속하는 명령어들의 종류에 대하여 알아보는 시간을 가지도록 하겠습니다.


SQL | Structured Query Language


Structured Query Language : 규격화된, 규칙을 정해놓은 질의 언어


SQL을 사용하는 RDBMS는 Oracle, MySQL, MSSQL, PostgreSQL등 다양한 엔진들이 존재합니다.



이러한 SQL 명령어의 종류는 크게 아래와 같이 다섯가지로 나뉩니다.

🔴 DQL(질의어)

🟠 DML(데이터조작어)

🟡 DDL(데이터정의어)

🟢 TCL(트랜잭션처리어)

🔵 DCL(데이터제어어)


하나씩 차례대로 알아보도록 하겠습니다😁

DQL (데이터 질의 언어,Data Query Language)


- 데이터를 질의하고 조회하는데 사용됩니다.

- SELECT를 DQL로 따로 빼기도 하지만, 대부분 일반적으로 DML에 포함시킵니다.

💬 일반적으로 대부분의 경우 아래의 DML의 경우에 포함시키므로 DML로 이해하셔도 무방합니다❗


SELECT : 데이터를 검색하는데 사용 
			
            *옵션*
            
			- ALL : Default 옵션으로 별도로 지정하지 않아도 되며, 중복되는 데이터가 있더라도 모두 출력한다.
            
            - DISTINCT : 중복된 데이터가 있는 경우 1건만 출력

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


- 데이터베이스의 데이터를 관리하는데 사용됩니다. DML 명령은 자동으로 커밋되지 않습니다.

- DML 명령에 의한 변경은 데이터베이스에 영구적이지 않으므로 롤백으로 되돌릴 수 있습니다.


DML(INSERT, UPDATE, DELETE, SELECT) 명령어의 경우, 조작하려는 테이블메모리 버퍼에 올려놓고 작업을 하기 때문에 실시간으로 테이블에 영향을 미치지는 않습니다.


따라서 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서는 COMMIT 명령어를 입력하여 TRANSACTION을 종료해야 합니다.


그러나 SQL Server의 경우는 DML의 경우도 AUTO COMMIT으로 처리되기 때문에 실제 테이블에 반영하기 위해 COMMIT명령어를 입력할 필요가 없습니다.


INSERT : 테이블에 데이터를 삽입 (추가)

UPDATE : 테이블 내의 기존 데이터를 수정

DELETE : 테이블에서 데이터를 삭제

 		테이블의 전체 데이터를 삭제하는 경우, 시스템 효율상 DELETE 보다는 TRUNCATE를 사용한다.
        
        하지만!! TRUNCATE는 ROLLBACK이 불가능하므로 주의해야한다.
        
        
MERGE : PSERT 작업 (INSERT 또는 UPDATE)
데이터가 테이블에 존재하지 않으면 INSERT, 존재하면 UPDATE를 수행한다

CALL : PL/SQL 또는 Java 서브 프로그램 호출

EXPLAIN PLAN	: 데이터 접근 경로를 해석 
(SQL문이 어떻게 실행/작동하는지에 대한 점검/분석을 할 수 있도록 도와준다)

LOCK TABLE	: 동시성 제어

DDL (데이터 정의 언어, Data Definition Language) - Auto Commit


데이터베이스 구조 또는 스키마(schema)를 정의하는데 사용됩니다.

💥주의할 점💥


직접 데이터베이스의 테이블에 영향을 미치기 때문에 DDL 명령어를 입력하는 순간, 명령어에 해당하는 작업이 즉시(AUTO COMMIT) 완료되어버립니다.


CREATE  : 데이터베이스의 객체를 생성

ALTER   : 데이터베이스의 구조를 변경

DROP    : 데이터베이스의 객체를 삭제 
(테이블의 모든 데이터와 구조를 삭제)

RENAME  : 데이터베이스의 객체 이름을 변경

COMMENT : 데이터에 주석등을 추가

TRUNCATE: 테이블에 할당된 모든 공간을 포함하여 모든 레코드를 제거.
(테이블 객체의 저장공간 재사용 가능)
 

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


데이터베이스에 권한을 부여하는데 사용됩니다.


💥주의할 점💥

직접 데이터베이스의 테이블에 영향을 미치기 때문에 DCL 명령어를 입력하는 순간,
DDL과 마찬가지로 명령어에 해당하는 작업이 즉시(AUTO COMMIT) 완료되어버립니다.



GRANT  : 데이터베이스에 대한 사용자의 액세스 권한을 제공
         (특정 사용자만 특정 작업을 할 수 있도록 지정 가능)
         
REVOKE : GRANT 명령으로 주어진 액세스 권한을 철회.

TCL (트랜잭션 제어 언어, Transaction Control Language)


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


COMMIT   : 	트랜잭션의 작업 결과를 저장 반영 (트랜젝션 완료)

ROLLBACK :	데이터베이스를 마지막 COMMIT 된 시점의 상태로 복원
(데이터에 대한 변경 내용은 논리적인 트랜잭션으로 그룹화 될 수 있다.)

SAVEPOINT : 현 시점에서 SAVEPOINT를 지정하여 트랜잭션의 일부만 롤백할 수 있다	

            저장점(SAVEPOINT)을 정의하면 롤백(ROLLBACK)할 때 트랜잭션에 포함된 전체 작업을 
            롤백하는 것이 아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다.

            또한 복수의 저장점을 정의할 수 있으며, 동일이름으로 저장점을 정의했을 때는 
            나중에 정의한 저장점이 유효하다.

            ex) 복잡한 대규모 트랜잭션에서 에러가 발생했을 때 SAVEPOINT까지의 트랜잭션만 롤백하고 
            실패한 부분에 대해서만 다시 실행할 수 있다. (일부 툴에서는 지원이 안 될 수 있음)


SET TRANSACTION : Transaction 지정

profile
논리적인 사고와 추론을 지향합니다.

5개의 댓글

comment-user-thumbnail
2022년 6월 1일

용어가 계속 헷갈렸었는데 덕분에 다시 익혔습니다. 감사합니다!

답글 달기
comment-user-thumbnail
2022년 6월 1일

SQL명령어의 종류에 대해서 자세히 알 수 있었습니다! 유용한 포스팅 감사합니다!

답글 달기
comment-user-thumbnail
2022년 6월 1일

SQL 종류에 대해서 잘 정리되어 있어서 이해하기 좋았습니다. 감사합니다!

답글 달기
comment-user-thumbnail
2024년 3월 29일

데이터베이스 트랜잭션 언어: 감사 인사
데이터베이스 트랜잭션 언어에 대한 훌륭한 요약을 제공해 주셔서 감사합니다.

COMMIT, ROLLBACK, SAVEPOINT와 같은 주요 개념과 SAVEPOINT의 활용법까지 명확하게 설명해주셔서 KinitoPET 정보가 잘 전달되었습니다.

이러한 정보는 데이터베이스 시스템의 작동 방식을 이해하고 트랜잭션 관리에 대한 지식을 쌓는 데 매우 유용합니다.

답글 달기
comment-user-thumbnail
2024년 9월 20일

I didn't know much about NoSQL, but this is such a useful article! Thank you.
https://fmsnapchat.app/

답글 달기