[TIL] SQL에 입문하다!
오늘은 SQL을 처음 사용해보고, 기초 문법을 익혔다. 공부한 내용을 예시와 함께 정리해둔다.
[TIL] SQL에 입문하다!
오늘은 SQL을 처음 사용해보고, 기초 문법을 익혔다. 공부한 내용을 예시와 함께 정리해둔다.
SQL이란 무엇인가?
SQL은 데이터베이스와 대화를 하기 위한 언어다. SQL이 데이터베이스에게 말을 하기 위한 여러가지 문법이라면, Query는 SQL이라는 언어를 사용해 데이터베이스에 요청하는 질의 자체다. 따라서 SQL과 Query는 거의 동일하게 여겨지며, 데이터베이스에 요청할 때도 Query 작성이라는 말을 사용하게 된다.
데이터베이스란?
데이터베이스는 ‘데이터가 저장되어있는 큰 폴더’로 볼 수 있다. 그 안에 각각 데이터를 확인할 수 있는 파일과 같은 존재가 테이블이다. 데이터를 조회할 때는 데이터베이스라는 폴더에서 테이블이라는 것을 열어서 본다고 이해하면 된다.
테이블이란?
테이블은 행과 열의 구조로 되어있다. 각 열을 ‘컬럼’ 혹은 ‘필드’라고 부른다.
테이블 내부의 컬럼은 어떤 데이터를 조회해야할지를 선택할 때 사용하게 되는 것이라, 내부의 모든 정보를 외울 필요가 없다.
SQL 기본 문법
SELECT: 데이터를 가져온다는 명령어, 데이터를 조회하는 모든 Query 문에 기본적으로 들어간다
FROM: 데이터를 가져올 테이블을 특정해주는 문법
*(Asterisk): 모든 컬럼을 가져와준다는 의미
코드 실행 단축키(Mac): command + enter
예시 1: 테이블의 모든 컬럼을 가져오기
SELECT *
FROM A
-- A 테이블의 모든 컬럼을 가져와줘
예시 2: 테이블 내의 특정 컬럼만 가져오기
SELECT id, addr
FROM A
-- A 테이블의 id, addr 컬럼만 가져와줘.
컬럼명에 별명 붙이기
컬럼명이 너무 길거나 복잡하다면, 컬럼명에 쓰기 편한 별명을 붙여줄 수 있다.
방식 1. 컬럼명1 as 컬럼명2
방식 2. 컬럼명1 컬럼명2
별명이 한글이나 특수문자가 들어갈 경우, “”(큰 따옴표)로 감싸줘야 한다. 영어와 _(언더바)로 이루어질 경우, 문자 그대로 입력하면 된다.
주의할 점!
- 한 칸 띄우고 쓰기
- 따옴표 사용하기
- as 키워드 사용하기
as 같은 경우는 생략이 가능하지만 별칭을 붙여주고 있다는 걸 시각적으로 바로 보여줄 수 있어서 사용하는 편이 좋을 것 같다고 생각했다.
예시:
SELECT address add, name “이름”, time AS “시간”
FROM A
-- A 테이블의 address는 add, name은 이름, time은 시간이라는 별명을 붙여줘.
WHERE 절을 사용해 필터링 조건을 적용하기
WHERE은 필터링의 기초 문법이다. 전체 데이터 중 원하는 데이터만 필터링 할 때 사용할 수 있다.
예시: WHERE의 구조
SELECT *
FROM A
WHERE name = '앵무새'
-- A라는 테이블의 데이터 중 name이 앵무새인 데이터를 출력해줘.
나는 이 부분을 학습할 때 습관처럼 큰 따옴표를 썼는데, 큰 따옴표도 SQL에서 허용은 되지만 작은 따옴표를 쓰는 것을 습관화하는 게 다른 데이터베이스 시스템을 사용할 때도 유용할 것이라는 제미나이의 피드백을 받았다.
이때에도 필터링하고 싶은 것이 한글이나 특수문자를 포함할 경우 ‘’ 작은 따옴표로 감싸주고, 영어나 _(언더바)만 포함할 경우엔 별도의 감싸기 없이 입력해주면 된다.
필터링을 할 때 유용한 표현들
- 비교연산자( =, <>, <, >, <=, >=)

