📺 참고 영상 보기
1. 숫자 자료형
️🔗 정수
자료형 | 바이트 | SIGNED | UNSIGNED |
---|---|---|---|
TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
SMALLINT | 2 | -32,768 ~ 32,767 | 0 ~ 65,535 |
MEDIUMINT | 3 | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 |
INT | 4 | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 |
BIGINT | 8 | -2^63 ~ 2^63 - 1 | 0 ~ 2^64 - 1 |
️🔗 고정 소수점(Fixed Point) 수
- 좁은 범위의 수 표현 가능, 정확한 값
자료형 | 설명 | 범위 |
---|---|---|
DECIMAL( s, d ) | 실수 부분 총 자릿수( s ) & 소수 부분 자릿수 ( d ) | s 최대 65 |
️🔗 부동 소수점(Floating Point) 수
- 넓은 범위의 수 표현 가능, 정확하지 않은 값 (일반적으로 충분히 정확)
자료형 | 표현 범위 |
---|---|
FLOAT | -3.402...E+38 ~ -1.175...E-38 , 0 , 1.175...E-38 ~ 3.402...E+38 |
DOUBLE | -1.797...E+308 ~ -2.225E-308 , 0 , 2.225...E-308 ~ 1.797...E+308 |
2. 문자 자료형
️🔗 문자열
- 위 링크에서 Storage Required 관련 표 비교
자료형 | 설명 | 차지하는 바이트 | 최대 바이트 |
---|---|---|---|
CHAR( s ) | 고정 사이즈 (남는 글자 스페이스로 채움) | s (고정값) | 255 |
VARCHAR ( s ) | 가변 사이즈 | 실제 글자 수[최대 s] + 1 [글자수 정보] | 65,535 |
- 검색시 CHAR가 더 빠름
- VARCHAR 컬럼 길이값이 4글자보다 적을 경우 CHAR로 자동 변환
️🔗 텍스트
자료형 | 최대 바이트 크기 |
---|---|
TINYTEXT | 255 |
TEXT | 65,535 |
MEDIUMTEXT | 16,777,215 |
LONGTEXT | 4,294,967,295 |
3. 시간 자료형
️🔗 참고페이지
자료형 | 설명 | 비고 |
---|---|---|
DATE | YYYY-MM-DD | |
TIME | HHH:MI:SS | HHH: -838 ~ 838까지의 시간 |
DATETIME | YYYY-MM-DD HH:MI:SS | 입력된 시간을 그 값 자체로 저장 |
TIMESTAMP | YYYY-MM-DD HH:MI:SS | MySQL이 설치된 컴퓨터의 시간대를 기준으로 저장 |
- 시간 데이터를 가감없이 기록할 때 DATETIME
- 시간 자동기록, 국제적인 서비스를 할 경우 TIMESTAMP 사용
앞으로의 예제들에서 사용할 테이블
CREATE TABLE sections (
section_id INT AUTO_INCREMENT PRIMARY KEY,
section_name CHAR(3) NOT NULL,
floor TINYINT NOT NULL
);
INSERT INTO sections (section_name, floor)
VALUES ('한식', 2),
('분식', 2),
('중식', 3),
('일식', 3),
('양식', 3),
('카페', 1),
('디저트', 1);
CREATE TABLE businesses (
business_id INT AUTO_INCREMENT PRIMARY KEY,
fk_section_id INT NOT NULL,
business_name VARCHAR(10) NOT NULL,
status CHAR(3) DEFAULT 'OPN' NOT NULL,
can_takeout TINYINT DEFAULT 1 NOT NULL
);
INSERT INTO businesses (fk_section_id, business_name, status, can_takeout)
VALUES (3, '화룡각', 'OPN', 1),
(2, '철구분식', 'OPN', 1),
(5, '얄코렐라', 'RMD', 1),
(2, '바른떡볶이', 'OPN', 1),
(1, '북극냉면', 'OPN', 0),
(1, '보쌈마니아', 'OPN', 1),
(5, '에그사라다', 'VCT', 1),
(6, '달다방', 'OPN', 1),
(7, '마카오마카롱', 'OPN', 1),
(2, '김밥마라', 'OPN', 1),
(7, '소소스윗', 'OPN', 1),
(4, '사사서셔소쇼스시', 'VCT', 1),
(3, '린민짬뽕', 'CLS', 1),
(7, '파시조아', 'OPN', 1),
(1, '할매장국', 'CLS', 0),
(5, '노선이탈리아', 'OPN', 1),
(6, '커피앤코드', 'OPN', 1),
(2, '신림동백순대', 'VCT', 1);
CREATE TABLE menus (
menu_id INT AUTO_INCREMENT PRIMARY KEY,
fk_business_id INT NOT NULL,
menu_name VARCHAR(20) NOT NULL,
kilocalories DECIMAL(7,2) NOT NULL,
price INT NOT NULL,
likes INT DEFAULT 0 NOT NULL
);
INSERT INTO menus (fk_business_id, menu_name, kilocalories, price, likes)
VALUES (5, '물냉면', 480.23, 8000, 3),
(8, '아메리카노', 16.44, 4500, 6),
(17, '고르곤졸라피자', 1046.27, 12000, 12),
(6, '보쌈', 1288.24, 14000, 2),
(15, '장국', 387.36, 8500, -1),
(17, '까르보나라', 619.11, 9000, 10),
(9, '바닐라마카롱', 160.62, 1500, 4),
(16, '백순대', 681.95, 11000, 24),
(6, '마늘보쌈', 1320.49, 16000, 7),
(16, '양념순대볶음', 729.17, 12000, 0),
(14, '단팥빵', 225.88, 1500, 13),
(1, '간짜장', 682.48, 7000, 3),
(9, '뚱카롱', 247.62, 2000, 8),
(5, '비빔냉면', 563.45, 8000, 4),
(10, '참치김밥', 532.39, 3000, 0),
(2, '치즈떡볶이', 638.42, 5000, 15),
(11, '플레인와플', 299.31, 6500, 2),
(2, '찹쌀순대', 312.76, 3000, -4),
(15, '육개장', 423.18, 8500, 2),
(4, '국물떡볶이', 483.29, 4500, 1),
(10, '돈가스김밥', 562.72, 4000, 0),
(1, '삼선짬뽕', 787.58, 8000, 32),
(11, '수플레팬케익', 452.37, 9500, 5),
(4, '라볶이', 423.16, 5500, 0),
(8, '모카프라푸치노', 216.39, 6000, 8),
(14, '옛날팥빙수', 382.35, 8000, 2);
CREATE TABLE ratings (
rating_id INT AUTO_INCREMENT PRIMARY KEY,
fk_business_id INT NOT NULL,
stars TINYINT NOT NULL,
comment VARCHAR(200) null,
created timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL
);
INSERT INTO ratings (fk_business_id, stars, comment, created)
VALUES (2, 4, '치떡이 진리. 순대는 별로', '2021-07-01 12:30:04'),
(16, 3, '그냥저냥 먹을만해요', '2021-07-01 17:16:07'),
(14, 5, '인생팥빵. 말이 필요없음', '2021-07-03 11:28:12'),
(5, 3, '육수는 괜찮은데 면은 그냥 시판면 쓴 것 같네요.', '2021-07-04 19:03:50'),
(11, 4, '나오는데 넘 오래걸림. 맛은 있어요', '2021-07-04 13:37:42'),
(9, 2, '빵집에서 파는 마카롱이랑 비슷하거나 못합니다.', '2021-07-06 15:19:23'),
(16, 5, '신림에서 먹던 맛 완벽재현', '2021-07-06 20:01:39');