DBMS(DataBase Management System)는 데이터베이스를 생성, 관리, 수정하는 시스템이다. db와 관련된 일련의 작업을 가능하게 하는 프로그램(하드웨어를 포함하는 포괄적인 개념)으로 일반적으로 db프로그램을 칭한다.
데이터베이스는 데이터를 실제로 저장하는 물리적인 공간이다.
스키마는 그 데이터가 어떻게 구조화되고 조직될 것인지에 대해 설계한다.
DBMS는 스키마를 기반으로 데이터를 관리한다.

Entity : 저장하고 관리해야할 큰 틀, 묶음

엔티티를 다 만들고 정리하고 나면 관계가 생긴다. → RDBMS
create : 새로운 데이터베이스, 테이블 생성alter : 기존 데이터베이스 구조 변경drop : 데이터베이스 또는 테이블 삭제truncate : 테이블 내의 저장된 내용 삭제insert : 데이터를 삽입select : 데이터를 조회 - DQL(질의어)update : 데이터를 수정delete : 데이터를 삭제grant : 사용자 권한 부여revoke : 사용자 권한 회수backup restorecommit : 실행 반영rollback : 실행 되돌리기
데이터 정의 언어로, 데이터베이스 객체(테이블, 뷰, 인덱스 등)를 생성(CREATE), 수정(ALTER), 삭제(DELETE)하는 데 사용한다.
데이터베이스의 객체(테이블, 뷰, 인덱스 등)를 생성한다.

column_name : 각 열의 이름
datatype : 각 열의 데이터 유형 (예: int, varchar, date 등)
constraints : 열의 데이터에 대한 규칙, 선택 사항 (예: not null, unique, primary key, foreign key)
💡 varchar는 char와 비슷하지만 고정된 크기로만 저장해 공간 낭비가 일어날 수 있는 char와 달리 글자를 가변 길이로 저장해 공간을 절약할 수 있다는 장점이 있다. 따라서 char는 전화번호, 국가 코드와 같이 짧고 일정한 데이터를 저장하는 데에 적합하고 varchar는 이름, 주소, 이메일과 같은 길이가 다양한 가변 데이터를 저장하는 데 적합하다.

테이블 작성 시 각 컬럼에 대해 값 기록에 대한 제약조건을 설정할 수 있다. 데이터 무결성 보장을 목적으로 한다. 입력/수정하는 데이터에 문제가 없는지 자동으로 검사하기 위한 목적이다.
제약조건 종류 : PRIMARY KEY, FOREIGN KEY, NOT NULL, UNIQUE, CHECK, DEFAULT
기본키(primary key)
기본키는 테이블에서 각 행을 고유하게 식별하는 컬럼을 의미한다. not null과 unique 제약 조건이 결합된 형태로, 중복 값이 없고 NULL 값을 가질 수 없다. 한 테이블에 하나만 설정할 수 있으며 컬럼 레벨과 테이블 레벨 모두에서 설정 가능하다. 하나의 컬럼을 기본키로 설정하거나 여러 컬럼을 묶어 복합키로 설정할 수 있다.
외래키(foreign key)
외래키는 다른 테이블의 primary key 또는 unique 제약 조건이 설정된 컬럼을 참조하는 제약 조건이다. 테이블 간이 관계를 설정하며 참조 무결성을 유지하기 위해 사용된다. 외래키를 설정하면 참조된 테이블의 값만 사용할 수 있으며 참조 무결성을 위반할 수 없게 된다. 테이블 레벨에서 설정 가능하다.

NOT NULL
해당 컬럼에 반드시 값을 기록해야하는 경우 사용한다. 삽입/수정 시 NULL값을 허용하지 않도록 컬럼레벨에서 제한한다.
아무런 제약 조건이 없다면 NULL값을 넣어도 문제없이 삽입되어 문제가 되는 경우가 생긴다. 예를 들어 제약 조건이 없으면 회원가입 시에 정보를 입력하지 않아도 가입이 처리된다. 따라서 not null 조건이 필요하다.
UNIQUE
컬럼에 입력한 값들에 대해 중복을 제한하는 제약조건이다. 컬럼 레벨, 테이블레벨에서 설정 가능하다.
제약조건이 없다면 중복된 값이 들어가도 처리가 되어서 회원 가입 시 중복된 아이디로 가입하게 되면 회원들을 구분할 수 없게 된다는 문제가 생길 수 있다. UNIQUE 제약조건이 설정된 컬럼에는 중복 값은 넣을 수 없게 된다.
※ UNIQUE 제약 조건이 설정되었다 하더라고 NULL 값으로 넣게 되면 중복 처리가 되어 버린다.
이때 해결 방법은 UNIQUE 제약조건과 NOT NULL 제약 조건을 같이 주면 된다.
CHECK
컬럼에 기록되는 값에 조건을 설정할 수 있다. (8버전 이상부터 가능)
check ([컬럼명] [비교연산자] [비교값])
비교값은 리터럴값만 사용할 수 있다. 변하는 값이나 함수는 사용하지 못한다.
자동으로 NOT NULL 규칙이 적용된다.
DEFAULT
컬럼에 값이 입력되지 않았을 경우, 기본값을 자동으로 할당한다.
| 제약조건 | 설명 |
|---|---|
| PRIMARY KEY | 기본키, NOT NULL과 UNIQUE 조건의 결합 형태이다. |
| FOREIGN KEY | 외래키, 참조하는 테이블의 PRIMARY KEY나 UNIQUE컬럼을 참조한다. |
| NOT NULL | 해당 컬럼이 NULL 값을 허용하지 않음을 보장한다. |
| UNIQUE | 중복된 값이 입력되지 않도록 고유한 값을 보장한다. |
| CHECK | 특정 조건을 만족하는 값만 허용하여 데이터 유효성을 보장한다. |
| DEFAULT | 값이 입력되지 않았을 경우, 기본값을 자동으로 할당하여 입력 데이터의 일관성을 유지한다. |
NOT NULL 제약조건을 포함한 컬럼 구조는 복사되지만 primary key, auto_increment, index가 복사되지 않음
