마케터의 SQL 맛보기#2

2019-12-18

데이터베이스

SQL 설치를 완료하고, 이제 SQL을 공부해 볼 차례이다. 그런데 관계형 데이터베이스를 조작할 수 있는 SQL을 왜 배워야 하는걸까? 간단히 짚고 넘어가보자.

흔히 현대사회를 가리켜 정보화 사회라고 한다. 그만큼 일상생활 속에서 수 없이 쏟아져 나오는 다양한 정보들이 우리의 생활과 밀접한 관계를 맺고 있는 것이다. 넓은 의미로 데이터베이스는 이러한 일상적인 정보들을 모아 놓은 것 자체를 의미한다. 그러나 일반적으로 데이터베이스는 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은 것을 말한다.

기존에 이러한 정보들은 엑셀과 같은 소프트웨어를 이용하여 저장해 놓았다. 하지만 관리 대상이 되는 데이터의 양이 점점 많아지고 같은 데이터를 여러 사람이 동시에 다양한 용도로 사용하게 되면서 엑셀 같은 개인이 관리하는 소프트웨어만으로는 한계에 부딪히게 된다.

결국 많은 사용자들은 보다 효율적인 데이터의 관리 뿐만 아니라 예기치 못한 사건으로 인한 데이터의 손상을 피하고, 필요시 데이터를 복구하기 위한 강력한 기능의 소프트웨어를 필요로 하게 되었다. 그래서 이런 기본적인 요구사항을 만족시켜주는 시스템이 나왔고, 이를 DBMS(Database Management System)라고 부른다.

SQL 공부에 사용할 MYSQL이 바로 이 DBMS중 하나이다. 현재 기업의 핵심 데이터는 대부분 관계형 데이터베이스 구조로 저장이 되고, 관계형 데이터베이스를 유일하게 조작할 수 있는 SQL 문장에 의해 관리되고 있으므로 관계형 데이터베이스와 SQL은 굉장히 중요하다. 중요성을 알았으니, 이제 공부해 보도록 하자.




SQL

SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터 제어를 하기 위해 사용하는 언어이다. SQL 문장은 단순 스크립트가 아니라 이름에도 포함되어 있듯이, 일반적인 개발 언어처럼 독립된 하나의 개발 언어이다. 하지만 프로그래밍 언어와 달리 SQL은 관계형 데이터베이스에 유일하게 사용되며 세미콜론(;)으로 분리되어 있는 SQL 문장단위로 독립되어 있다.


SQL 명령어는 총 4가지 종류로 구분할 수 있다.

1. 데이터 조작어(DML : Data Manipulation Language)

SELECT: 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어이다.

INSERT, UPDATE, DELETE: 데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류의 명령어들을 말한다.

2. 데이터 정의어(DDL : Data Definition Language)

CREATE, ALTER, DROP, RENAME: 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 그러한 구조를 생성, 변경, 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어들을 DDL이라고 한다.

3. 데이터 제어어(DCL : Data Control Language)

GRANT, REVOKE: 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주거나 회수하는 명령어를 DCL이라고 한다.

4. 트랜잭션 제어어(TCL : Transaction Control Language)

COMMIT, ROLLBACK: 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업 단위 별로 제어하는 명령어를 TCL이라고 한다.


SQL 명령어들의 종류를 알아보았다. SQL 명령어들을 예시에 적용하며 공부해 보기 전에, 명령어가 적용되는 관계형 데이터베이스의 기본 단위인 테이블(Table)에 대해서 알아보자. 테이블은 데이터를 저장하는 객체(Object)로서 관계형 데이터베이스의 기본 단위이다. 관계형 데이터베이스에서는 모든 데이터를 열과 행의 2차원 구조로 나타낸다. 세로 방향을 열, 가로 방향을 행이라고 하고, 행과 열이 겹치는 하나의 공간을 필드(Field)라고 한다.


sql2-1

상단의 그림을 통해서 한 번 더 이해해보자.



그리고 추가적으로 중요한 3가지 개념에 대해서 알아보겠다.

정규화(Normalization)

테이블을 분할하여 데이터의 정합성을 확보하고, 불필요한 중복을 줄이는 과정

기본키(Primary Key)

테이블에 존재하는 각 행을 한 가지 의미로 특정할 수 있는 한 개 이상의 열

외부키(Foreign Key)

다른 테이블의 기본키로 사용되고 있는 관계를 연결하는 열


sql2-2

이해를 돕기 위해 상단의 그림을 살펴보자. 그림 속 빨간 영역은 A 테이블의 기본키이다. 파란 영역은 B 테이블의 노란 영역이 참조하는 외부키가 되는 것이고, 노란 영역은 B 테이블의 기본키가 되는 것이다.


다음 글에서 SQL의 명령어들을 예시와 함께 알아보도록 하자.