ITstudy

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

martinooo 2021. 9. 10. 10:41

MySQL은 오픈 소스와 관계형 데이터베이스 시스템(Ralational DBMS) 입니다.

 

MySQL의 기초 개념은 

 

- TABL(테이블) : 데이터를 기록하는 최종적인 곳

- Schema(스키마) : 데이블들을 모아 놓은 곳 

- 데이터베이스(Database) : 마찬가지로 테이블들을 모아 놓은 것 

- 관계형 데이터베이스(Relational Database) : key : value 들이 간단한 관계를 테이블화 시킨 데이터 베이스 

- SQL (Structrued Query Language) : 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어 

- 쿼리(Query) : 데이터베이스에 정보를 요청하는 것. 질의 라고도 합니다 

MySql을 사용하기 위해서는 기초 개념으로 CRUD를 이해해야 합니다 

MySQl은 오픈소스이기 떄문에, 무료로 다운 받을 수 있습니다 

 

오늘은 데이터와 자료형에 대해서 알아보겠습니다.

 

  • 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판 - 길벗, 조현영