티스토리 뷰
먼저 읽어볼만한 글
CREATE TABLE 예시
MySQL 테이블 생성의 예는 아래와 같다. 아래는 회원 테이블 생성의 간단한 예이다.
CREATE TABLE user (
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
email VARCHAR(255) NOT NULL UNIQUE,
password_encrypted VARCHAR(255) NOT NULL,
is_deleted TINYINT(1) NOT NULL DEFAULT 0,
created_datetime DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_datetime DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
)
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
id 컬럼은
PRIMARY KEY
이다. 타입을INT UNSIGNED
로 선언하여 약 42억개의 서로 중복되지 않는 PK를 가진 로우를 저장할 수 있다.AUTO_INCREMENT
에 의해 새로운 로우가 INSERT 될 때마다 1부터 4294967295까지의 PK가 자동 생성된다. 괄호 안의 숫자는 데이터 조회시 출력될 자리수로 실제 타입이 가진 크기와 무관하다.
email 컬럼은 회원 이메일 주소를 저장한다.
VARCHAR
타입의 괄호 안 숫자는 저장 가능한 최대 글자 수로 바이트 크기가 아님에 유의한다. 한글 1자 또한 영문자 1자와 동일하게 1개 글자로 계산된다.CHAR_LENGTH()
함수와 동일하다. (글자수가 아닌 바이트 관점에서 UTF-8 기준 한글 1자는 3바이트, 영문자 포함 아스키 코드는 1바이트로 저장된다.LENTH()
함수와 동일하다.)
password_encrypted 컬럼은 회원 해쉬 변환된 비밀번호를 저장한다. 보안상의 이유로 반드시 비밀번호를 그대로 저장하지 않고 해쉬 변환 후 저장해야 한다. BCrypt 해쉬 알고리즘을 사용할 경우 60-bytes 크기의 문자열 해쉬를 생성한다. 해쉬 변환 관련 글은 이 글을 참고한다.
is_deleted 컬럼는 회원 삭제 여부를 저장한다. false는 0, true이면 1을 저장하면 된다.
TINYINT
는 -128부터 127까지를 저장 가능한 타입이다.INT
와 마찬가지로 괄호 안의 숫자는 데이터 조회시 출력될 자리수이다.
created_datetime 컬럼은 회원 가입일시를 저장한다.
DATETIME
은 일시를 저장할 수 있는 타입이다. 기본값으로CURRENT_TIMESTAMP
를 명시하면 자동으로 현재 일시가 저장된다.
updated_datetime 컬럼은 회원 정보의 수정일시를 저장한다. 회원 정보 변경시 자동으로 현재 일시가 저장된다.
테이블의 기본 언어셋으로 모든 유니코드를 지원하는
utf8mb4
을 지정하였다.COLLATE
는 정렬의 정확도를 결정한다. 비영어권은utf8mb4_unicode_ci
를 지정해야 정확하게 정렬된다.
MySQL 5.5 이상부터는 스토리지 엔진을 생략해도 기본값으로
InnoDB
가 설정된다.InnoDB
는 트랜잭션 처리를 지원한다.
참고 글
- Total
- Today
- Yesterday
- 태그를 입력해 주세요.
- CentOS
- Kendo UI Web Grid
- jpa
- node.js
- graylog
- 알뜰폰
- Kendo UI
- JavaScript
- 로드 바이크
- maven
- DynamoDB
- Tomcat
- jstl
- 구동계
- chrome
- jsp
- java
- Spring MVC 3
- Eclipse
- 자전거
- Spring Boot
- spring
- JHipster
- 로드바이크
- 평속
- Docker
- bootstrap
- kotlin
- MySQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |