1. 대소문자 구분 X (그러나 통일은 필수)
MySQL은 기본적으로 대소문자를 구분하지 않는다.
SELECT * FROM Students;
SELECT * FROM students;
-- 둘 다 동일하게 동작
❗하지만 협업 시 혼동을 줄이기 위해 소문자로 통일하는 것이 일반적이다.
특히 파일 시스템이 대소문자를 구분하는 리눅스 서버 환경에서는 충돌을 방지하기 위해 더더욱 중요하다.
✅ 추천 스타일: 모두 소문자 + 단어 구분은 밑줄(_)
2. 이름은 64자까지
MySQL에서 사용할 수 있는 이름의 최대 길이는 64자다.
너무 긴 이름은 사용하지 않는 게 좋으며, 의미는 명확하되 간결하게 작성하는 습관을 들이자.
-- 너무 긴 이름 (X)
create table product_table_that_contains_all_possible_product_information_for_all_regions (...);
-- 간결한 명명 (O)
create table products (...);
3. 허용 문자: 영문자, 숫자, 밑줄(_)만
- 공백, 하이픈(-), 특수기호(!, @, # 등) 사용 ❌
- 첫 글자는 숫자 ❌
-- 에러 발생
create table 1st_product (...);
create table user-profile (...);
create table my table (...);
4. 예약어 사용 금지 (또는 백틱으로 감싸기)
MySQL에는 내부적으로 사용하는 예약어가 있다. order, select, table, group 등…
❌ 이런 단어들을 그대로 테이블명, 컬럼명으로 쓰면 문법 충돌이 일어날 수 있다.
-- 백틱(``)을 사용하면 가능하지만 권장되진 않음
create table `order` (
order_id int,
order_date date
);
✅ 되도록이면 예약어는 피하자.
의미 있는 구체적 이름으로 바꿔보는 것이 가장 좋다.
create table orders (
id int,
order_date date
);
5. 테이블 이름은 복수형, 컬럼은 단수형 + 명확한 의미
✅ 테이블명은 복수형 사용 권장
students, products, members, categories
- 데이터가 **여러 행(row)**으로 쌓이기 때문에 복수형이 직관적이다.
✅ 컬럼명은 단수형 + 명확한 속성명
student_id, lecture_code, product_price
절대 a, b, x1, y2 같은 축약형 이름은 사용하지 말 것.
협업자는 물론, 자신도 한 달 뒤면 기억 못 한다.
6. lower_snake_case 사용 권장
SQL에서는 CamelCase보다는 단어를 밑줄로 구분하는 lower_snake_case가 더 읽기 쉽고, 널리 사용된다.
-- 권장 (O)
user_email, lecture_time, product_price
-- 비권장 (X)
UserEmail, lectureTime, ProductPrice
7. 문자열과 객체 이름을 구분하자: 백틱(``) vs 따옴표('')
1) 백틱(``)
→ 데이터베이스 객체 이름을 감쌀 때 사용 (테이블명, 컬럼명 등)
select * from `order`; -- 예약어를 객체 이름으로 사용할 때
2) 따옴표('', "")
→ 문자열 데이터 값을 감쌀 때 사용
insert into students (name) values ('bergerac');
✅ 객체 이름에 따옴표를 쓰면 에러 발생!
혼동하지 않도록 꼭 구분하자.
'웹개발 > SQL(mySQL)' 카테고리의 다른 글
| MySQL 제약조건(Constraints) (4) | 2025.06.15 |
|---|---|
| 무결성(Integrity) (1) | 2025.06.14 |
| MYSQL DataType (2) | 2025.06.12 |
| MySQL DDL 문법 (Data Definition Language) (1) | 2025.06.11 |
| RDBMS와 SQL 기초 개념 (0) | 2025.06.10 |