데이터 베이스/SQL 첫걸음(인프런 강의)

Ch02. 데이터 베이스 시작 - SQL이란

webmaster 2025. 10. 4. 21:51
728x90

SQL(Structured Query Language)?

우리는 앞서 CREATE , INSERT, SELECT같은 가지 영어 단어로 데이터베이스를 다뤄봤다. 명령어들의 집합이 바로 SQL(Structured Query Language), 우리말로는 구조화된 질의 언어.

 

여기서 또다시 질문을 던져보자. 우리는 SQL이라는 새로운 언어를 배워야만 하는가? MySQL, Oracle, PostgreSQL, Microsoft SQL Server 세상에는 다양한 종류의 관계형 데이터베이스가 존재한. 예를 들어서 현재 팀에서 MySQL 사용해서 열심히 배웠는데, 다른 팀으로 이동하거나 다른 회사로 이직했을 Oracle 사용한다고 가정해보자. 만약 데이터베이스들이 각자 다른 명령어를 사용한다면, 우리는 데이터베이스를 바꿀 때마다 새로운 언어를 처음부터 배워야 하는 끔찍한 상황에 놓일 것이다.

 

다행히도, SQL 국제 표준 기구(ISO/ANSI) 의해 표준이 정해진 '관계형 데이터베이스의 표준 언어'. 마치 세계 공용어처럼, 대부분의 관계형 데이터베이스는 표준 SQL 지원한다. 물론 데이터베이스마다 자신들만의 추가 기능이나 약간의 문법 차이는 있지만, CREATE , SELECT , INSERT 와 같은 핵심적인 문법은 거의 동일하다. 따라서 한번 SQL 제대로 배워두면, 어떤 관계형 데이터베이스를 만나더라도 금방 적응할 있다. 이것이 우리가 SQL 배우는 가장 이유다.

 

참고: 데이터베이스 방언(Dialect)
SQL 표준을 넘어서 각 DBMS는 자신들만의 추가 기능이나 추가 문법을 제공하는데, 이것을 방언(사투리, Dialect)라고 한다

 

SQL 다른 중요한 특징은 선언적 언어(Declarative Language)라는 점이다. 이게 무슨 말이냐 하면, 우리는 데이터베이스에게

'어떻게(How)' 데이터를 가져올지 지시하는 것이 아니라, '무엇을(What)' 원하는지만 선언적으로 명시한다는 뜻이다. 예를 들어, "서울에 사는 고객 명단을 찾아줘" 라고 SQL 요청하면, 데이터베이스 관리 시스템(DBMS) 내부적으로 가장 효율적인 방법을 스스로 찾아서 결과를 가져다준다. 따라서 우리는 복잡한 내부 과정을 필요가 없다. 이러한 특징 덕분에 우리는 데이터 처리의 본질에만 집중할 있다.

SQL 명령어의 4가지 종류

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

  • 목적: 데이터의 '구조'를 정의하고 관리하는 언어다. 데이터 그 자체가 아니라, 데이터를 담을 그릇(테이블)이나 창고(데이터베이스)의 설계도를 만들고, 수정하고, 제거하는 역할을 한다.
  • 창고 비유: 창고 건물을 짓고(CREATE), 내부 선반 구조를 바꾸거나(ALTER), 창고를 철거하는(DROP) 업에 해당한다. 선반에 놓인 물건(데이터) 건드리지 않고, 구조 자체에만 관여한다.
  • 주요 명령어:
    • CREATE : 데이터베이스, 테이블 등의 구조를 생성한다.
    • ALTER : 이미 만들어진 테이블의 구조를 변경한다.
    • DROP : 데이터베이스, 테이블을 완전히 삭제한다.

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

  • 목적: 테이블 안에 들어있는 실제 '데이터'를 직접 조작(추가, 조회, 수정, 삭제)하는 언어다. SQL에서 가장 빈번하게 사용되는 명령어들이 여기에 속한다.
  • 창고 비유: 선반에 물건을 진열하고(INSERT), 진열된 물건의 목록을 확인하며(SELECT), 물건의 가격표를 바꾸고(UPDATE), 팔린 물건을 선반에서 치우는(DELETE) 작업에 해당한다.
  • 주요 명령어
    • INSERT: 테이블에 새로운 데이터를 추가한다.
    • SELECT : 테이블에서 데이터를 조회(검색)한다.
    • UPDATE : 기존 데이터를 수정한다.
    • DELETE : 기존 데이터를 삭제한다.

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

  • 목적: 데이터에 대한 접근 권한을 부여(GRANT)하거나 회수(REVOKE)하는 등, 데이터의 보안과 관련된 권한을 제어한다.
  • 창고 비유: 창고 관리자가 직원들에게 창고 출입 키를 나눠주거나 특정 구역만 들어갈 있는 권한을 주는 것에 해당한다. 마케팅팀에게는 재고 조회 권한만 주고, 배송팀에게는 주소 조회 수정 권한을 주는 식이.
  • 주요 명령어
    • GRANT : 특정 사용자에게 특정 작업에 대한 수행 권한을 부여한다.
    • REVOKE : 특정 사용자에게서 이미 부여한 권한을 회수한다.

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

  • 목적: DML에 의해 수행된 데이터 변경 작업들을 하나의 거래(Transaction) 단위로 묶어서 관리하는 언어다. 작업의 일관성을 보장하여 데이터가 잘못되는 것을 방지한다.
  • 은행 계좌 이체 비유: 당신이 친구에게 5 원을 계좌 이체하는 상황을 생각해 보자. 작업은 사실 단계 이루어져 있다.
    • 계좌에서 5 원이 빠져나간다 (UPDATE). -> 친구 계좌에 5 원이 들어온다 (UPDATE).
    • 만약 1 작업만 성공하고 시스템이 멈춰버린다면, 5 원은 공중으로 증발해 버린다. 이런 사태를 막기 , 작업을 하나의 덩어리(트랜잭션) 묶는다. 덩어리는 작업이 모두 성공해야만 최종적으로 저장 (COMMIT)되고, 하나라도 실패하면 모든 작업을 없었던 일로 되돌린다(ROLLBACK).
  • 주요 명령어
    • COMMIT : 트랜잭션의 모든 작업을 최종적으로 데이터베이스에 확정, 저장한다.
    • ROLLBACK : 트랜잭션의 모든 작업을 취소하고 이전 상태로 되돌린다.

 

이처럼 SQL 단순히 데이터를 조회하는 언어를 넘어, 데이터의 구조를 정의하고(DDL), 실제 데이터를 조작하며(DML), 접근 권한을 제어하고(DCL), 작업의 안정성을 보장하는(TCL) 매우 체계적이고 강력한 언어 체계다.

728x90