INTERMEDIATE SQL 핵심 개념 요약 3

Sue·2025년 7월 19일

INTERMEDIATE SQL

목록 보기
3/3
post-thumbnail

식별자(identifier)와 문자열(string literal) 개념을 SQL 예제와 함께 설명하고, 마지막에 MySQL vs PostgreSQL에서의 차이점을 정리하였습니다.

🔷 1. 기본 개념 정리

✅ 식별자 (Identifier)

  • 테이블, 컬럼, 별칭 등의 이름을 말해요.
  • SQL이 “어디에서 어떤 데이터를 가져와야 할지” 알아볼 수 있도록 식별해주는 이름표 역할을 해요.

예:

SELECT title, release_year     -- ← 컬럼 이름 (식별자)
FROM films                     -- ← 테이블 이름 (식별자)
WHERE language = 'Spanish';    -- ← language도 컬럼 이름 (식별자)

여기서 films, title, release_year, language는 모두 식별자예요.


✅ 문자열 리터럴 (String Literal)

  • 실제 값을 뜻해요. 사람 이름, 나라, 언어, 색깔처럼 데이터 그 자체!
  • 반드시 '작은 따옴표(single quotes)'로 감싸야 해요.

예:

WHERE language = 'Spanish'; -- ✅ 'Spanish'는 문자열 (값)

❌ 틀린 예시:

WHERE language = "Spanish"; 
-- MySQL은 일부 허용하지만, 표준 SQL이나 PostgreSQL에서는 에러!

🔷 2. 식별자와 문자열을 구분하는 실전 예

-- ✅ 식별자와 문자열이 제대로 구분된 예
SELECT name
FROM people
WHERE country = 'France';  -- 'France'는 문자열 리터럴
-- ❌ 잘못된 예 (문자열에 큰따옴표 사용)
SELECT name
FROM people
WHERE country = "France";  
-- MySQL은 실행될 수 있지만, PostgreSQL은 에러 발생

🔷 3. MySQL vs PostgreSQL 차이점 ⚠️

구분MySQLPostgreSQL
문자열 리터럴'string'만 표준. "string"도 일부 허용반드시 'string' 사용 (표준 엄격 준수)
큰따옴표 " "의 의미문자열처럼 사용 가능 (비표준)식별자(identifier)만 허용
식별자 대소문자 구분대소문자 구분 안 함큰따옴표 사용 시 대소문자 구분함
예외SET sql_mode = 'ANSI_QUOTES' 설정 시 " "는 문자열로 쓸 수 없음항상 ANSI 표준을 따름

🔎 PostgreSQL 예외 예시:

-- 컬럼 이름을 대소문자 구분하고 싶으면 큰따옴표 필요
SELECT "Name"
FROM people;
  • 여기서 "Name"은 컬럼명이 대문자 N일 때만 가능해요.
  • 그냥 Name으로 쓰면 PostgreSQL은 자동으로 소문자 name으로 인식해버려요.

✅ 핵심 요약

구분쓰는 따옴표예시의미
식별자없음 or " "title, "Title"컬럼/테이블 이름
문자열' ''Spain'문자열 값

profile
AI/ML Engineer

0개의 댓글