코드 그라데이션

[얄코] MySQL 3-3. 자료형 본문

Database/SQL

[얄코] MySQL 3-3. 자료형

완벽한 장면 2023. 6. 11. 11:03

https://www.youtube.com/watch?v=NmraFRrusD8 

 

1. 숫자 자료형

정수

https://dev.mysql.com/doc/refman/8.0/en/integer-types.html

 

MySQL :: MySQL 8.0 Reference Manual :: 11.1.2 Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT,

11.1.2 Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT MySQL supports the SQL standard integer types INTEGER (or INT) and SMALLINT. As an extension to the standard, MySQL also supports the integer types TINYINT, MEDIUMINT,

dev.mysql.com

자료형 바이트 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

 

 

고정 소수점 수

https://dev.mysql.com/doc/refman/8.0/en/fixed-point-types.html

 

MySQL :: MySQL 8.0 Reference Manual :: 11.1.3 Fixed-Point Types (Exact Value) - DECIMAL, NUMERIC

11.1.3 Fixed-Point Types (Exact Value) - DECIMAL, NUMERIC The DECIMAL and NUMERIC types store exact numeric data values. These types are used when it is important to preserve exact precision, for example with monetary data. In MySQL, NUMERIC is implemente

dev.mysql.com

  • 좁은 범위의 수 표현 가능, 정확한 값
자료형 설명 범위
DECIMAL(s, d) 실수 부분 총 자릿수( s )
& 소수 부분 자릿수 ( 
d )
s 최대 65

 

 

부동 소수점 수

https://dev.mysql.com/doc/refman/8.0/en/floating-point-types.html

 

MySQL :: MySQL 8.0 Reference Manual :: 11.1.4 Floating-Point Types (Approximate Value) - FLOAT, DOUBLE

11.1.4 Floating-Point Types (Approximate Value) - FLOAT, DOUBLE The FLOAT and DOUBLE types represent approximate numeric data values. MySQL uses four bytes for single-precision values and eight bytes for double-precision values. For FLOAT, the SQL standar

dev.mysql.com

  • 넓은 범위의 수 표현 가능, 정확하지 않은 값 (일반적으로 충분히 정확)
자료형 표현 범위
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. 문자 자료형

문자열

https://dev.mysql.com/doc/refman/8.0/en/char.html

 

MySQL :: MySQL 8.0 Reference Manual :: 11.3.2 The CHAR and VARCHAR Types

11.3.2 The CHAR and VARCHAR Types The CHAR and VARCHAR types are similar, but differ in the way they are stored and retrieved. They also differ in maximum length and in whether trailing spaces are retained. The CHAR and VARCHAR types are declared with a l

dev.mysql.com

  • 검색 시 CHAR 가 더 빠름
  • VARCHAR 컬럼 길이 값이 4글자보다 적을 경우 CHAR로 자동 변환.
자료형 설명 차지하는 바이트 최대 바이트
CHAR( s )  고정 사이즈
(남는 글자 스페이스로 채움)
s (고정값) 255
VARCHAR ( s )  가변 사이즈 실제 글자 수[최대 s] + 1 [글자수 정보] 65,535

 

텍스트

자료형 최대 바이트 크기
TINYTEXT 255
TEXT 65,535
MEDIUMTEXT 16,777,215
LONGTEXT 4,294,967,295

 


3. 시간 자료형

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html

 

MySQL :: MySQL 8.0 Reference Manual :: 11.2 Date and Time Data Types

11.2 Date and Time Data Types The date and time data types for representing temporal values are DATE, TIME, DATETIME, TIMESTAMP, and YEAR. Each temporal type has a range of valid values, as well as a “zero” value that may be used when you specify an i

dev.mysql.com

  • 시간 데이터를 가감없이 기록할 때 DATETIME
  • 시간 자동 기록, 국제적인 서비스를 할 경우 TIMESTAMP 사용
자료형 설명  비교
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이 설치된 컴퓨터의 시간대를 기준으로 저장

 

 

앞으로 예제들에서 사용할 테이블

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');

 

728x90
Comments