이번 시간은 SQL의 개념과 종류에 대해 간단하게 알아보도록 하겠습니다. 특히 SQL의 종류의 경우 특정 용어가 등장하고 있고, DB를 다루는 분들이라면 기본적인 개념 정도로 숙지하고 계시면 좋다고 생각합니다. 이미 알고 계신 분들은 가볍게 읽고 넘어가 주시면 감사하겠습니다.
1. SQL의 개념
SQL은 Structured Query Language의 약자로서 구조화된 질의 언어 정도로 해석될 수 있습니다.
SQL은 우리가 관계형 데이터베이스 관리 시스템(RDBMS)를 사용할 때 해당 시스템의 데이터를 정의하고, 조작하고, 제어할 목적으로 만들어진 프로그래밍 언어의 한 종류로 생각해주시면 됩니다. 주요 SQL의 개념은 다음의 특징을 가지고 있습니다.
(1) RDBMS의 표준
SQL은 RDBMS를 사용할 때 만들어진 프로그래밍 언어이기 때문에 ORACLE, MYSQL로 대표되는 RDBMS에서는 모두 사용이 가능하다는 특징이 있습니다. 단, 오해하면 안 될 것은 이 내용은 표준화된 SQL을 한정하여 이야기하는 것이며, 각 RDBMS에서 사용되고 있는 독자적인 문법 또는 함수, 명령어 등은 차이점이 있습니다. 예를 들면 현재시간을 표현할 때 오라클에서는 SYSDATE를 사용하지만, MYSQL은 NOW() (또는 SYSDATE()) 형태로 사용되곤 합니다.
(2) 다른 언어와 달리 쉽게 배울 수 있다.
SQL은 기본적은 데이터를 정의, 조작, 제어에 방점이 찍혀 있는 언어입니다. 그렇기 때문에 프로그램을 만들기 위해 탄생한 다른 언어(C, JAVA, 등)보다는 학습 난이도는 쉬운 편입니다. 특히 테이블 생성 및 삭제, 데이터 조회, 데이터 추가, 데이터 삭제, 데이터 수정 이 정도만 할 수 있어도 최소한의 데이터를 제어함에 있어서 큰 문제는 없습니다. 다른 문법적인 요소는 이러한 최소한의 데이터를 제어함에 있어 보다 쉽고, 빠르고, 복잡한 이슈를 처리하기 위해 추가된 내용 정도로 이해해도 충분합니다. 즉, 다른 언어와 달리 겁먹을 필요 없는 언어이니 자신감을 가지고 학습해주시면 감사하겠습니다.
(3) 데이터 접근의 유일한 창구
SQL은 데이터를 접근하고자 만들어진 언어입니다. 따라서 모든 RDBMS는 SQL을 통해서만 데이터를 추가할 수 있고, 삭제할 수 있고, 조회할 수 있습니다. 그만큼 우리가 RDBMS를 이용해서 데이터 구조를 만들고자 한다면 SQL학습은 필수적입니다.
2. SQL의 종류
SQL의 기본적인 개념에 대해서 배웠다면 이제 SQL의 종류에는 어떤것이 있는지 알아보도록 하겠습니다.
(1) DDL
DDL은 Data Definition Language의 약자로서 우리나라 말로는 데이터 정의 언어 정도로 해석됩니다. DDL은 사용자가 구현하고자 하는 데이터베이스를 만들거나, 수정하거나, 삭제하거나, 데이터를 초기화시키는 역할을 담당하는 언어입니다. DDL에 해당하는 언어는 크게 4가지입니다.
- CREATE : 데이터베이스 객체를 생성합니다. 대표적인 예로 실질적으로 데이터를 넣을 수 있는 테이블을 만들 수 있고, VIEW, 인덱스, 프로시저와 같이 테이블 외의 요소들을 생성할 때 사용됩니다.
- ALTER : 데이터베이스 객체를 수정합니다. 예를 들면, 이미 만들어진 테이블의 컬럼 추가한다던가, VIEW 내용을 수정하거나, 기존 인덱스 내용을 변경하는 등의 작업을 할 때 사용합니다.
- DROP : 데이터베이스 객체를 삭제합니다. 예를 들면, 이미 만들어진 테이블을 없앤다던가, 기존에 사용하고 있던 VIEW를 더 이상 사용할 필요가 없어 삭제한다던가, 속도 개선을 위해 새롭게 인덱스를 만들었는데 오히려 속도가 느려져서 새롭게 만든 인덱스를 지운다던가 특정 요소를 제거할 목적일 때 DROP을 이용합니다.
- TRUNCATE : 테이블에 있는 데이터를 제거할 때 사용됩니다. 해당 명령어는 DELETE와 비슷해 보이지만 차이점으로는 DELETE는 일부 데이터만 제거할 수 있지만 TRUNCATE는 해당 테이블의 모든 데이터를 제거합니다. 또한 DELETE의 경우 삭제 후 복구할 수 있는 방법이 있지만 TRUNCATE는 복구할 수 없는 특징이 있습니다.
(2) DML
DML은 Data Manipulation Language의 약자로서 우리나라 말로는 데이터 조작 언어 정도로 해석됩니다.
DML은 말 그대로 데이터를 조작할 때 사용되는 언어로서 데이터 조작은 조회(SELECT), 추가(INSERT), 수정(UPDATE), 삭제(DELETE)를 의미합니다.
- SELECT : 데이터를 조회하는 SQL입니다. 상세한 내용은 해당 포스팅을 참고해주세요.(클릭)
- INSERT : 데이터를 추가하는 SQL입니다. 상세한 내용은 해당 포스팅을 참고해주세요.(클릭)
- UPDATE : 데이터를 수정하는 SQL입니다. 상세한 내용은 해당 포스팅을 참고해주세요.(클릭)
- DELETE : 데이터를 삭제하는 SQL입니다. 상세한 내용은 해당 포스팅을 참고해주세요.(클릭)
(3) DCL
DCL은 Data Control Language의 약자로서 우리나라 말로는 데이터 제어 언어 정도로 해석됩니다. DCL은 데이터베이스에 접근할 때 이를 제어하기 위해 만들어진 언어입니다. 해당 언어는 보통 다른 사용자가 나의 데이터베이스 특정 접근 권한을 얻을 때(또는 그 반대) 사용되는 언어입니다.
예를 들어 나는 HOME 계정을 사용하고 있고, 그중에 HOME_INFO라는 테이블이 있다고 가정하겠습니다.
이때 HOME2 계정에서 HOME 계정이 가지고 있는 HOME_INFO 테이블의 데이터를 조회하길 원합니다.
이럴 경우 HOME 계정은 DCL을 통해 HOME_INFO 테이블의 접근권한을 설정할 수 있게 되는데요. 이와 같이 DCL은 다른 사용자가 나의 데이터베이스에 접근을 원할 경우 이때 나는 권한을 허용할지, 또는 기존 권한을 박탈할지를 설정할 수 있는 언어입니다.
- GRANT : 다른 데이터베이스 사용자에게 권한을 부여할 때 사용됩니다.
- REVOKE : 다른 데이터베이스 사용자가 이미 이용 중인 권한을 박탈할 때 사용됩니다.
DCL은 위에서 언급했듯이 GRANT를 통해선 권한 부여를, REVOKE를 통해선 권한 박탈을 진행할 수 있습니다.
GRANT, REVOKE시 사용되는 '권한'의 종류는 다음과 같고, 보다 상세한 내용은 별도 포스팅을 통해 기술하도록 하겠습니다.
- CONNECT : 데이터베이스 또는 스키마에 연결하는 권한
- USAGE : 스키마 또는 함수와 같은 데이터베이스 개체를 사용할 수 있는 권한
- SELECT : 데이터베이스에서 데이터를 검색할 수 있는 권한
- INSERT : 데이터베이스에서 데이터를 추가할 수 있는 권한
- UPDATE : 데이터베이스에서 데이터를 수정할 수 있는 권한
- DELETE : 데이터베이스에서 데이터를 삭제할 수 있는 권한
DCL의 경우 보통 다른 회사와의 협업 과정을 통해 발생되는 경우가 많습니다. 예를 들면 내가 개발하고 있는 프로그램에서 타회사에서 관리하고 있는 특정 DB정보가 필요할 때 타회사에게 GRANT + SELECT 권한을 부여해달라고 요청할 수 있습니다. 빈번하게 발생되는 내용은 아니지만 일을 하다 보면 발생되는 경우가 종종 있기 때문에 참고로 알아두시면 업무함에 있어 많은 도움이 되시리라 생각됩니다.
'DB > DB일반' 카테고리의 다른 글
[DB] 02. DB(DataBase) (0) | 2022.08.26 |
---|