각 데이터베이스 관리 시스템에서는 예약어(reserved keyword)나 특수문자가 포함된 컬럼명을 사용할 수 있지만
, 해당 이름을 직접 참조하거나 쿼리하는 경우 문제가 발생할 수 있습니다.
따라서 DB마다 이러한 컬럼명을 특정기호로 감싸서 사용합니다.
DB별 예약어나 특수문자가 포함된 컬럼 표현 방법
1.MySQL, MARIADB
MySQL에서는 백틱(backtick) 기호(`)를 사용하여 컬럼명을 감싸줍니다.
SELECT `version`, `left`, `right` FROM mytable;
따라서, "version" 컬럼명을 백틱으로 감싸는 것을 "백틱으로 묶는다" 혹은 "백틱으로 감싼다" 라고 표현합니다.
2. ORACLE
Oracle에서는 큰따옴표(")를 사용하여 컬럼을 감쌀 수 있습니다.
SELECT "version", "left", "right" FROM mytable;
3. MSSQL
Microsoft SQL Server에서는 예약어나 특수문자가 포함된 컬럼명을 대괄호([])로 감싸서 사용할 수 있습니다.
SELECT [version], [left], [right] FROM mytable;
DB별 예약어나 특수문자가 포함된 테이블명 표현
각각의 DB에서 사용하는 기호로 테이블명 또한 감쌀 수 있습니다.
예를 들어, MySQL에서는 다음과 같은 방법으로 백틱을 사용하여 테이블명을 감싼 코드입니다.
SELECT * FROM `table_name` WHERE `column_name` = 'value';
예약어나 특수문자 지양하는 '네이밍 규칙
이렇게 컬럼명, 테이블명을 표현하는 방법에 대해 알아봤지만
특수문자나 예약어를 테이블명이나 컬럼명에 사용하는 것은 지양하는 것이 좋습니다.
대신, 언더스코어(_)나 카멜 케이스(camelCase) 등으로 대체할 수 있습니다.
언더스코어와 카멜 케이스는 변수, 함수, 메소드, 클래스 등의 이름을 작성할 때 사용하는 네이밍 규칙 중 하나입니다.
1. 언더스코어
언더스코어(_)는 단어와 단어를 구분할 때 사용하는 규칙으로, 단어 사이에 언더스코어를 붙여서 작성합니다. 예를 들어, "first_name", "user_id" 등이 언더스코어를 사용한 이름의 예시입니다. 언더스코어는 SQL에서 테이블, 컬럼 등의 이름을 작성할 때 많이 사용됩니다.
MySQL, MSSQL, Oracle에서 모두 컬럼명이나 테이블명에 _ (언더스코어)를 사용할 수 있습니다.
2. 카멜 케이스
카멜 케이스(camelCase)는 단어와 단어를 구분할 때 대문자를 사용하는 규칙입니다. 첫 번째 단어는 소문자로 시작하고, 이후 단어의 첫 글자는 대문자로 작성합니다. 예를 들어, "firstName", "userId" 등이 카멜 케이스를 사용한 이름의 예시입니다. 카멜 케이스는 Java, JavaScript 등에서 변수, 함수, 메소드, 클래스 등의 이름을 작성할 때 많이 사용됩니다.
카멜 케이스는 DB마다 규칙이 다른데
MySQL과 MSSQL은 기본적으로 대소문자를 구분하지 않습니다.
따라서 mytable, MyTable, MYTABLE 등은 모두 같은 테이블명으로 취급됩니다.
Oracle은 기본적으로 대소문자를 구분합니다. 예를 들어, mytable과 MyTable은 서로 다른 테이블명으로 인식됩니다.
Oracle에서도 대소문자 구분을 무시하려면 쌍따옴표를 사용하여 테이블명을 감싸면 됩니다.
MySQL과 Oracle에서는 컬럼명에 대소문자를 구분하며, MSSQL에서는 기본적으로 구분하지 않습니다.
하지만 모두 대소문자를 구분하거나 하지 않도록 설정할 수 있습니다.
두 네이밍 규칙은 서로 다르게 사용되며, 주로 개발 언어, 분야, 개발 문화 등에 따라 선호하는 규칙이 달라질 수 있습니다. 그러나 어느 규칙을 사용하더라도 일관성 있게 작성하는 것이 좋습니다.
'SQL > RDBMS' 카테고리의 다른 글
[Oracle] 제약 조건 (조회, 추가, 수정, 삭제) (0) | 2023.03.16 |
---|---|
java.sql.SQLSyntaxErrorException: ORA-00911: 문자가 부적합합니다 (1) | 2023.03.14 |
BLOB데이터 들고오기(JAVA ExecuteQuery) (0) | 2022.12.17 |
(MariaDB, MySQL)on duplicate key update(With bulk insert), insert ignore, replace into (0) | 2022.06.11 |
bulk insert (0) | 2022.05.28 |