SQL

[MySQL] Datatype (데이터타입), Constraint(제약조건)

SangRok Jung 2022. 3. 28. 21:11
반응형

데이터 타입

대표적으로 숫자, 문자, 날짜(시간)을 저장하기 위한 데이터 타입으로 나눈다. 

데이터 타입을 정할시 최대값 데이터 포맷(크기, 형태)을 생각해야 된다. 최대값 > 형태 > 크기 순으로 중요하다. 

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