SQL이란
Structured
Query
Language
의 약자이며 아래와 같은 특징을 가집니다.
특징
- SQL은 어떤 컴퓨터 언어보다 쉽습니다.
- 관계형 데이터베이스라는 카테고리에 속하는 제품들이 공통적으로 데이터베이스서버를 제어할 때 쓰이는 표준화된 언어이기에 매우 중요합니다.
-> 가성비가 뛰어난 언어
Table의 구조
row: 데이터 그자체
column: 데이터의 구조
MySQL Data 타입
MySQL에서 쓸 수 있는 데이터 타입은 아래의 표와 같습니다.
|
|
|
|
---|---|---|---|
숫자형
|
TINYINT | -128 ~ 128, 0 ~ 255 | 1 Byte |
SMALLINT | -32768 ~ 32767 , 0 ~ 65535 | 2 Byte | |
MEDIUMINT | -8388608 ~ 8388607, 0 ~ 16777215 | 3 Byte | |
INT, INTEGER | -2147483648 ~ 2147483647, 0 ~ 4294967295 | 4 Byte | |
BIGINT | -9223372036854775808 ~ 9223372036854775807 , 0 ~ 18446744073709551615 |
8 Byte | |
FLOAT | -3.402823466E+38 ~ -1.175494351E-38 , 1.175494351E-38 ~ 3.402823466E+38 |
4 Byte | |
DOUBLE [PRECISION], REAL | 1.7976931348623157E+308 ~ -2.2250738585072014E-308 , 0 ~ 2.2250738585072014E-308 |
8 Byte | |
DECIMAL(M,D), NUMERIC(M,D) | 데이터 베이스 설정 및 시스템에 따라 다름 | 가변적 크기 | |
날짜형
|
DATE | ‘1000-01-01’ ~ ‘9999-12-31’ | 3 Byte |
TIME | ‘-838:59:59’ ~ ‘838:59:59’ | 3 Byte | |
DATETIME | ‘1000-01-01 00:00:00’ ~ ‘9999-12-31 23:59:59’ |
8 Byte | |
TIMESTAMP | ‘1970-01-01 00:00:01’ ~ ‘2038-01-19 03:14:07’ |
4 Byte | |
YEAR | 1901 ~ 2155 | 1 Byte | |
문자(열)형
|
CHAR(M) | 1~ 255 개의 문자 | M <= 255 |
ByteBINARY(M) | 1 ~ 255 개의 문자 | M Byte | |
VARCHAR(M), VARBINARY(M) |
1 ~ 255 개의 문자 | M Byte | |
TINYBLOB, TINYTEXT | 최대 2^8 | 입력된 길이 만큼 | |
BLOB, TEXT | 최대 2^16입 | 력된 길이 만큼 | |
MEDIUMBLOB, MEDIUMTEXT | 최대 2^24 | 입력된 길이 만큼 | |
LONGBLOB, LONGTEXT | 최대 2^32 | 입력된 길이 만큼 | |
ENUM | 최대 65525 개 | 1 ~ 2 Byte | |
SET | 최대 64 개의 셋 | 1 ~ 8 Byte |
무조건 큰 범위의 큰 값을 사용하게되면 편하긴 하겠지만, 그만큼 저장공간을 차지하며, 느려질 수도 있기에 적절히 알맞은 타입을 선택해야합니다.
여러가지 제약조건
테이블을 작성할때에 컬럼별로 다양한 제약조건을 작성할 수 있는데 아래와 같은 제약 조건들이 있습니다.
-
NOT NULL : 해당컬럼은 비어있을 수 없습니다.
- EX) VALUE1 VARCHAR2(10) NOT NULL
-
NULL : 해당 컬럼은 비어있어도 상관 없습니다.
- EX) VALUE1 VARCHAR2(10) NULL
- EX) VALUE1 VARCHAR2(10) NULL
-
AUTO_INCREMENT : 값이 생성될때마다 값을 자동으로 1씩 증가시켜 줍니다.
- EX) id INT(11) INCREMENT
- EX) id INT(11) INCREMENT
-
UNIQUE : NULL은 허용하지만 중복은 불가능합니다.
- EX) VALUE2 VARCHAR2(10) UNIQUE
- EX) VALUE2 VARCHAR2(10) UNIQUE
-
PRIMARY KEY : NULL, 중복 둘다 불가능합니다.
- EX) VALUE3 VARCHAR2(10) PRIMARY KEY
- EX) PRIMARY KEY id (이미 생성된 컬럼에한해서)
-
FOREIGN KEY : NULL가능, 다른 테이블의 PRIMARY KEY여야 하고 해당 테이블의 컬럼에 삽입되지 않은 값은 사용 불가능합니다.
-
CHECK : 특정 범위 혹은 특정 값만 들어올 수 있게 합니다.
- EX) VALUE5 VARCHAR2(10) CHECK(VALUE5 BETWEEN 1 AND 10)
- EX) VALUE6 VARCHAR2(10) CHECK(VALUE6 IN (‘A’, ‘B’))
-
DEFAULT : NULL 값이 들어올 시 지전된 값을 삽입합니다.
- EX) VALUE7 VARCHAR2(10) DEFAULT ‘홍길동’
Table 생성해보기
아래와 같이 스프레드 시트에있는 테이블을 mysql에서 만들어 보겠습니다.
CREATE TABLE topic(
id INT(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
description TEXT NULL,
created DATETIME NOT NULL,
author VARCHAR(15) NULL,
profile VARCHAR(200) NULL,
PRIMARY KEY(id)
);