본문 바로가기
Computer Science/AI & Data

SQL이란?

by Henry Cho 2025. 2. 13.

포스트 난이도: HOO_Junior


학교 직원분 따님이 걸스카우트를 해서 쿠키를 샀다. 미국은 걸스카우트에 있는 아이들이 쿠키를 팔아서 본인이 모은 돈으로 자기계발에 필요한 활동을 한다. 조카 용돈 준다는 마음으로 사고 남은 돈도 베티한테 주라고 했는데 나중에 딸한테 줬는지 확인해 봐야겠다. 농담이고 매번 행정업무에 도움을 받기에 큰 건 아니지만 서로 도와주면 기분이 좋다.

Figure 1. 그래도 양은 많다.

요새는 쿠키를 직접 만드는게 아니라 이렇게 업체에서 나오는 것 같은데 쿠키 품질이 좋지는 않지만 양은 배신하지 않는다 (사실 맛있게 먹었다). 

 

아무튼 본론으로 돌아와서 이번 포스팅에서는 SQL에 대해서 살펴보도록 하겠다. Database 수업을 들었음에도 막상 졸업해서 DBMS 관리자 잡을 찾으려고 하니 SQL이 뭐지 하는 브로들을 위한 포스트이다. 아마 대충 훑어 내려가다 보면 기억이 날 테니 걱정하지 말고 Database 수업을 듣기 전의 브로들에게도 미리 알아두면 좋은 기본적인 내용이다.


# SQL이 왜 필요한가요?

"데이터"라는 단어 자체는 우리에게 있어 매우 친근하다. 흔히 눈에 보이지 않는 컴퓨터 안에 있는 것들만 데이터라고 착각할 수 있지만 종이로 만들어진 책이나 사용 설명서 등도 데이터에 해당된다. 이러한 데이터들을 관리하기 쉽도록 코드로 구성된 "데이터"로 변환해서 우리가 일반적으로 말하는 데이터로 사용한다. 여기서 문제는 데이터를 수집하는 것까지는 좋은데 수많은 데이터를 "어떻게" 관리할 것인지에 대해서 기준이 없으면 엉망진창이 된다는 것이다.

 

처음 자신의 방을 가지게 된 어린아이에게 "자 이제 네 방을 정리하렴."이라고 말하면 정리를 어떻게 하는지 모를 수 있다. 왜냐하면 아이 기준에서는 장난감이 바닥에 모두 있어야 사용하기 편하기에 정리가 되었다고 생각할 수 있기 때문이다. 따라서 우리는 아이에게 정리를 왜 해야 하는지와 내가 말하는 기준의 정리가 무엇인지를 알려줘야 한다. 이때 아이에게 정리라는 것을 알려주는 언어가 바로 SQL이라는 것이다.

 

당연한 이야기지만, 우리가 기계어 01010101...을 해서 컴퓨터에게 알려줘도 된다. 하지만 현실적으로 어렵기에 SQL이라는 언어를 만들어서 "정리"에 필요한 대표적인 기능들을 표준으로 만들어서 사용하는 것이다. 마치 즐겨찾기를 기억하면 된다. 매번 Delete 기능에 대해서 모든 코딩을 해서 알려줄 필요 없이 DELETE라고 작성하고 삭제하고 싶은 데이터를 지정만 해주면 컴퓨터가 이를 따라서 데이터베이스 내에서 정리가 이뤄진다.


# SQL은 프로그래밍 언어가 아니다.

DBMS 관리자나 데이터 관련 면접을 보다보면 SQL이 프로그래밍 언어로 착각하는 브로들이 의외로 많다. 물론 DBMS를 잘 다루는데 SQL을 하나의 프로그래밍 언어로 착각하고 있었던 것이다. SQL은 데이터베이스를 관리하기 위해서 사용되는 언어이다. 마치 HTML이 웹의 프런트엔드를 다루기 위한 언어이듯이 SQL도 데이터베이스를 관리하는 목적으로 만들어진 언어이다. 따라서 프로그램을 만들 수는 없지만 데이터베이스를 관리하는 여러 툴들에서 SQL를 많이 사용하고 있다.

 

SQL은 쿼리 (Query) 언어의 구조를 가지고 있으며 데이터베이스에 접근하거나 수정하려고 할 수 있게 해 준다. 쿼리는 데이터베이스에 있는 하나의 데이터셋 묶음이라고 생각하면 된다. 따라서 SQL을 통해서 쿼리를 실행시킬 수도 있고 쿼리 안에 있는 기록이나 데이터들을 수정하거나 새롭게 만들어줄 수도 있다. 또한 SQL에서 특정한 기준을 정해준다면 데이터베이스에 접근할 수 있는 조건도 설정할 수 있다.


# Keywords

SQL에서 사용하는 대표적인 5가지의 기능이 있다. SQL 기능들을 나타내는 용어들은 영어 단어의 의미와 거의 동일하기 때문에 뜻을 생각하면서 보면 쉽게 사용할 수 있다.

  • SELECT: 데이터를 추출할때 사용하는 기능이다. 한마디로 원하는 부분의 데이터를 선택할 때 쓸 수 있다.
  • UPDATE: 데이터베이스에 있는 데이터를 업데이트할 때 사용한다.
  • DELETE: 데이터베이스에 있는 데이터를 지울 때 사용한다.
  • INSERT: 새로운 데이터를 데이터베이스에 추가할때 사용한다.
  • WHERE: 어떤 위치에 데이터를 다룰건지를 지정할 때 사용한다.

이 외에도 정말 많은 기능들이 존재하는데 그 중에서도 5가지를 소개한 이유는 해당 기능들은 다른 기능들과 합쳐져서 사용이 가능하기 때문이다. 예를 들어서 INSERT의 경우에는 "INSERT INTO"와 같이 두 개의 기능이 합쳐져서 새로운 데이터를 특정 데이터베이스에 넣을 때 사용할 수도 있다. SELECT의 경우도 SELECT만 사용하는 것이 아니라 "SELECT*FROM Postings"과 같이  사용하여 모든 Postings 데이터를 선택할 수도 있다.


# SQL의 Keywords은 Case Senstive하지 않는다.

SQL에서 keywords라고 불리는 기능들은 소문자를 쓰든 대문자를 쓰든 문제가 되지 않는다. 이를 Case sensitive라고 하는데 sensitive 하지 않다는 것이다. "오잉 소문자로 쓰니까 안되던데용?"이라고 할 수 있는데, 이는 키워드가 아니고 데이터 내용에 소문자와 대문자를 달리하면 다른 데이터라고 인식이 될 수 있다. 여기서 말하는 Case sensitive는 키워드에 해당한다.

 

추가로 SQL은 앞서 말했듯이 데이터베이스에서 사용하는 언어이다. 따라서 SQL를 기반으로 한 다양한 툴들이 있는데, 대표적으로 MySQL Server이라든가 MS access, IBM DB2 등 다양한 데이터베이스에서 사용하다 보니 Case sensitive가 다를 수도 있다는 점을 유의해야 한다. 한마디로 대문자로 쓰면 되는데 귀찮으면 그냥 섞어서 써도 무방하다. 다만 다른 개발쟁이들이 봤을 때 "얘 지저분하네."라고 생각은 할 수 있다.


 

728x90

댓글