✅ SQL
관계대수에 기초해 RDBMS의 데이터 관리를 위해 1970년대 초 IBM에서 설계로 특징으로는 비절차적 언어, 필요한 데이터만 기술하며 인간의 언어와 매우 유사하고 간단, 명료함
✅ SQL 구성
📌 데이터 정의 언어(DDL)
- 데이터베이스 내의 객체를 생성 및 삭제하고 그 구조를 조작하는 명령어의 집합
- 데이터가 준수해야 하는 제약조건을 기술
📌 데이터 조작 언어(DML)
- DDL에 의해 정의된 테입ㄹ에 데이터르 조작하는 명령어의 집합
- 데이터의 대한 CRUD 명령을 포함
📌 데이터 제어 언어(DCL)
- DBMS의 동작, 접근 권한 등을 관리하는 SQL 명령어의 집합
✅ 데이터 정의 언어의 개념
데이터베이스 객체를 생성, 삭제 또는 구조를 수정하는 명령어의 집합
📌 종류
- 저장 : 스키마 ,테이블, 인덱스 , 뷰
- 조작 : 트리거, 프로시저, 함수 등
CREATE , ALTER , DROP

✅ 스키마
데이터베이스로 한 조직의 데이터베이스 시스템의 운영에 필요한 테이블, 인덱스 , 뷰 등의 데이터베이스 객체의 집합으로 스키마 관리 구문 형식
- 생성 : CREATE ...
- 삭제 : DROP...
✅ 릴레이션과 테이블
RDBMS의 기본적 데이터 저장구조로 2차원 형태의 저장 구조인 점에서 유사
- 릴레이션 : 데이터를 구성하는 추상적인 개념으로 집합론에 기반한 여러 속성을 갖는 레코드의 집합으로 레코드의 순서가 없으며 중복된 레코드가 존재하지 않음
- 테이블 : 물리적으로 데이터를 저장하는 구체적인 개념으로 레코드의 순서가 존재 가능하며 키 제약에 따라 중복된 레코드가 존재 가능
✅ 테이블 정의
새로운 2차원 형태의 테이블 생성
CREATE TABLE 테이블이름 ( <컬럼1><데이터 타입1> [제약조건1] [ , <컬럼2> <데이터 타입2> [제약조건2] ]
...
[,
<컬럼n><데이터 타입n>[제약조건n] ]
[PRIMARY KEY 컬럼명]
[UNIQUE 컬럼명]
[FOREIGN KEY 컬럼 REFERENCES 테이블이름(컬럼)]
}
✅ 데이터 타입의 개념
컬럼이 가질 수 없는 값의 범위, 즉 도메인을 결정하는데 프로그래밍 언어에서의 변수를 생성 시 사용하는 데이터 타입의 사용목적과 방법이 매우 유사
📌 타입
- 문자 : CHAR , VARCHAR , TEXT
- 숫자 : INT , FLOAT , DOUBLE , DECIMAL(m , n)
- 날짜 /시간 : DATE , TIME , DATETIME , TIMESTAMP
✅ 정수 데이터 타입
TINYINT
- 바이트 정수(-128~ 127)
+ EX) : 나이, 학년 등의 크기가 작은 정수
SMALLINT
2바이트 정수(-32768~32767)
+ EX) 물품번호, 인원 등 중간 크기의 정수
INT
- 4바이트 정수(약 20억 ~ 20억)
+ Ex) 물품의 금액, 전화번호 등의 일반 크기의 정수
BIGINT
- 8바이트 정수(-약 9000경~ 9000경)
+ EX) 계좌의 잔고, 천문학적인 크기의 정
✅ 실수 데이터 타입
부동 소수형
- FLOAT: 4바이트 크기 부동 소수
- FLOAT(P): 소수점 이하 P개 자리의 부동 소수
- DOUBLE : 8바이트 크기 부동 소수
고정 소수형
- DECIMAL (M, N): 전체 M 자리, 소수점 이하 N자리의 소수를 저장
예) DECIMAL (5,2)는 -999.99~999.99
- NUMERIC: DECIMAL과 유사
✅ 날짜 및 시간 데이터 타입
날짜 데이터 타입
- DATE: YYYY-MM-DD' 형식의 시간
- YEAR:Y' 형식의 연도
시간 데이터 타입
- TIME: 'HH:MI:SS' 형식의 시간
날짜 및 시간 데이터 타입
- DATETIME: 'YYYY-MM-DD HH: MI:SS' 형식의 날짜 및 시간
- TIMESTAMP: DATETIME과 유사
- 유닉스 시간 기반 1970년 ~ 2038년 표현 가능
- DBMS 서버의 시간대에 따라 시간 변경
✅ 문자
- CHAR(N): 최대 길이가 N인 고정길이 문자열
- VARCHAR(N): 최대 길이가 N인 가변길이 문자열
Ex) 'DATABASE' 문자열 저장

