데이터 베이스 생성
CREATE SCHEMA `db_name` DEFAULT CHARACTERSET utf8;으로 db를 생성하고 use db_name;을 하면 해당 디비를 선택할 수 있다
테이블 생성
테이블을 생성할때는 만들테이블의 컬럼명과 각 컬럼명에 해당하는 설정 그리고 테이블 옵션이 들어간다
- 컬럼명 옵션
1. INT
정수 자료형(FLOAT, DOUBLE은 실수)
2. VARCHAR
문자열 자료형, 가변길이
3. CHAR
문자열 자료형, 고정길이
4. TEXT
긴 문자열은 TEXT로 별도 저장
5. DATETIME
날짜 자료형 저장
6. TINTINT
-128~127까지 저장가능
7. NOT NULL
빈값은 받지 않는다는 의미
8. NULL
빈 값도 받겠다는 의미
9. AUTO_INCREMENT
숫자 자료형인 경우 다음 로우가 저장될 떄 자동으로 1 증가
10. UNSIGNED
0과 양수만 허용
11. ZEROFILL
숫자의 자리 수가 고정된 영우 빈 자리에 0을 넣는다
12. DEFAULT now()
날짜 컬럼의 기본값을 현재 시간으로 사용
13. PRIMARY_KEY()
로우를 특정할 수 있게 해주는 고유값을 설정
14. FOREGN KEY(column_name) REFERENCES db.table_name(column)
외래키로 두 테이블이 관계있다는 것을 나타낸다.
- 테이블 옵션
1. COMMENT
테이블에 대한 보충 설명(옵션)
2. DEFAULT CHARSET
한글을 지원하기 위해선 utf8로, 이모티콘 까지 지원하려면 utf8mb4사용
3. ENGINE
사용할 엔진 선택
위 코드는 각 컬럼 명이 id, name, age, married인 테이블이다.
Id INT NOT NULL AUTO_INCREMENT
컬럼명 id, 정수 자료형, 빈 데이터는 받지 않는다, 로우가 저장 될때 마다 1 증가
name VARCHAR(20) NO NULL
컬럼명 name, 문자열 가변길이 자료현, 빈 데이터는 받지 않는다
age INT UNSIGNED NOT NULL
컬럼명 age, unsgined 정수 자료형, 빈 데이터는 받지 않는다
married TINTINT NOT NULL
컬럼명 married, -128~127까지 저장하는 자료형, 빈 데이터는 받지 않는다
comment TEXT NULL
컬럼명 comment, 긴 문자열, 빈 데이터도 받는다
created_at DATETIME NOT NULL DEFAULT now()
날짜 자료형 저장, 빈 데이터는 받지 않는다, 날짜 칼럼의 기본값을 현재 시간으로한다
PRIMARY KEY(id)
id가 테이블에서 로우를 특정할 수 있게 해주는 고유값이란 의미이다
UNIQUE INDEX name_UNIQUE(name ASC)
name이란 컴럼이 고유한다, ASC: 오름차순 정렬 DESC면 내림차순, 자주 검색해야할 것들에 대해 INDEX를 하면 검색 속도가 향상된다
name_UNIQUE는 이 옵션의 이름이다.
COMMENT='사용자 정보'
테이블에 대한 보충설명
DEFAULT CHARSET = utf8
utf8로하면 한글 지원. utfmb4로 하면 이모티콘도 지원
ENGINE = innoDB
엔진을 innoDB로 한다(MyISAM등 도 가능)