예시:
SELECT *
FROM A
WHERE age <> 20
-- A 테이블의 모든 컬럼에서 나이가 20이 아닌 데이터를 출력해줘
2. BETWEEN : A와 B 사이
기본 문법: between a and b
예시:
SELECT *
FROM A
WHERE age BETWEEN 20 AND 30
-- A 테이블의 모든 컬럼에서 나이가 20부터 30까지인 데이터를 출력해줘
3. IN : ‘포함’하는 값을 출력하기
기본 문법: in (A, B, C)
예시:
SELECT *
FROM A
WHERE name IN ('앵무새', '뱁새', '참새')
-- A 테이블의 모든 컬럼에서 name이 앵무새, 뱁새, 참새 중 하나인 데이터를 전부 출력해줘
4. LIKE : 완전히 똑같지 않지만, 비슷한 조건을 필터링하기
기본 문법:
- 특정한 문자로 시작하는 경우: like ‘시작문자%’
예시:
SELECT *
FROM A
WHERE name LIKE '김%'
-- A 테이블의 모든 컬럼에서 name이 김으로 시작하는 모든 데이터를 출력해줘
- 특정 문자를 포함하는 경우: like ‘%포함문자%’
예시:
SELECT *
FROM A
WHERE address LIKE '%서울%'
-- A 테이블의 모든 컬럼에서 address가 ‘서울’을 포함하는 모든 데이터를 출력해줘
- 특정한 문자로 끝나는 경우: like ‘%끝나는 문자’
예시:
SELECT *
FROM A
WHERE name LIKE '%빈'
-- A 테이블의 모든 컬럼에서 name이 ‘빈’으로 끝나는 모든 데이터를 출력해줘
논리연산자를 사용해 필터링 조건을 여러 개 적용하기
AND(그리고): A and B, A이면서 B인 것
예시:
SELECT *
FROM A
WHERE name LIKE '김%' AND age > 42
-- A 테이블의 모든 컬럼에서 name이 ‘김’으로 시작하면서 age가 42보다 큰 모든 데이터를 출력해줘
OR(또는): A or B, A 또는 B
예시:
SELECT *
FROM A
WHERE name LIKE '%수%' OR name LIKE '%진'
-- A 테이블의 모든 컬럼에서 name이 ‘수’를 포함하거나, ‘진’으로 끝나는 데이터를 모두 출력해줘
NOT(아닌): not A, A가 아닌 것
예시:
SELECT *
FROM A
WHERE NOT gender = ‘male’
-- A 테이블의 모든 컬럼에서 gender가 male이 아닌 데이터를 출력해줘
NOT 문법 사용 시 고려사항
NOT 문법과 관련해, 쓸 때의 위치와 주의사항이 더 있을까 궁금해서 제미나이에게 물어봤다.
NOT은 보통 조건식의 바로 앞에 붙는데, 사용하는 연산자에 따라 위치가 조금씩 달라지기도 한다고 해서 지금 정리해두면 좋을 것 같다.
- 일반적인 비교 연산자와 쓸 때
컬럼명 앞에 NOT을 붙여도 되고, 연산자를 직접 바꾸기도 한다. 이때, 연산자를 직접 바꾸는 방식을 더 많이 사용한다.
1.
WHERE NOT gender = 'male'
2.
WHERE gender <> 'male'
- 특수 연산자와 쓸 때 (가장 많이 쓰임!)
BETWEEN, IN, LIKE와 같은 연산자와 쓸 때는 NOT이 연산자 바로 앞에 오는 것이 자연스럽고 가독성이 좋다.
WHERE name NOT LIKE '김%'
-- '김'으로 시작하지 않는 데이터
WHERE age NOT IN (22, 25, 30)
-- 나이가 22, 25, 30이 아닌 데이터
WHERE age NOT BETWEEN 20 AND 30
-- 나이가 20 ~ 30이 아닌 데이터
❗️ 주의할 점
- 괄호를 활용해 명확하게 하기
여러 조건(AND, OR 등)이 섞여 있을 때 NOT을 쓰면 어디까지 부정하는지 헷갈릴 수 있다. 이때 괄호를 사용하면 실수를 줄일 수 있다.
-- 이름이 '김'씨가 아니면서, 나이가 20살인 데이터
WHERE NOT (name LIKE '김%') AND age = 20
- NULL 데이터의 함정
데이터베이스에서 값이 아예 비어있는(NULL) 데이터는 NOT을 써도 나오지 않을 수 있다. 비어있는 데이터까지 찾으려면 별도의 IS NULL 처리가 필요한데, 이는 이후에 다뤄볼 것이다!
주석 쓰기
SQL에서는 주석을 쓰는 방식이 두 가지가 있다.
- 한 줄 주석
문장 맨 앞에 하이픈 두 개를 쓰면 주석 처리가 된다.
-- 이 부분은 주석이다.
SELECT *
FROM A -- 이렇게 코드 옆에도 달 수 있다!
- 여러 줄 주석
여러 줄을 한꺼번에 설명하거나, 쿼리의 특정 부분을 잠시 실행되지 않게 막을 때 사용한다.
/*
이렇게 하면 주석이 된다.
작성자는 sub.in.csea
작성일은 2026년 2월 12일 새벽
*/
SELECT *
FROM A
동료와의 협업을 위한 대소문자 구분
SQL에서는 기본적으로 대소문자를 구분하지 않는다.
그러나 SQL 문법은 대문자로, 테이블명이나 컬럼명은 소문자로 쓰는 것이 관례(Best Practice)다.
문법을 대문자로 작성하는 이유는 쿼리가 길어지면 무엇이 명령어이고 무엇이 내가 만든 이름인지 한눈에 구별하기 어렵기 때문이다.
나중에 코드를 다시 읽을 나와 동료를 위해 가독성을 높이는 방식을 지금부터 습관화해두고 싶다. 다음과 같은 세 가지 방식을 사용하면 좋을 것 같다.
- 문법은 대문자 사용
- 사용자 정의의 이름은 소문자 사용
- (문법을 기준으로) 줄바꿈 활용
가독성 낮은 예시
select name, age from users where age >= 20;
가독성 높은 예시
SELECT name, age
FROM users
WHERE age >= 20;
SQL 학습 첫날을 마무리하며
제미나이를 통해 위의 모든 문법과 order by 문법을 포함한 하나의 쿼리를 해석하라는 과제를 받았다. 이를 기록해둔다!
예제:
SELECT name as “이름”, age
FROM A
WHERE address LIKE ‘%서울%’ AND age BETWEEN 20 AND 29
ORDER BY age DESC;
/*
A 테이블에서 name 컬럼에 이름이라는 별명을 붙이고,
address는 서울을 포함하면서 나이는 20부터 29까지인,
이름과 나이 데이터를 나이 내림차순으로 전부 출력해줘.
*/
공부를 시작하고 나니 앞으로 배울 내용이 기대되기 시작했다!
메타데이터
- post_id
- 92dea6401774
- slug
- sql에-입문하다-92dea6401774
- url
- https://medium.com/@sub.in.csea/sql%EC%97%90-%EC%9E%85%EB%AC%B8%ED%95%98%EB%8B%A4-92dea6401774
- canonical_url
- https://medium.com/@sub.in.csea/sql%EC%97%90-%EC%9E%85%EB%AC%B8%ED%95%98%EB%8B%A4-92dea6401774
- author_url
- https://medium.com/@sub.in.csea
- status
- ok
- fetched_at
- 2026-06-13 16:00:06