Database ‐ Database 기본 - dnwls16071/Backend_Summary GitHub Wiki
📚 SQL(Structured Query Language)
- 관계형 데이터베이스의 표준 언어
- SQL의 중요한 특징 : 선언적 언어(Declarative Language) -> 데이터베이스에게 어떻게 데이터를 가져올지 지시하는 것이 아니라 무엇을 원하는지만 선언적으로 명시한다.
📚 데이터 타입
숫자 타입 - 정확한 숫자 타입
| 타입 | 저장 공간(Bytes) | 설명 |
|---|---|---|
| INTEGER, INT | 4 | 가장 일반적으로 사용되는 정수 타입 |
| TINYINT | 1 | 매우 작은 정수를 저장할 때 사용 |
| SMALLINT | 2 | 작은 정수를 저장할 때 사용 |
| MEDIUMINT | 3 | 중간 크기의 정수를 저장할 때 사용 |
| BIGINT | 8 | 매우 큰 정수를 저장할 때 사용 |
| DECIMAL, NUMERIC | 가변 | 고정 소수점 숫자를 정확하게 저장할 때 사용되며 금융 데이터와 같이 정확한 계산이 필요할 때 사용 |
| BIT | 가변 | 하나 이상의 비트 값을 저장 |
숫자 타입 - 근사치 숫자 타입
| 타입 | 저장 공간(Bytes) | 설명 |
|---|---|---|
| FLOAT | 4 | 단정밀도 부동 소수점 숫자로 정밀도가 아주 중요하지 않은 실수 값에 사용된다. |
| DOUBLE | 8 | 배정밀도 부동 소수점 숫자로 더 큰 범위와 높은 정밀도를 가진다. |
문자열 타입
- VARCHAR(N) : 최대 N글자까지 저장되는 가변 길이 문자열
- 이름, 주소처럼 길이가 제각각인 데이터에 사용하면 저장 공간을 효율적으로 쓸 수 있다.
- CHAR(N) : 항상 N글자를 차지하는 고정 길이 문자열
- 성별 코드나 우편번호처럼 항상 길이가 정해진 데이터에 사용하면 VARCHAR보다 아주 약간의 이점을 가질 수 있다.
- TEXT : 매우 긴 텍스트를 저장할 때 사용된다.
- 상품 상세 설명, 장문 리뷰, 블로그 게시물 본문처럼 긴 글 작성에 적합하다. 자주 사용하진 않는다.
날짜와 시간 타입
- DATE : 날짜 정보만 저장한다.
- DATETIME : 날짜와 시간 정보를 저장한다.
- TIMESTAMP : DATETIME과 유사하게 날짜와 시간을 저장하나 특별한 기능이 있다.
- 타임존(Timezone) 자동 변환 : TIMESTAMP는 데이터를 저장할 때 현재 서버 타임존을 기준으로 UTC(협정 세계시)로 변환하여 저장하고, 데이터를 조회할 때는 현재 서버 타임존에 맞춰 다시 변환해서 보여준다.
기타 타입
- BLOB : 이미지, 오디오, 비디오 같은 이진 대용량 데이터 저장
- ENUM : 단일 선택 타입, 미리 정의한 값 목록 중 하나만 선택하여 저장
- SET : 다중 선택 타입, 미리 정의한 값 목록 중 여러 개를 동시에 선택하여 저장
📚 제약 조건
NOT NULL : 필수 입력 항목 지정
- 해당 제약 조건이 걸린 열에는 NULL값을 허용하지 않는다. 즉, 데이터를 INSERT 할 때, 이 열의 값은 반드시 입력되어야 한다.
UNIQUE : 중복 불가 항목 지정
- 해당 제약 조건이 걸린 열의 값은 테이블 내에서 항상 고유해야만 한다. 즉, 중복된 값을 허용하지 않는다.
- PRIMARY KEY와의 차이점 : PRIMARY KEY는 테이블당 단 하나만 존재할 수 있지만, UNIQUE는 여러 열에 설정할 수 있다.
PRIMARY KEY(PK) : 테이블의 대표 식별자
- 테이블의 모든 행을 유일하게 식별하는 열, NOT NULL과 UNIQUE의 특징을 모두 가진다. 모든 테이블에는 반드시 PRIMARY KEY가 있어야 한다.
- AUTO_INCREMENT : MySQL에서 PRIMARY KEY에 자주 사용하는 옵션이다. 정수 타입의 PRIMARY KEY 열에 이 옵션을 설정하면 새로운 데이터가 추가될 때마다 1씩 자동으로 증가하는 번호를 할당해준다.
FOREIGN KEY(FK)
- 한 테이블을 다른 테이블과 연결하는 관계의 고리. 참조하는 열의 값은 반드시 참조되는 테이블의 PRIMARY KEY 값 중 하나여야 한다는 참조 무결성을 강제한다.
DEFAULT
- 데이터를 INSERT할 때, 특정 열의 값을 명시하지 않으면 자동으로 설정된 기본값이 입력된다.
CHECK
- 컬럼에 입력되는 값이 특정 조건을 만족하는지 검사