SQL 첫걸음 - 데이터베이스·테이블·SQL 이해하기
요약
SQL·DB를 처음 접하는 정보처리기사 준비생을 위해 데이터베이스가 필요한 이유, 테이블의 구조(행과 열), SQL이라는 언어의 정체, DDL·DML·DCL 3대 분류를 일상 비유로 풀어냅니다.
데이터베이스는 왜 필요한가? 쌩기초
가게를 운영한다고 상상해봅시다. 고객 명단·상품 목록·주문 기록을 엑셀 파일이나 노트에 적어두면 처음엔 괜찮습니다. 그런데 다음과 같은 상황이 오면 금방 한계에 부딪힙니다.
- 직원 5명이 동시에 고객 명단을 수정하려고 한다
- 주문 기록이 수백만 건으로 불어난다
- 컴퓨터가 고장나서 기록이 날아갔는데 원상 복구해야 한다
- "서울 거주 고객 중 작년에 3번 이상 주문한 사람"을 1초 만에 조건에 맞는 고객 목록으로 화면에 보여줘야 한다
이런 요구를 엑셀이나 메모장은 감당하지 못합니다. 데이터베이스(Database)는 이런 문제를 해결하기 위해 만들어진 데이터 전용 저장소입니다. 도서관이 책을 체계적으로 분류해 보관하듯이, 데이터베이스는 어떤 항목(열)을 어떤 타입(숫자/문자)으로 담을지 미리 정해두고, 그 규칙에 맞는 데이터만 저장하며 빠르게 찾아 꺼내줍니다.
데이터베이스는 혼자 돌아가지 않습니다. 데이터베이스를 관리하는 소프트웨어가 필요한데, 이것을 DBMS1라고 부릅니다. Oracle, MySQL, PostgreSQL 등이 대표적인 DBMS입니다.
테이블은 행과 열로 이루어진 표 쌩기초
데이터베이스 안에 데이터는 테이블(Table) 형태로 저장됩니다. 테이블은 엑셀 시트와 모양이 비슷합니다 — 가로 줄(행)과 세로 줄(열)로 이루어진 표입니다. 다만 아래에서 설명할 '타입 제한'이라는 큰 차이가 있습니다.
예시: 학생 테이블
| 학번 | 이름 | 학년 |
|---|---|---|
| 20250101 | 김감자 | 1 |
| 20250102 | 이고구마 | 2 |
| 20250103 | 박옥수수 | 3 |
위 표에서:
- 가로 줄 하나는 "학생 한 명의 정보"를 나타냅니다. 이를 행(Row) 또는 튜플2·레코드라고 부릅니다. 셋은 같은 개념입니다.
- 세로 줄 하나는 "학번·이름·학년처럼 어떤 항목을 담을지"를 정합니다. 이를 열(Column, 흔히 '컬럼'이라고도 부릅니다) 또는 속성3이라고 부릅니다.
- 테이블 전체의 세로줄 구성(학번·이름·학년) 자체가 테이블의 구조이며, 이는 데이터를 넣기 전에 미리 정해져 있어야 합니다.
같은 개념을 부르는 말이 여러 가지라 처음에는 헷갈릴 수 있습니다. 아래 표로 정리해두겠습니다.
| 가로 줄 | 세로 줄 |
|---|---|
| 행(Row) = 튜플(Tuple) = 레코드(Record) | 열(Column) = 컬럼 = 속성(Attribute) = 필드(Field) |
정처기에서는 보통 '튜플'과 '속성'이 나오지만, 나머지도 같은 말이니 당황하지 마세요.
엑셀과 다른 중요한 점은, 테이블은 각 열에 어떤 타입의 값만 들어갈 수 있는지 미리 정해둔다는 점입니다. 예를 들어 "학년" 열은 숫자만, "이름" 열은 최대 50자 문자열(글자로 이루어진 값, 예: '김감자', '서울시')만 받도록 제한할 수 있습니다. 이렇게 규칙을 미리 정해두면 엉뚱한 값이 섞여 들어오는 실수를 원천 차단할 수 있습니다.
이처럼 표(테이블) 형태로 데이터를 저장하는 데이터베이스를 관계형 데이터베이스라고 부릅니다. 정처기에서 다루는 SQL은 이 관계형 데이터베이스에 쓰는 언어입니다.
SQL은 테이블에 말을 거는 언어 쌩기초
테이블에 데이터를 넣고, 꺼내고, 지우는 명령을 DBMS에 전달하는 언어가 바로 SQL(Structured Query Language, 구조화된 질의(데이터를 어떻게 달라고 묻는 것) 언어)입니다.
SQL은 프로그래밍 언어인데도 영어 문장처럼 생겨서 처음 봤을 때 의외로 읽기 쉽습니다.
위 한 줄을 자연어로 번역하면 다음과 같습니다.
SELECT→ "가져와라 (Select = 고르다)"이름→ "이름 컬럼을"FROM 학생→ "학생 테이블에서";→ 명령 끝
즉 **"학생 테이블에서 이름 컬럼을 가져와"**라는 의미입니다. DBMS에게 이 문장을 전달하면, 위에 나온 학생 테이블을 뒤져서 이름 값(김감자, 이고구마, 박옥수수)을 결과로 보여줍니다.
이처럼 SQL의 매력은 "무엇을 원하는지만 말하면 되고, 어떻게 찾을지는 DBMS가 알아서 처리해준다"는 점입니다. 파일 위치를 뒤지거나 반복문을 직접 짤 필요가 없습니다.
SQL 3대 분류 맛보기 쌩기초
SQL 명령어는 역할에 따라 3가지 그룹으로 나눕니다. 세 글자 약어 이름이 비슷해서 헷갈리기 쉬우니 비유로 기억해두면 편합니다.
| 분류 | 약어가 의미하는 것 | 비유 |
|---|---|---|
| DDL | Data Definition Language (정의어) | 빈 책장을 새로 만들거나 치우는 목수 |
| DML | Data Manipulation Language (조작어) | 책장에 책을 꽂거나 꺼내는 사서 |
| DCL | Data Control Language (제어어) | 누구에게 책장 열쇠를 줄지 정하는 관리자 |
- DDL은 테이블(책장)이라는 구조 자체를 만들고, 바꾸고, 없애는 명령어 그룹입니다 (CREATE·ALTER·DROP 등).
- DML은 이미 만들어진 테이블에 데이터(책)를 넣고, 조회하고, 수정하고, 삭제하는 명령어 그룹입니다 (INSERT·SELECT·UPDATE·DELETE).
- DCL은 "이 사용자는 조회만 가능, 저 사용자는 수정까지 가능" 같은 권한을 관리하는 그룹입니다 (GRANT·REVOKE).
각각 어떻게 생긴 문장인지 감을 잡아봅시다. 외울 필요 없이 "이게 DDL이구나, 이게 DML이구나" 정도만 느끼면 됩니다.
세 가지를 처음부터 외울 필요는 없습니다. 다음 페이지부터 각 분류의 실제 명령어를 하나씩 살펴보면서 자연스럽게 익혀집니다.
정처기 실기에서 SQL은 어떻게 나오나? 쌩기초
정보처리기사 실기 시험 1회분(한 번의 시험)당 SQL 문제가 보통 1 ~ 3개 출제되며, 출제 방식은 두 가지로 정리됩니다.
- 빈칸 채우기: 완성된 SQL 문장에서 키워드 하나(예:
FOREIGN,HAVING,CASCADE)를 빈칸으로 두고 무엇이 들어갈지 묻는 유형. 이런 키워드들은 뒤 페이지에서 하나씩 배울 예정이니 지금 몰라도 됩니다. - 실행 결과 구하기: 테이블과 SQL 문장이 주어지고, 그 문장을 실행했을 때 어떤 행·값·개수가 반환되는지 직접 구하는 유형
두 유형 모두 공통적으로 요구되는 능력은 SQL의 실행 순서를 따라가는 힘입니다. 작성 순서(SELECT가 맨 앞)와 실행 순서(FROM이 맨 앞)가 다르다는 점이 핵심입니다.
SELECT가 작성 시엔 맨 앞이지만 실행 시엔 맨 뒤로 이동합니다. 이를 모른 채 SELECT부터 따라가면 결과값이 엉뚱해집니다.
공부 전략은 다음과 같습니다.
- 각 키워드(SELECT·FROM·WHERE·JOIN·GROUP BY 등)가 어떤 역할을 하는지 먼저 이해
- 주어진 테이블에 그 키워드를 한 줄씩 적용해가며 중간 결과를 손으로 써보기
- 기출문제를 반복해서 실행 순서로 풀이하는 습관 들이기
암기보다 과정 추적이 중요하다는 점을 기억해두면, 처음 보는 쿼리4도 당황하지 않고 풀 수 있게 됩니다.
Footnotes
-
DBMS(Database Management System): 데이터베이스를 관리하는 소프트웨어. 데이터 저장·조회·수정·삭제를 담당하며, 여러 사용자의 동시 접근·백업·보안도 함께 처리합니다. ↩
-
튜플(Tuple): 관계형 데이터베이스에서 테이블의 한 행(Row). 하나의 데이터 묶음을 의미하며, 레코드(Record)라고도 부릅니다. ↩
-
속성(Attribute): 테이블의 한 열(Column). 학번·이름처럼 각 데이터 항목의 종류를 나타냅니다. 필드(Field)라고도 부릅니다. ↩
-
쿼리(Query): DBMS에게 보내는 SQL 문장 한 개 또는 여러 개의 묶음. "SELECT 이름 FROM 학생;" 같은 문장 하나하나를 쿼리라고 부릅니다. 원래 영어 단어 Query는 "질의·물음"을 뜻합니다. ↩