SQL이란 무엇인가
SQL이란 무엇인가?
- 아래 글은 2019년 11월부터 2개월간 칸아카데미 서포터즈로 활동하면서 작성한 글입니다.
SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 언어이다.
질의어 중 가장 인기있는 것이기도 하며, 많은 DBMS들이 SQL을 지원한다.
세 문장을 찬찬히 뜯어보자.
일단, 데이터베이스는 데이터베이스 관리 시스템이 아니다.
DB != DBMS
데이터베이스는 말 그대로 데이터베이스 자체이다.
여러 사람/프로그램이 쓸 것을 염두에 두고 만들어진 정보의 집합이다.
일상 생활에서 우리는 정보를 저장해두고 쓸 일이 아주 많다.
페이스북, 은행, 쇼핑몰 등 다양한 서비스에서 유저들의 정보를 데이터베이스에 저장한다다.
그렇게 저장해둔 정보는 필요할 때 조회하거나, 삭제하기도 하고, 수정하기도 한다.
이러한 일련의 행위들을 하기 위해 필요한 것이 DBMS다. DBMS로 데이터베이스를 다루는 것이다.
그렇다면 관계형 데이터베이스는 무엇인가?
관계형 데이터베이스는 관계형 모델을 바탕으로 하는 데이터베이스다.
(모델이라는 것은 DBMS가 지원하는 데이터베이스의 구조나 형식을 말한다.)
관계형 데이터베이스에서는 데이터를 컬럼(column)과 로우(row)로 나타낸다.
관계형 데이터베이스는 왜 유용한가?
예를 들어 칸아카데미 유저들에 대한 자료를 데이터베이스에 저장한다고 가정하자.
유저의 id, 유저의 이름, 주 활동 지역을 “사용자” 테이블에 저장한다.
그런데 어떤 유저가 어떤 뱃지를 얻었는지 기록하고자 한다.
그러면 데이터베이스에 정보를 어떻게 담는 게 바람직한가?
이름, 주 활동지역, 얻은 뱃지의 이름, 그 뱃지의 포인트 기타 등등… 을 한 테이블에 다 저장하는 게 좋은가?
그렇게 하는 것보다, 유저 아이디와 각 아이디에 해당하는 유저가 얻은 뱃지의 아이디를 따로 빼서 테이블로 저장해두는 게 좋다.
이렇게 하면 어떤 유저가 무슨 뱃지를 얻었는지 파악하기에 효율적이다.
여기서 효율적이라 함은 필요한 정보를 조회 및 수정 등을 하기에 용이하다는 뜻이다.
마지막으로, SQL은 질의어라고 했는데 질의어는 무엇인가?
질의어는 DBMS에 질의를 할 수 있게 해주는 언어이다. 질의는 영어로 query라고 한다.
query의 뜻 자체는 “문의하다, 의문을 제기하다”이다.
예를 들어 유저들의 정보를 담은 데이터 테이블을 만들고 싶다고 가정하자. 지금 컴퓨터에는 RDBMS가 실행되고 있다.
어떻게 만들 것인가? 물론 GUI를 이용해서 SQL 없이도 만들 수 있겠지만, SQL을 이용해서 명령을 내려서 만들 수 있다.
“CREATE TABLE (이하 생략)” 하는 식으로 말이다.
참고:
칸 아카데미 https://ko.khanacademy.org/computing/computer-programming/sql/sql-basics/v/welcome-to-sql
위키피디아 https://ko.wikipedia.org