- 숫자 타입 : INT, BIGINT(정수형), FLOAT, DOUBLE(실수형) 등
- 문자열 타입 : VARCHAR(가변길이), CHAR(고정길이), TEXT, BLOB 등
- 날짜/시간 타입 : DATE(날짜), TIME(시간), DATETIME, TIMESTAMP(날짜와 시간) 등
- 불리언 타입 : BOOLEAN, BOOL 등
- 숫자 타입은 정수형과 실수형으로 구분되며, 정수형은 소수점 이하의 값을 저장하지 않고 실수형은 소수좀 이하의 값을 저장한다.
- 문자열 타입은 고정길이와 가변길이로구분되며, 고정길이는 저장할 데이터의 길이가 일정하고 가변길이는 저장할 데이터의 길이가 가변적이다.
- TEXT는 대부분의 문자열을 저장하는 데 사용하고 문자 집합과 관련된 처리를 한다.
- BLOB은 이진 데이터를 저장하는 데 사용한다. 최대 크기는 TEXT와 동일하지만 문자 집합에 영향을 받지 않는다.
- 날짜/시간 타입은 날짜, 시간, 날짜와 시간 등으로 구분된다.
- 불리언 타입은 참(TRUE)과 거짓(FALSE) 두 가지 값을 저장할 수 있다.
-- 대표적인 데이터 타입 사용해보기
-- 테이블 생성()
create database school;
use school;
CREATE TABLE student(
student_id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
grade TINYINT NOT NULL,
major VARCHAR(50),
admission_date DATE NOT NULL,
notes TEXT
);
DESC student;
-- DML
SELECT * FROM student;
INSERT INTO student(student_id, name, grade, major, admission_date, notes)
VALUES(1001,'김지영',1,'컴퓨터공학','2025-09-01','프로그로밍에 뛰어남');
INSERT INTO student(student_id, name, grade, major, admission_date, notes)
VALUES(1002,'이민수',2,'수학','2025-12-05',NULL);
-- 테이블에 데이터 전체 삭제
-- DELETE FROM student;
INSERT INTO student(student_id, name, grade, major, admission_date, notes)
VALUES(1001,'김지영',1,'컴퓨터공학','2025-09-01','프로그로밍에 뛰어남'),
(1002,'이민수',2,'수학','2024-12-05',NULL),
(1003,'박소연',3,'물리학','2023-09-01','양자역학에 관심이 많음');
-- 과목 테이블 설계
create table subject(
subject_id int primary key,
subject_code char(4) not null,
subject_name varchar(50) not null,
professor varchar(20) not null,
department_code char(2) not null,
created_at datetime not null
);
desc subject;
select * from subject;
insert into subject(subject_id,subject_code,subject_name,professor,department_code,created_at)
values(1,'CS01','데이터베이스','김영희','CS','2023-09-01 10:05:01');
insert into subject(subject_id,subject_code,subject_name,professor,department_code,created_at)
values(2,'MA01','미적분학','김철수','MA','2023-09-01 10:05:01');
-- 수강 기록 테이블 생성
create table enrollment(
enrollment_id int primary key,
student_id int not null,
subject_id int not null,
score decimal(5,2) not null,
enrolled_at datetime not null
);
select * from enrollment;
insert into enrollment(enrollment_id,student_id,subject_id,score,enrolled_at)
values(1,1001,1,85.50,'2023-09-01 12:00:00'),
(2,1002,1,100.00,'2023-09-02 11:00:00');
insert into enrollment(enrollment_id,student_id,subject_id,score,enrolled_at)
values(3,1001,2,75.50,'2023-09-10 12:00:00');