[DB] ANSI SQL과 MySQL

김피자·2024년 10월 15일

SQL

목록 보기
2/2
post-thumbnail

들어가기 전

ANSI SQL에 대한 이해, ANSI SQL, MySQL의 주요 차이점, 특징과 장 단점을 비교하는 글이다.

본론

1. ANSI SQL 개요

ANSI SQL(American National Standards Institute SQL)은 관계형 데이터베이스 관리 시스템(RDBMS)의 표준 언어다. 다양한 데이터베이스 간 호환성을 보장하기 위해 만들어졌다.

2. MySQL과의 주요 차이점

2.1 문법 차이

ANSI SQL은 표준 문법을 제공하지만,
MySQL은 이를 기반으로 고유한 확장 기능을 제공한다.

  • 리미트 및 오프셋

ANSI SQL: SELECT FROM table_name LIMIT 5 OFFSET 10
MySQL: SELECT
FROM table_name LIMIT 10, 5

  • 문자열 연결

ANSI SQL: SELECT 'Hello' || ' ' || 'World' AS greeting
MySQL: SELECT CONCAT('Hello', ' ', 'World') AS greeting

  • 대소문자 구분

ANSI SQL: 대소문자 구분 (일반적으로)
MySQL: 기본적으로 대소문자 구분 안 함 (Windows), 구분함 (Unix/Linux)

2.2 데이터 타입

기본적인 데이터 타입은 공유하지만, MySQL은 추가적인 타입을 제공한다.

ANSI SQL: NUMERIC, VARCHAR, DATE
MySQL: TINYINT, MEDIUMTEXT, ENUM

2.3 저장 프로시저

두 시스템 모두 저장 프로시저를 지원하지만, 문법 차이가 있다.

-- ANSI SQL
CREATE PROCEDURE get_employee_by_id (IN emp_id INT)
AS
BEGIN
    SELECT * FROM employees WHERE id = emp_id;
END;

-- MySQL
DELIMITER //
CREATE PROCEDURE get_employee_by_id(IN emp_id INT)
BEGIN
    SELECT * FROM employees WHERE id = emp_id;
END //
DELIMITER ;

2.4 자동 증가 칼럼

ANSI SQL은 자동 증가 칼럼에 대한 표준을 제공하지 않지만, MySQL은 AUTO_INCREMENT 키워드를 사용한다.

-- MySQL
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50)
);

2.5 고유한 기능

MySQL은 ANSI SQL에는 없는 고유한 기능을 제공한다.

  • 다중 INSERT
sqlCopyINSERT INTO table_name (col1, col2) VALUES (1, 'a'), (2, 'b'), (3, 'c');
  • REPLACE 문
sqlCopyREPLACE INTO table_name SET col1 = 'value1', col2 = 'value2';
  • ON DUPLICATE KEY UPDATE
sqlCopyINSERT INTO table_name (id, value) VALUES (1, 10)
ON DUPLICATE KEY UPDATE value = value + 10;

결론

ANSI SQL의 호환성이 중요하다면 표준을 따르고, MySQL의 특화된 기능이 필요하다면 MySQL을 활용하는 것이 좋을 것 같다.

profile
제로부터시작하는코딩생활

0개의 댓글