DataBase 기초 _ SQL이란?
DB(DataBase)

DataBase 기초 _ SQL이란?

728x90

SQL의 역사

1970년대 초, IBM이라고 하는 컴퓨터 회사는 System/R이라는 DBMS와, 이것을 사용하기 위해 필요한 언어인 SEQUEL을 만들었다. SEQUEL은 Structured English Query Language의 줄임말이었는데 SEQUEL은 '씨퀄'이라고 발음되었다. 그런데 SEQUEL은 그 단어가 이미 다른 곳에서 사용되고 있다는 문제(상표권 문제) 때문에 그 이름이 SQL(Structured Query Language)로 변경되었다. 이런 역사 때문에 아직도 SQL을 보고 ‘씨퀄’이라고 발음하는 분들도 있는데요. 그것보다는 ‘에스큐엘’이라고 정확하게 발음하는 것이 좋다.

SQL은 그 뒤로 IBM, 오라클이라고 하는 회사 등에 의해 제각각 발전하기 시작했다. 그러다가 1987년, 국제 표준화 기구(ISO)에서 SQL에 관한 국제 표준(ISO 9075:1987)이 제정되었다. 그 뒤로 해당 표준은 기존 내용이 개정되고, 새로운 내용들이 추가됨으로써 발전해갔고, 2020년 6월 기준으로 현재는 2019년 개정안이 최신이다.

정리하면 현재 SQL은 공인된 국제 표준이 있다. 하지만 우리가 실제로 사용하는 SQL은 이 국제 표준에 완벽히 부합하지는 않다. 이게 무슨 말일까? 그것은 바로 Oracle, Microsoft SQL Server, MySQL 등의 DBMS에서 지원되는 SQL이 표준을 완벽히 준수하지는 않는다는 뜻이다.

각 DBMS의 SQL들은 SQL 국제 표준을 일부 준수하기는 하지만, 그 준수 정도가 각각 다르다.

예를 들어, 각 DBMS들은

  • 표준에 있는 기능을 지원하지 않거나
  • 표준에 있는 기능이더라도 다른 표현법을 사용하거나
  • 표준에는 없는 기능을 지원하는

등의 방식으로 표준을 조금씩 어기고 있고, 그 모습도 DBMS마다 다른데요.

사람의 언어에 비유하자면, SQL 국제 표준이라는 '표준어'가 존재한다면 실제로 각 DBMS가 지원하는 SQL은 '사투리'처럼 조금씩 차이가 있는 것이죠.

왜 이런 현상이 발생한 걸까..

그 이유는 다양하지만 일단 많은 DBMS 회사들이 '성능 향상'과 '더 다양한 기능 제공'을 위해서, 차라리 표준을 일부 벗어나는 것을 택하는 경우가 많기 때문이다. 그리고 DBMS에 관한 모든 사안에 대해서 표준에 기재되어 있는 것도 아니기 때문에, 그런 부분들에 있어서 DBMS마다 차이가 발생하기도 하구요.

그래서 SQL을 배울 때는 본인이 사용할 DBMS의 SQL을 바로 공부하는 것이 가장 정확하고 빠른 길이다.

하지만 SQL마다 조금씩 차이가 있더라도 서로 비슷한 부분이 훨씬 더 많기 때문에, 일단 한 DBMS의 SQL만 제대로 배워두면, 다른 DBMS의 SQL을 배우는 것은 어렵지 않다.

SQL 소개

하나의 언어인 SQL 혹은 Structured Query Language 은 데이터베이스 언어의 기준으로 주로 관계형 데이터베이스에서 사용이 된다. 예를 들어 MySQL, Oracle, SQLite, PostgreSQL 등 다양한 데이터베이스에서 볼 수 있다.

SQL 은 구조화된 쿼리 언어이다.

쿼리란 ?

여기에서 쿼리 (query) 란 무엇일까요?

직역을 하자면 쿼리는 '질의문' 이라고 볼 수 있다. 예시를 들자면 검색을 할 때 입력하는 검색어도 일종의 쿼리라고 볼 수 있죠. 검색을 하게 된다면 기존에 존재하는 데이터를 검색어로 필터하듯이 쿼리는 저장되어 있는 정보를 필터하기 위한 질문으로도 볼 수 있다.

따라서 SQL 이란 데이터베이스 용 프로그래밍 언어인데 한 마디로 데이터베이스에 쿼리를 보내 원하는 데이터만을 가져올 수 있게 해줍니다.

또한 이름에서 유추할 수 있듯이 SQL 은 structured, 즉, relation 이라고도 불리는, 데이터가 구조화된 테이블을 사용하는 데이터베이스에서 활용 가능하다.

이와 반면에 데이터 구조가 고정되어 있지 않은 데이터베이스들은 NoSQL 이라고 불린다. 관계형 데이터베이스와는 달리 테이블을 사용하지 않고 다른 형태로 데이터를 저장한다. 예를 들어 MongoDB 와 같은 문서 지향 데이터베이스가 있다.

이처럼 데이터베이스 세계에서는 데이터베이스 종류를 SQL 이라는 언어로 분류할 정도로 중요한 자리를 차지하고 있다. 그리고 앞서나왔듯이 SQL 을 사용하기 위해서는 데이터가 구조가 고정되어 있어야 한다.

SQL 종류

앞으로 알아보게 될 SQL 에서는 데이터를 조회하고 테이블을 만들고 하는 등 다양한 문법이 존재한다. 그리고 쿼리에 따라 기능이나 작업이 달라지죠. 영어나 한국어 등과 같은 언어에서도 주어나 동사 등 세부적으로 나뉘어지는 것처럼 SQL 에서도 역할에 따라 나뉘어진다.

 

Data Definition Language (DDL)

DDL 은 데이터를 정의할 때 사용되는 언어를 가리키는데, 예를 들어 테이블을 만들 때 사용하는 CREATE 이나 테이블을 제거할 때 사용되는 DROP 등 이다. 데이터베이스의 테이블과 같은 오브젝트를 정의할 때 사용된다.


Data Manipulation Language (DML)

DML 은 데이터베이스에 데이터를 저장할 때 사용되는 언어를 가리키는데, 예를 들어 INSERT 처럼 새로운 레코드를 추가할 때 사용되는 문법들이 포함된다. 따라서 데이터를 삭제하는 DELETE 라든가 변경하는 UPDATE 등이 여기에 포함된다.


Data Control Language (DCL)

DCL 은 데이터베이스에 대한 접근 권한과 관련된 문법이다. 어느 유저가 데이터베이스에 접근할 수 있는지 권한을 설정하거나 없애는 역할이죠. 예를 들어 권한을 주는 GRANT 나 권한을 가져가는 REVOKE 등이 포함된다.

728x90