본문 바로가기
SQL (RDBMS)

SQL 데이터형식 정리

by MachineJW 2023. 4. 15.

테이블을 생성할때는 데이터의 형식을 설정해야한다.

각 데이터에 맞는 데이터 형식을 지정함으로써 효율적으로 저장할 수 있다.

 

1. 정수형

DataType Byte Range
TINYINT 1 -128 ~ 127
SMALLINT 2 -32,768 ~ 32,767
INT 4 약 -21억 ~ +21억
BIGINT 8 약 -900경 ~ +900경

2. 문자형

DataType Byte 설명
CHAR 1 ~ 255 고정형
VARCHAR 1 ~ 16383 가변형

- VARCHAR가 CHAR보다 메모리를 효율적으로 운영할 수 있지만 MySQL 내부적으로 성능 면에서는 CHAR로 설정하는 것이 더 좋다.

- 전화번호와 같은 숫자로써 의미가 없고 연산에 의미가 없다면 문자형으로 지정하는 것이 좋다.

  (더하기 빼기 등의 연산에 의미가 있다, 크다/작다 또는 순서에 의미가 있다에 해당하지 않는다면 문자형)

  물론, 정수형으로 지정해도 타당성면에서 비효율적일뿐 문제는 없다.

* 문자형에는 BINARY, VARBINARY 형식도 있다. 그러나 잘 사용하지 않는다고 한다.

3. 대량의 데이터 형식

DataType Byte
TEXT 형식 TEXT 1~65535
LONGTEXT 1~4294967295
BLOB 형식 BLOB 1~65535
LONGBLOB 1~4294967295

*TINYTEXT, MIDIUMTEXT,TINYBLOB,MEDIUMBLOB 형식도 있지만 잘 사용하지 않는다.

- TEXT : 소설 또는 영화 대본과 같은 내용을 저장할 때 필요한 데이터 형식

- BLOB : 바이너리 데이터로 된 사진 또는 동영상

4. 실수형

DataType Byte 설명
FLOAT 4 소수점 아래 7자리까지 표현
DOUBLE 8 소수점 아래 15자리까지 표현

5. 날짜형

DataType Byte 설명
DATE 3 YYYY-MM-DD
TIME 3 HH:MM:SS
DATETIME 8 YYYY-MM-DD HH:MM:SS

6. 변수의 사용

/*변수 선언 및 연산*/
SET @var1 = 5 ;
SET @var2 = 10;

SELECT @var1 + @var2;

변수는 @변수이름 형식으로 만들고, SET 문으로 변수에 값을 대입

 

변수는 예외적으로 LIMIT 절에 사용할 수 없다. 

LIMIT 대신 PREPARE, EXECUTE를 사용할 수있다.

 

6. CREATE TABLE 문 연습 (전화번호부 테이블)

CREATE TABLE phonebook (
	phone_num CHAR(8) NOT NULL PRIMARY KEY,
	nick_name VARCHAR(20) NOT NULL, 
	rel CHAR(8) NULL CHECK (rel IN ('friend', 'family', 'company')),
	address VARCHAR(20) NULL );
	
DESC phonebook;

phone_num = 전화번호를 기본키로.. 지금 생각해보니 전화번호가 8자가 넘어가는데 char바이트를 잘못 지정해줬다...

닉넴은 20자 내외로 작성

rel은 관계 컬럼이다. CHECK 제약 조건으로 'friend', 'family', 'company' 3가지만 입력 될 수 있도록 했다.

address는 주소를 넣는 컬럼...

'SQL (RDBMS)' 카테고리의 다른 글

INSERT, DELETE, UPDATE 문  (0) 2023.04.09
테이블 제약조건(Constraint)  (0) 2023.02.26
ORDER BY, GROUP BY  (0) 2022.12.05
혼공SQL) SELECT문 실습  (0) 2022.12.05
데이터베이스(DataBase)/DBMS/SQL 개념  (0) 2022.11.29