본문 바로가기

Database/SQL - MySQL

MySQL - 자료형과 옵션 (Data Types and Options)

2020/08/11 - [Database/SQL - MySQL] - MySQL - 설치, 워크벤치, 첫 데이터베이스 생성 (Installation, Workbench, Creating First Database)

 

MySQL - 설치, 워크벤치, 첫 데이터베이스 생성 (Installation, Workbench, Creating First Database)

설치 https://m.blog.naver.com/bjh7007/221829548634 [MySQL] MySQL 다운로드 및 설치 방법(Workbench) 안녕하세요 이번에는 MySQL을 Windows10 운영체제에서 간단히 설치하는 방법에 대해서 알아보도록 하... bl..

lgphone.tistory.com

 

이전에 만들었던 컬럼의 이름 옆에는 INT, VARCHAR, TINYINT, TEXT, DATETIME 등이 적혀 있었다. 이는 컬럼의 자료형을 뜻한다.

  • INT: 정수, 소수까지 저장하고 싶다면 FLOAT나 DOUBLE 자료형을 사용하면 된다.
  • CHAR(n): 고정 길이 n을 갖는 문자열. 주어진 길이보다 짧은 문자열을 넣으면 부족한 자릿수만큼 스페이스가 채워진다.
  • VARCHAR(n): 가변 길이 n을 갖는 문자열. 0~n 의 길이를 갖는 문자열을 넣을 수 있다.
  • TEXT: 긴 글을 저장할 때 사용하며, 보통 수백 자 이내의 문자열은 VARCHAR로 많이 처리하고, 그보다 길면 TEXT로 처리한다.
  • TINYINT: -128부터 127 까지의 정수를 저장할 때 사용한다. 1 또는 0만 저장한다면 불리언값 (boolean) 과 같은 역할을 할 수 있다.
  • DATETIME: 날짜와 시간에 대한 정보를 담는다. 날짜 정보만 담는 DATE와 시간 정보만 담는 TIME도 있다.

이 외에도 많은 자료형들이 있으나, 주로 쓰이는 자료형들은 위와 같다. 이제 컬럼에 대한 옵션에 대해서 알아보자.

  • NULL, NOT NULL: 빈칸을 허용 또는 허용하지 않음.
  • AUTO_INCREMENT: 숫자를 저절로 올림. 예를 들어 데이터를 하나 넣으면 자동으로 id에 1을 부여하며, 그 다음 데이터를 넣으면 id에 2를 부여, 이와 같은 기능을 MySQL이 알아서 해준다.
  • UNSIGNED: INT 자료형에 적용되는 옵션. 숫자 자료형은 기본적으로 음수 범위를 지원한다. 예를 들어 INT는 -2,147,483,648 ~ 2,147,483,647 까지의 숫자를 저장할 수 있지만, UNSIGNED가 적용되면 (즉, 부호, sign이 생략되면) 음수는 무시되고 0 ~ 4,294,967,295 까지의 숫자를 저장할 수 있다. FLOAT와 DOUBLE에는 사용이 불가하며, 나이처럼 음수가 나올 수 없는 컬럼에는 체크해두는 것이 좋다.
  • ZEROFILL: 숫자의 자릿수가 고정되어 있을 때 사용할 수 있다. 가끔 자료형으로 INT 대신 INT(자릿수)로 표현하는 경우가 있는데, 이 때 ZEROFILL을 설정해둔다면 비어있는 자리에 모두 0을 넣는다. 예를들어 INT(4)인데 숫자 1을 넣었다면 0001이 기록된다.
  • DEFAULT: 데이터베이스 저장 시 해당 컬럼에 값이 없다면 MySQL이 기본값을 대신 넣는다. 위 예제에서 created_at에 DEFAULT로 넣은 now()는 현재 시각을 넣으라는 뜻이며, CURRENT_TIMESTAMP 또한 같은 뜻이다. 사용자 정보를 넣으면 컬럼에 넣는 순간의 시각이 자동으로 기록되게 된다.
  • PRIMARY KEY: 해당 컬럼이 기본 기인 경우 PRIMARY KEY 옵션을 설정할 수 있다. 기본 키란 로우를 대표하는 고유한 값을 의미하는데, 데이터베이스에 데이터를 넣을 때는 로우 단위로 넣기 때문에 각 로우를 구별할 고유한 식별자가 필요하다. id는 중복될 수 없으므로, 이를 고유한 식별자로 부여한 것이다.
  • UNIQUE INDEX: 해당 값이 고유해야 하는지에 대한 옵션이며, 위의 예제에선 name 컬럼이 해당된다. 인덱스의 이름은 name_UNIQUE로, name 컬럼을 오름차순 (ASC) 으로 기억하겠다는 뜻이다 (내림차순은 DESC). PRIMARY KEY나 UNIQUE INDEX의 경우 데이터베이스가 별도로 컬럼을 관리하므로 조회 시 속도가 빨라진다. 기본 키인 id도 사실 고유해야 하지만, PRIMARY KEY는 자동으로 UNIQUE INDEX를 포함하므로 따로 적지 않아도 된다.

이후에 선언된 것들은 테이블 자체에 대한 설정이다.

  • COMMENT: 테이블에 대한 보충 설명을 의미한다. 이 테이블이 무슨 역할을 하는지 적을 수 있다. 필수는 아니다.
  • DEFAULT CHARACTER SET: 한글을 입력하기 위하여 utf8을 설정할 수 있다.
  • ENGINE: 테이블이 구동되는 엔진이다. 여러가지가 있지만, MyISAM과 InnoDB가 제일 많이 사용된다.

 

출처

Node.js 교과서 개정 2판 - 길벗, 조현영