.sql 이라고 다 같은 문법을 쓰지는 않는다?
대표적인 SQL 문법 차이 예시
| 예시 구문 | MS SQL Server (T-SQL) | PostgreSQL (PL/pgSQL) |
|---|---|---|
| 변수 선언 | DECLARE @id INT | DECLARE id INT; (블록 안에서만) |
| 조건문 | IF (@id IS NULL) | IF id IS NULL THEN |
| 프로시저 | CREATE PROCEDURE | CREATE FUNCTION or DO \(...\) |
| 문자열 연결 | 'Hello' + 'World' | `'Hello' |
| 현재 시각 | GETDATE() | NOW() |
그래서 파일 확장자가 .sql이어도 아래처럼 다름
| DBMS | 확장자 | 내부 문법 | 예 |
|---|---|---|---|
| MS SQL Server | .sql | T-SQL (Transact-SQL) | @변수, BEGIN … END, SET NOCOUNT ON |
| PostgreSQL | .sql | PL/pgSQL 또는 표준 SQL | DO \(BEGIN ... END\); |
| MySQL | .sql | MySQL SQL | DELIMITER $$, @@session.time_zone 등 |
| SQLite | .sql | 순수 SQL 중심 | 서브셋만 지원 (변수, 프로시저 없음) |
실전 팁
| 작업 | 권장 |
|---|---|
| .sql 파일 공유할 때 | 어떤 DB용인지 주석으로 명시 (– For PostgreSQL 등) |
| 다른 DBMS로 옮길 때 | 쿼리 문법 변환 필요 (자동 도구 또는 수동 변환) |
| Python에서 사용할 때 | PostgreSQL이나 SQLite가 더 직관적이고 간결함 |
결론 **
한 가지 db 문법만 알면 다른 db로 옮기는 건 자동 도구로 변환하면 된다! 참고로 표준 SQL을 쓰는 것은 PostgreSQL이다!
+참고) 파이썬에 더 잘 어울리는 db는? -> PostgreSQL
비교 요약: MS SQL vs PostgreSQL in Python
| 항목 | MS SQL (SQL Server) | PostgreSQL |
|---|---|---|
| Python 라이브러리 | pyodbc, pymssql | psycopg2, asyncpg, SQLAlchemy |
| ORM 호환성 | 제한적 또는 번거로움 | SQLAlchemy 완전 지원, FastAPI/Pydantic과 자연스러움 |
| 문법 | T-SQL (약간 독자적) | SQL 표준에 가깝고 Python 친화적 |
| 로직 이식성 | 저장 프로시저/트리거 등은 Python에서 직접 다루기 어려움 | Python으로 로직을 옮기기 쉬움 |
| Docker 연동 | 복잡한 마운트 필요 | 가볍고 설정 간단 (postgres:14 등) |
| 권한/보안 | 윈도 기반 로그인 등 복잡 | 유닉스/도커/리눅스 기반에서 자연스러움 |
추천 상황
| 당신이 원하는 것 | 추천 DB |
|---|---|
| Python에서 직접 로직 처리, FastAPI 등 백엔드 개발 | ✅ PostgreSQL |
| 기존 SSMS 기반의 앱 유지, Windows 환경 종속 | SQL Server 유지 가능 |
| 데이터 이전 계획 중 | PostgreSQL로 마이그레이션 고려해볼 가치 있음 |
=> 완전 새로 시작하는 상황이고, Windows 환경에 종속될 필요가 없으면 PostgreSQL로 시작하면 Python에서 직접 sql 로직을 처리할 수가 있어서 프로그래밍이 더 자유롭다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

