MySQL 서버는 다른 SQL 데이터베이스에서는 찾아볼 수 없는 고유한 확장 기능을 지원합니다. 따라서 이러한 MySQL 전용 확장 문법을 사용하면 해당 코드를 다른 SQL 서버로 이식하지 못할 수 있지만, 상황에 따라서는 이식이 가능한 경우도 있습니다.
지금부터 MySQL이 표준 SQL에 추가한 주요 확장 기능들을 하나씩 살펴보겠습니다.
1. 문자열 감싸기
기본적으로 문자열은 큰따옴표(") 또는 작은따옴표(')로 묶을 수 있습니다. 다만 'ANSI_QUOTES' SQL 모드가 활성화되어 있다면 문자열은 반드시 작은따옴표(')로 묶어야 하며, 이때 큰따옴표(")를 사용하면 서버는 이를 테이블명이나 컬럼명 같은 식별자(identifier)로 해석합니다.
2. 이스케이프 문자
MySQL에서는 백슬래시(\)가 문자열의 이스케이프 문자 역할을 합니다.
3. 테이블 접근 방식
MySQL은 오라클과 같은 테이블스페이스(tablespaces) 개념을 지원하지 않습니다. 대신 데이터베이스 이름과 테이블 이름을 마침표로 연결한 database_name.table_name 형식을 사용하여 테이블에 직접 접근합니다.
4. 쿼리 처리
GROUP BY 절을 사용해 컬럼을 조회할 때, 선택된 모든 컬럼에 일일이 별칭(alias)이나 이름을 부여할 필요가 없습니다. 이러한 유연성 덕분에 특정 쿼리에서 더 나은 성능을 얻을 수 있습니다.
5. 절(Clause) 사용
전통적인 MySQL 문법에서는 ORDER BY 절을 GROUP BY 절과 함께 명시하는 것이 제한적이었지만, 대신 GROUP BY 뒤에 ASC(오름차순) 또는 DESC(내림차순) 키워드를 붙여 정렬 순서를 지정할 수 있습니다.
6. 논리 연산자
MySQL 서버에서는 '||'와 '&&' 연산자를 각각 논리 OR와 논리 AND 연산에 사용할 수 있습니다. 이는 '||'가 'OR'와, '&&'가 'AND'와 동의어(synonym)로 취급되기 때문입니다.
7. 문자열 연결
MySQL 서버는 표준 SQL에서 문자열을 연결하는 '||' 연산자를 지원하지 않습니다. 대신 CONCAT() 함수를 사용하여 여러 문자열을 하나로 합칠 수 있습니다.