前言:MySQL中的數(shù)據(jù)類型
數(shù)值型:
整型
小數(shù):
定點(diǎn)數(shù)
浮點(diǎn)數(shù)
字符型:
較短的文本:char、varchar
較長(zhǎng)的文本:text、blob(較長(zhǎng)的二進(jìn)制數(shù)據(jù))
日期型:
一、整型
圖片.png
特點(diǎn):
① 如果不設(shè)置無符號(hào)還是有符號(hào),默認(rèn)是有符號(hào)蜻底,如果想設(shè)置無符號(hào),需要添加unsigned關(guān)鍵字
② 如果插入的數(shù)值超出了整型的范圍,會(huì)報(bào)out of range異常聘鳞,并且插入臨界值
③ 如果不設(shè)置長(zhǎng)度薄辅,會(huì)有默認(rèn)的長(zhǎng)度
長(zhǎng)度代表了顯示的最大寬度,如果不夠會(huì)用0在左邊填充抠璃,但必須搭配zerofill使用站楚!
案例:
#1.如何設(shè)置無符號(hào)和有符號(hào)
DROP TABLE IF EXISTS tab_int;
CREATE TABLE tab_int(
t1 INT(7) ZEROFILL,
t2 INT(7) ZEROFILL
);
DESC tab_int;
INSERT INTO tab_int VALUES(-123456);
INSERT INTO tab_int VALUES(-123456,-123456);
INSERT INTO tab_int VALUES(2147483648,4294967296);
INSERT INTO tab_int VALUES(123,123);
SELECT * FROM tab_int;
二、小數(shù)
圖片.png
特點(diǎn):
①
M:整數(shù)部位+小數(shù)部位
D:小數(shù)部位
如果超過范圍搏嗡,則插入臨界值
②
M和D都可以省略
如果是decimal窿春,則M默認(rèn)為10,D默認(rèn)為0
如果是float和double采盒,則會(huì)根據(jù)插入的數(shù)值的精度來決定精度
③定點(diǎn)型的精確度較高旧乞,如果要求插入數(shù)值的精度較高如貨幣運(yùn)算等則考慮使用
案例:
#測(cè)試M和D
DROP TABLE tab_float;
CREATE TABLE tab_float(
f1 FLOAT,
f2 DOUBLE,
f3 DECIMAL
);
SELECT * FROM tab_float;
DESC tab_float;
INSERT INTO tab_float VALUES(123.4523,123.4523,123.4523);
INSERT INTO tab_float VALUES(123.456,123.456,123.456);
INSERT INTO tab_float VALUES(123.4,123.4,123.4);
INSERT INTO tab_float VALUES(1523.4,1523.4,1523.4);
三、字符型
較短的文本:
char
varchar
其他:
binary和varbinary用于保存較短的二進(jìn)制
enum用于保存枚舉
set用于保存集合
較長(zhǎng)的文本:
text
blob(較大的二進(jìn)制)
特點(diǎn):見下圖
特點(diǎn)
特點(diǎn)
Enum類型
Set類型
案例:
CREATE TABLE tab_char(
c1 ENUM('a','b','c')
);
INSERT INTO tab_char VALUES('a');
INSERT INTO tab_char VALUES('b');
INSERT INTO tab_char VALUES('c');
INSERT INTO tab_char VALUES('m');
INSERT INTO tab_char VALUES('A');
SELECT * FROM tab_set;
CREATE TABLE tab_set(
s1 SET('a','b','c','d')
);
INSERT INTO tab_set VALUES('a');
INSERT INTO tab_set VALUES('A,B');
INSERT INTO tab_set VALUES('a,c,d');
四磅氨、日期
分類:
date只保存日期
time 只保存時(shí)間
year只保存年
datetime保存日期+時(shí)間
timestamp保存日期+時(shí)間
圖片.png
圖片.png
CREATE TABLE tab_date(
t1 DATETIME,
t2 TIMESTAMP
);
INSERT INTO tab_date VALUES(NOW(),NOW());
SELECT * FROM tab_date;
SHOW VARIABLES LIKE 'time_zone';
SET time_zone='+9:00';