
식별자(identifier)와 문자열(string literal) 개념을 SQL 예제와 함께 설명하고, 마지막에 MySQL vs PostgreSQL에서의 차이점을 정리하였습니다.
예:
SELECT title, release_year -- ← 컬럼 이름 (식별자)
FROM films -- ← 테이블 이름 (식별자)
WHERE language = 'Spanish'; -- ← language도 컬럼 이름 (식별자)
여기서 films, title, release_year, language는 모두 식별자예요.
'작은 따옴표(single quotes)'로 감싸야 해요.예:
WHERE language = 'Spanish'; -- ✅ 'Spanish'는 문자열 (값)
❌ 틀린 예시:
WHERE language = "Spanish";
-- MySQL은 일부 허용하지만, 표준 SQL이나 PostgreSQL에서는 에러!
-- ✅ 식별자와 문자열이 제대로 구분된 예
SELECT name
FROM people
WHERE country = 'France'; -- 'France'는 문자열 리터럴
-- ❌ 잘못된 예 (문자열에 큰따옴표 사용)
SELECT name
FROM people
WHERE country = "France";
-- MySQL은 실행될 수 있지만, PostgreSQL은 에러 발생
| 구분 | MySQL | PostgreSQL |
|---|---|---|
| 문자열 리터럴 | 'string'만 표준. "string"도 일부 허용 | 반드시 'string' 사용 (표준 엄격 준수) |
큰따옴표 " "의 의미 | 문자열처럼 사용 가능 (비표준) | 식별자(identifier)만 허용 |
| 식별자 대소문자 구분 | 대소문자 구분 안 함 | 큰따옴표 사용 시 대소문자 구분함 |
| 예외 | SET sql_mode = 'ANSI_QUOTES' 설정 시 " "는 문자열로 쓸 수 없음 | 항상 ANSI 표준을 따름 |
-- 컬럼 이름을 대소문자 구분하고 싶으면 큰따옴표 필요
SELECT "Name"
FROM people;
"Name"은 컬럼명이 대문자 N일 때만 가능해요.Name으로 쓰면 PostgreSQL은 자동으로 소문자 name으로 인식해버려요.| 구분 | 쓰는 따옴표 | 예시 | 의미 |
|---|---|---|---|
| 식별자 | 없음 or " " | title, "Title" | 컬럼/테이블 이름 |
| 문자열 | ' ' | 'Spain' | 문자열 값 |