- TEXT: 길이가 최대 2~4GB인 가변길이 문자열
- CLOB(Character Large OBject)
- 수백 MB ~ 수 GB의 데이터 저장을 위한 타입
- 레코드 단위가 아닌 별도의 저장 공간을 부여하는 외부 저장 방식
- ENUM: 유한개의 문자열 집합 중 하나의 값을 선택 + 효율적인 저장 및 처리를 위해 내부적으로 숫자로 저장
- 성별:ENUM(남,'여)
- 혈액형: ENUM('A', 'B', 'O', 'AB')
✅ 제약 조건
- 테이블에 존재하는 데이터를 무결하고 세밀하게 관리하기 위한 목적으로 사용
- DBMS는 테이블 조작 시 테이블에 정의된 제약조건을 만족시키는 지속적으로 검사
- DBMS는 적용하려는 제약의 유형에 따라 다양한 제약 조건을 지원
✅ 제약조건 종류
- PRIMARY KEY : 기본키 지정, UNIQUE와 NOT NULL 특성
- FOREIGN KEY : 외래키 지정, 참조 컬럼 정의
- NOT NULL : NULL이 될 수 없는 컬럼에 지정
- UNIQUE: 동일한 컬럼값을 가질 수 없음을 지정
- AUTO_INCREMENT: 레코드가 추가될 때 자동적 으로 속성값이 1부터 1씩 증가되어 입력
- CHECK : 컬럼값이 특정 조건 준수 여부 지정
CREATE TABLE 교수 (
교수번호 CHAR(10) NOT NULL,
교수이름 VARCHAR(50),
직위 ENUM('조교수', '부교수', '정교수'),
소속학과 CHAR(50) NOT NULL,
연봉 INT NOT NULL,
PRIMARY KEY (교수번호),
FOREIGN KEY (소속학과) REFERENCES 학과(학과이름)
);
✅ 테이블 수정
CREATE 문에 의해 생성된 테이블에 컬럼을 추가, 수정 또는 삭제로 컬럼 삭제 또는 컬럼의 데이터 탑이 수정 시 데이터에 대한 소실이 발생하므로 많은 주의가 요구
ALTER TABLE 테이블이름 [ADD COLUMN 컬럼 데이터타입 [제약조건]]
[DROPCOLUMN컬럼이름]
[CHANGE COLUMN 수정전컬럼 수정후컬럼]
[MODIFY COLUMN 컬럼 데이터타입]
✅ 테이블 삭제
존재하는 테이블을 스키마에서 삭제하는데 삭제된 테이블에 저장된 모든 데이터가 소실, 복구가 불가능한 연산이므로 각별한 주의가 요구
DROP TABLE 테이블이름
🔎 정리
- SQL은 사람과 DBMS 간의 의사소통을 위한 언어로, DDL과 DML 등으로 구성
- DDL(데이터 정의 언어)은 CREATE, ALTER, DROP 등을 사용하여 데이터베이스 객체를 정의·수정·삭제
- 스키마는 데이터베이스 구조를 의미하며, 테이블·뷰·인덱스 등의 객체 집합
- CREATE TABLE문은 컬럼 이름과 데이터 타입을 지정해 테이블을 생성
- 제약조건에는 PRIMARY KEY, FOREIGN KEY, NOT NULL, UNIQUE, DEFAULT 등이 있으며 무결성을 보장
'CS > Database' 카테고리의 다른 글
| 05. SQL - 2 (0) | 2025.04.30 |
|---|---|
| 03. 관계형 모델 (0) | 2025.04.29 |
| 02. 데이터베이스 모델링 (0) | 2025.04.29 |
| 01. 데이터베이스 이해 (0) | 2025.04.29 |