04 - 1 DDL (데이터 타입, 제약 조건)
DDL은 Data Definition Language의 약자
DDL과 DML을 집중적으로 배워볼 것인데 오늘은 DDL에 대해서 정리하는 시간
DDL은 Data Definition Language 직역한 것 처럼 데이터 정의 언어이다.
테이블을 생성하고 삭제하고 바꾸는 기능을 실행하고 CREATE, DROP, ALTER이 있다.
순서가 이걸 앞에 배워야 할 것 같은데, 정리 순서가 엉망인 것 같지만 우린 필요한 정보만 찾아보는 검색 고수니깐 노상관(?)
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!