코린이 유치원/SQL반

04 - 1 DDL (데이터 타입, 제약 조건)

개나리반 2022. 6. 2. 23:24

DDL은 Data Definition Language의 약자

DDL과 DML을 집중적으로 배워볼 것인데 오늘은 DDL에 대해서 정리하는 시간 

 

DDL은 Data Definition Language 직역한 것 처럼 데이터 정의 언어이다.

테이블을 생성하고 삭제하고 바꾸는 기능을 실행하고 CREATE, DROP, ALTER이 있다. 

 

순서가 이걸 앞에 배워야 할 것 같은데, 정리 순서가 엉망인 것 같지만 우린 필요한 정보만 찾아보는 검색 고수니깐 노상관(?)

 

절거운 SQL MEME로 시작하는 코린이 유치원


01 Database 만들기, 사용

create database db이름 -- db 생성

use db이름 -- db 사용하기

미친 직.관.성 create로 데이터베이스 생성하고 use 데이터베이스 이름 생성하면 우리는 앞으로 이 db를 사용하는 것이다.

 

 

02 Table 생성

데이터 베이스 만들었으면 그 다음은 뭐다?

데이터 베이스에 들어갈 테이블을 만들어 줘야지 

 

👉 Table 생성 기본 구문

create table 테이블 이름 (
      컬럼 설정
);

👉 테이블명, 컬럼명 규칭

  • 영문, 숫자, _만 사용 가능
  • 첫글자는 반드시 영문자여야 한다.(SQL은 파이썬과 다르게 대,소문자 구별 ❌

 

기본 구문은 so 씸플. Mi친 직관성의 연속이다.

중요한 건 컬럼을 어떻게 설정할지이고, 다음과 같은 내용이 들어가야 한다.

  • 컬럼명
  • 데이터타입
  • default 값 : 값을 입력하지 않을 때 넣어줄 기본 값 (생략 가능)
  • 제약조건 : 컬럼이 가질 수 있는 값에 대한 제약 조건을 지정
create table 테이블이름(
  컬럼명  데이터타입  default값  제약조건
);

show tables; -- 데이터 베이스에 생성된 테이블들 조회

 

03 데이터 타입

create 구문 만들기 전 우린 SQL의 데이터타입과 제약조건을 배워야한다.데이터 타입과 제약조건 모른상태에서 테이블부터 만들 순 없잖아유? 🤷🏻

 

데이터 타입은 문자열, 정수, 실수, 날짜 타입 그리고 결측지가 있다. (파이썬보다 심플해서 조와)

 

 

👉 문자열

종류 Data Type  최대크기
(byte)
설명 비고
문자열
타입
CHAR(n) 0 ~ 255 고정 길이 문자열 CHAR(크기)
VARCHAR(n) 0 ~ 65,535 가변길이 문자열 VARCHAR는
최대길이 지정
TINYTEXT 0 ~ 255 TEXT 타입은 최대길이 지정하지 않는다.
TEXT 0 ~ 65,535
MEDIUMTEXT(n) 0~ 16,777,215
LONGTEXT(n) 0 ~ 4,294,967,295
  • 길이 생략하면 1글자로 자동 설정
  • 고정길이: 데이터 글자 수가 모자라면 공백으로 채우기 때문에 주로 VARCHAR 사용. CHAR는 주민번호 같은 데이터에 주로 사용
  • 가변길이: n으로 지정된 크기는 최대 크기이며, 입력된 글자수에 따라 저장 크기가 변경

 

👉 정수

종류 Data Type 크기 설명 비고
정수 TINYINT 1 byte -128 ~ 127 (0~255)  
BOOLEAN 1 byte TRUE:1 / FALSE: 0 TRUE, FALSE 키워드로 입력하나 조회시에는 1,0이 조회
SMALLINT 2 byte -32768 ~ 32767
(0 ~ 655535)
 
INT 4 byte -2,147,483,648 ~ 2,147,483,647
(0 ~ 4,294,967,295)
 
BIGINT 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
(0 ~ 18,449,744,073,709,551,615)
 

 

👉 실수

종류 Data Type 크기 설명 비고
실수 DECIMAL 8 byte 고정 소수 DECIMAL(M,N)
- M: 총 자릿수
- N: 소수 자릿수
정확도가 요구되는 실수 데이터에 사용
FLOAT 4 byte 부동소수  
DOUBLE 8 byte 부동소수 FLOAT 보다 고수점 자리 더 많이 표현 가능

 

👉 날짜타입

종류 Data Type 크기 설명 비고
날짜타입 DATE 3 byte 년, 월, 일 YYYY-MM-DD
TIME 3 byte 시, 분, 초 hh:mm:ss
DATETIME 8 byte 년, 월, 일, 시, 분, 초 YYYY-MM-DD
hh:mm:ss
time 존에 상관없이 고정
TIMESTAMP 4 byte 년, 월, 일, 시 , 분, 초  YYYY-MM-DD
hh:mm:ss
time zone을 변경하면
입력된 일시가 변경
YEAR 1 byte YYYY 년도만 저장

 

 

👉 결측치

NULL 없는 값, 모르는 값 의미

 

 

04 제약조건

컬럼이 가질 수 있는 값에 대해서 말 그대로 제약을 지정하는 것

제약조건 설명
PRIMARY KEY(PK) 하나의 행을 대표하는 열, 행 식별 컬럼.
NOT NULL과 UNIQUE 조건 모두 만족
FOREIGN KEY(FK) 다른 테이블의 PRIMARY KEY 컬럼의 값만 가질 수 있는 컬럼 
다른 테이블을 참조할 때 사용하는 컬럼.
UNIQUE KEY(UK) 테이블 모든 행 중복값 불가 (NULL 제외)
NOT NULL(NN) NULL 값 가질수 없는 컬럼. 반드시 값 가져야 하는 열
CHECK(CK) 컬럼에 들어갈 값의 조건 지정
DEFAULT 컬럼의 기본값 설정. NULL 값일 경우 지정한 기본값 추가
AUOT_INCREMENT 자동 증가 정수 컬럼(MY SQL에서 사용) 정수 컬럼으로 값이 입력 되면 1씩 증가하는 값 가짐

 


데이터 타입과 제약 조건을 배웠으니깐

이제 다음부턴 본격 DDL을 사용해서 테이블을 만들고 지우고 바꾸고 해보자GO!