# 常見數據類型
/*
數值型:
整型
小數:
定點數
浮點數
字符型:
較短的文本:char、varchar
較長的文本:text、blob(較長的二進制數據)
日期型:
*/
# 一、整型
/*
整數類型 字節 範圍
tinyint 1
smallint 2
mediumint 3
int、integer 4
bigint 8
特 點:
① 如果不設置無符號還是有符號,默認是有符號,如果想設置無符號,需要添加unsigned關鍵字
② 如果插入的數值超出了整型的範圍,會報警告,並插入接近的臨界值
③ 如果不設置長度會有默認的長度 int 的長度由int本身決定,
設置的長度在使用zerofill時,如果長度不夠在左邊用0填充,
但使用該關鍵詞後,默認是無符號
*/
# 1.如何設置無符號和有符號
DROP TABLE IF EXISTS tab_int;
CREATE TABLE tab_int(
t1 INT(7),
t2 INT UNSIGNED,
t3 INT(7) ZEROFILL
);
DESC tab_int;
INSERT INTO tab_int VALUES(-123456, -123456);
SELECT * FROM tab_int
# 小數
/*
浮點數類型 字節 範圍
float(M,D) 4
double(M,D) 8
定點數類型 字節 範圍
DEC(M,D)/DECIMAL(M,D) M+2
特點:
①M:代表整數部位位數+小數範圍位數
D:小數部位位數
如果超過範圍,則插入臨界值
②M和D都可以省略
如果是decimal,則M默認是10,D默認爲0
如果是float和double,則會根據插入的數值的精度來決定精度
③定點型的精度較高,如果要求插入數值的精度較高,如貨幣運算則考慮使用
*/
# 示例 測試M和D
CREATE TABLE tab_float(
f1 FLOAT(5,2),
f2 DOUBLE(5,2),
f3 DECIMAL(5,2)
);
INSERT INTO tab_float VALUE(123.45,123.45,123.45);
INSERT INTO tab_float VALUE(123.456,123.456,123.456);
INSERT INTO tab_float VALUE(123.4,123.4,123.4);
INSERT INTO tab_float VALUE(1523.4,1523.4,1523.4);
SELECT * FROM tab_float;
# 原則:所選擇的類型越簡單越好,能保存數值的類型越小越好
# 三、字符型
/*
較短字符串類型 最多字符數 特點 空間好費 效率
char(M) M(可省略默認爲1) 固定長度的字符 比較耗費 高
varchar(M) M(不可省略) 可變長度的字符 比較節省 低
其他:
binary和varbinary用於保存較短的二進制
enum用於保存枚舉
set用於保存集合
*/
CREATE TABLE tab_enum(
c1 ENUM('a','b','c')
)
INSERT INTO tab_enum VALUES('a');
INSERT INTO tab_enum VALUES('b');
INSERT INTO tab_enum VALUES('c');
INSERT INTO tab_enum VALUES('m');
INSERT INTO tab_enum VALUES('A');
CREATE TABLE tab_set(
s1 SET('a','b','c')
)
INSERT INTO tab_set VALUES('a');
INSERT INTO tab_set VALUES('A,b,C');
INSERT INTO tab_set VALUES('A,a');
# 四、日期類型
/*
日期和時間類型 字節 最小值 最大值
date 4
datetime 8 1000-01-01 00:00:00 999-12-31 23:59:59
timestamp 4 19700101080001 2038年的某一個時刻
time 3
year 1
區別:
①timestamp支持範圍小
②timestamp受時區和版本影響大
*/
# 示例
CREATE TABLE tab_date(
t1 DATETIME
t2 TIMESTAMP
);
INSERT INTO tab_date VALUES(NOW(),NOW())
MySQL常見數據類型
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.