데이터 타입
대표적으로 숫자, 문자, 날짜(시간)을 저장하기 위한 데이터 타입으로 나눈다.
데이터 타입을 정할시 최대값과 데이터 포맷(크기, 형태)을 생각해야 된다. 최대값 > 형태 > 크기 순으로 중요하다.
Ex) 학번, 전화번호, 생일 과 같은 키워드일 경우 계산을 위한 숫자가 아닌 문자의 형태기 때문에 INT가 아닌 VARCHAR Type을 사용한다.
- 숫자 데이터 타입
- 문자 데이터 타입
- 날짜, 시간 데이터 타입
※ 데이터의 크기를 설정 할 때는 예상 값의 1.5배 잡는것이 안정적이다.
※ 일반 프로그래밍 언어와 다르게 SQL은 실세계에 있는 데이터를 구현하기 때문에 많은 Datatype이 있다.
숫자 데이터 타입
Datatype | Bytes | 설명 |
SMALLINT | 2 | -32 768 ~ 32 767 |
INT | 4 | -21억 ~ 21억 |
FLOAT | 4 | 실수, 소수점 아래 7자리 |
DECIMAL(m, [n]) | 5~17 | MySQL 활용
DECIMAL(m, [n]) : 전체자리수 m, 소수점 아래 자리수 2 DECIMAL(5) : -99999 ~ 99999
DECIMAL(5, 1) : -9999.9 ~ 9999.9 DECIMAL(5,2) : -999.99 ~ 999.99 |
문자 데이터 타입
Datatype | Bytes | 설명 |
CHAR(n) | 1~255 | 고정길이 |
VARCHAR(n) | 1~65500 | Variable Char, 가변길이 |
- CHAR(n) 는 n만큼의 고정 메모리를 잡기 때문에 검색 속도가 빠르며 메모리를 많이 쓴다.
- VARCHAR(n) n만큼 이하의 메모리를 잡기 때문에 검색 속도가 느리지만 메모리를 아낄 수 있다.
- 실무에서는 VARCHAR 단점이 해결 되기 때문에 VARCHAR를 많이 쓴다.
날짜, 시간 데이터 타입
Datatype | Bytes | 설명 |
DATE | 3 | MySQL 활용
날짜, YYYY-MM-DD
|
DATETIME | 8 | MySQL 활용
날짜시간 YYYY-MM-DD HH:MM:SS
|
- TIME을 사용할 경우에는 DATETIME을 사용한다.
제약조건
- 테이블 밑 데이터의 무결성을 보장하기 위해 개체 인스턴스에 대한 논리적으로 명세한 조건
- 데이터의 구조적 제약과 실제값에 대한 제약
제약조건의 종류
- 도메인 무결성 : 실제값에 대한 제약. → Datatype, NN
- 개체 무결성 : 기본키를 설정, 그것에 대해 Null을 허용하지 않음. → PK, NN
- 참조 무결성 : 참조할 수 없는 외래키를 가질 수 없다. → NN
※ PK : Primary Key (복수로 설정할 수 없다.)
※ NN : Not Null
※ UQ : Unique. Primary key 에서 포함한다.
※ B : Binary
※ AI : Auto Increase
※ Integrity : 무결성
※ Window Service : 윈도우 서비스는 오랜 시간 동안 실행되며 특정한 기능을 수행하는 실행 파일이다.
※ Demon : 멀티태스킹 운영 체제에서 데몬은 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다.
※ DDL (Data Definition Language) : 컴퓨터 사용자 또는 응용 프로그램 소프트웨어가 컴퓨터의 데이터를 정의하는 컴퓨터 언어 또는 컴퓨터 언어 요소이다.
※ ANSI-SQL : 미국 표준 협회에서 표준화한 표준 SQL문
▶ 예제 : Schooldb 라는 데이터 베이스안에. 학번, 학년, 이름, 주소, 전화번호가 있는 Student 테이블을 만들어보자.
CREATE TABLE `schooldb`.`student` (
`ID` VARCHAR(10) NOT NULL,
`Schoolyear` VARCHAR(2) NOT NULL,
`Name` VARCHAR(30) NOT NULL,
`Address` VARCHAR(45) NOT NULL,
`Phone` VARCHAR(12) NOT NULL,
PRIMARY KEY (`ID`))
COMMENT = 'Student by. Snag Rok Jung';
'SQL' 카테고리의 다른 글
[MySQL] JOIN (0) | 2022.04.01 |
---|---|
[MySQL] SubQuery(서브쿼리), ORDER BY, DISTINCT, GROUP BY, HAVING, VIEW (0) | 2022.03.30 |
[MySQL] CRUD / 예약어 (0) | 2022.03.29 |
[MySQL] 설치 (MAC) (0) | 2022.03.28 |
[MySQL] 설치 (Window) (0) | 2022.03.28 |