MS SQL Server (MSSQL)

MySQL과 SQL Server 의 SQL 문 차이 정리

초심으로 2024. 7. 5. 11:45

728x90

MySQL과 SQL Server는 모두 관계형 데이터베이스 관리 시스템(RDBMS)이지만, 두 시스템 간에는 SQL 쿼리 사용 방식에서 여러 차이점이 있습니다. 아래 표에서 주요 쿼리 구문과 기능의 차이점을 정리하였습니다.

기능 / 쿼리 유형 MySQL SQL Server
데이터베이스 생성 CREATE DATABASE db_name; CREATE DATABASE db_name;
데이터베이스 선택 USE db_name; USE db_name;
테이블 생성 CREATE TABLE table_name (...); CREATE TABLE table_name (...);
AUTO_INCREMENT AUTO_INCREMENT IDENTITY(1,1)
기본 키 설정 PRIMARY KEY (column_name) PRIMARY KEY (column_name)
데이터 형식 VARCHAR(n) NVARCHAR(n)
날짜 데이터 형식 DATE, DATETIME DATE, DATETIME, DATETIME2
문자열 결합 CONCAT(column1, column2) column1 + column2
현재 날짜/시간 NOW() GETDATE()
문자열 길이 CHAR_LENGTH(column) LEN(column)
서브쿼리 지원 지원
IF 문 IF(condition, true_value, false_value) CASE WHEN condition THEN true_value ELSE false_value END
IFNULL/NULL 처리 IFNULL(column, value) ISNULL(column, value)
문자열 부분 추출 SUBSTRING(column, start, length) SUBSTRING(column, start, length)
LIMIT SELECT * FROM table LIMIT offset, count; SELECT * FROM table ORDER BY column OFFSET offset ROWS FETCH NEXT count ROWS ONLY;
TOP N 행 선택 지원되지 않음 SELECT TOP N * FROM table;
인덱스 생성 CREATE INDEX index_name ON table_name(column); CREATE INDEX index_name ON table_name(column);
고유 인덱스 CREATE UNIQUE INDEX index_name ON table(column); CREATE UNIQUE INDEX index_name ON table(column);
클러스터드 인덱스 지원되지 않음 CREATE CLUSTERED INDEX index_name ON table(column);
트랜잭션 시작 START TRANSACTION; BEGIN TRANSACTION;
트랜잭션 커밋 COMMIT; COMMIT;
트랜잭션 롤백 ROLLBACK; ROLLBACK;
연결 문자열 jdbc:mysql://hostname:port/dbname jdbc:sqlserver://hostname:port;databaseName=dbname;
암시적 커밋 기본적으로 AUTO_COMMIT 모드 기본적으로 AUTO_COMMIT 모드
저장 프로시저 호출 CALL procedure_name(parameters); EXEC procedure_name parameters;
변수 선언 SET @variable_name = value; DECLARE @variable_name datatype; SET @variable_name = value;
열의 데이터 타입 변경 ALTER TABLE table MODIFY column_name new_data_type; ALTER TABLE table ALTER COLUMN column_name new_data_type;
외래 키 설정 FOREIGN KEY (column) REFERENCES other_table(column) FOREIGN KEY (column) REFERENCES other_table(column)
배열 지원 지원되지 않음 지원되지 않음
JSON 지원 JSON 데이터 타입과 JSON 함수 지원 JSON 데이터 타입은 없지만, JSON 함수 지원
스트링 비교 기본적으로 대소문자 구분 기본적으로 대소문자 구분하지 않음
비교 연산자 =(같음), <(작음), >(큼) =(같음), <(작음), >(큼)
문자열 비교 LIKE 'pattern' LIKE 'pattern'
불린 자료형 TINYINT(1) BIT
패턴 일치 LIKE, REGEXP LIKE, PATINDEX
케이스 민감 기본적으로 대소문자 구분 (COLLATE 설정 가능) 기본적으로 대소문자 구분하지 않음 (COLLATE 설정 가능)
트리거 지원 지원
테이블 복사 CREATE TABLE new_table AS SELECT * FROM existing_table; SELECT * INTO new_table FROM existing_table;
분석 함수 OVER(), RANK(), DENSE_RANK(), ROW_NUMBER() OVER(), RANK(), DENSE_RANK(), ROW_NUMBER()
조건부 갱신 UPDATE table SET column = value WHERE condition; UPDATE table SET column = value WHERE condition;
테이블 삭제 DROP TABLE table_name; DROP TABLE table_name;
인덱스 삭제 DROP INDEX index_name ON table_name; DROP INDEX index_name ON table_name;
열 삭제 ALTER TABLE table_name DROP COLUMN column_name; ALTER TABLE table_name DROP COLUMN column_name;
서브쿼리 사용 가능 가능
부서리 정렬 ORDER BY ORDER BY
그룹화 GROUP BY GROUP BY
HAVING 절 HAVING HAVING
집계 함수 COUNT(), SUM(), AVG(), MIN(), MAX() COUNT(), SUM(), AVG(), MIN(), MAX()
일치 검사 LIKE, RLIKE (정규 표현식) LIKE, PATINDEX (정규 표현식은 X)
반응형

주요 차이점 분석

  1. 데이터 형식과 제약조건:
    • MySQLVARCHARAUTO_INCREMENT를 사용하여 자동 증가 속성을 설정합니다.
    • SQL ServerNVARCHARIDENTITY를 사용합니다.
  2. 날짜/시간 함수:
    • MySQL은 NOW()를 사용하여 현재 날짜와 시간을 가져옵니다.
    • SQL Server는 GETDATE()를 사용합니다.
  3. 문자열 처리:
    • 문자열 결합은 MySQL에서 CONCAT 함수로, SQL Server에서는 + 연산자로 수행합니다.
  4. 쿼리 결과 제한:
    • MySQL에서는 LIMIT을 사용하여 결과 행의 수를 제한합니다.
    • SQL Server에서는 OFFSETFETCH 절을 사용합니다.
  5. 트랜잭션 처리:
    • 두 시스템 모두 트랜잭션을 지원하며, 명령어는 매우 유사합니다 (BEGIN TRANSACTION, COMMIT, ROLLBACK).
  6. 인덱스:
    • MySQL에서는 클러스터드 인덱스를 명시적으로 생성할 수 없습니다.
    • SQL Server는 클러스터드 인덱스를 명시적으로 생성할 수 있습니다.
  7. JSON 지원:
    • MySQL은 JSON 데이터 타입과 JSON 함수를 지원합니다.
    • SQL Server는 JSON 함수를 지원하지만 JSON 데이터 타입을 명시적으로 제공하지는 않습니다.
  8. 스트링 비교 및 케이스 민감성:
    • MySQL은 기본적으로 문자열 비교에서 대소문자를 구분하지만, COLLATE 설정으로 변경 가능합니다.
    • SQL Server는 기본적으로 대소문자를 구분하지 않지만, COLLATE 설정으로 대소문자 구분을 적용할 수 있습니다.
  9. 패턴 일치:
    • MySQL은 정규 표현식 지원(REGEXP)을 제공하며, SQL Server는 정규 표현식을 지원하지 않습니다.

이 표와 설명은 MySQL과 SQL Server 간의 주요 차이점을 이해하고 두 시스템에서 SQL 쿼리를 효과적으로 사용할 수 있도록 도와줍니다.

반응형