데이터베이스 생성, 테이블 생성

Posted by yunki kim on November 26, 2020

데이터 베이스 생성

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등 도 가능)