mysql支援的資料型別
整型'''型別
tinyint:1位元組,取值範圍-128~127,預設長度4
smallint:2位元組,取值範圍 -32768 ~ 32767,預設長度6
mediumint:3位元組
int:4位元組 -2147483648~2147483647
bigint:8位元組
'''約束
unsigned:無符號
zerofill:0填充
# 建表
mysql>: create table tb1(x tinyint, y smallint, z int(6));
# 插入資料
mysql>: insert into tb1 values(128, 32768, 32768); # 結果:127,32767,32768
# 結論:整型的長度由所佔位元組(取值範圍)決定,可以自定義長度,但是不影響所佔位元組(取值範圍)
# 所有整型變數的長度一般都省略不寫
結論》: create table tb1(x tinyint, y smallint, z int);
# 整型約束
mysql>: create table tb2(x tinyint unsigned); # 0~255
mysql>: insert into tb2 values(256), (-1); # 255, 0
# 0填充約束
mysql>: create table tb3(x tinyint unsigned zerofill);
mysql>: insert into tb3 values(10); # 010
浮點型# 在安全模式下測試浮點型型別
'''型別
float(m, d):4位元組,3.4e–38~3.4e+38
double(m, d):8位元組,1.7e–308~1.7e+308
decimal(m, d):所在位元組m,d大值基礎上+2,其實就是m值+2就是decimal欄位所佔位元組數
'''寬度:
限制儲存寬度
(m, d) => m為位數,d為小數字,m要大於等於d
float(255, 30):精度最低,最常用
double(255, 30):精度高,佔位多
decimal(65, 30):字串存,全精度
# 建表:
mysql>: create table tb4 (age float(256, 30)); # display width out of range for column 'age' (max = 255)
mysql>: create table tb5 (age float(255, 31)); # too big scale 31 specified for column 'age'. maximum is 30.
mysql>: create table tb5 (age float(65, 30)); # 在合理取值範圍
mysql>: create table t12 (x float(255, 30));
mysql>: create table t13 (x double(255, 30));
mysql>: create table t14 (x decimal(65, 30));
# 1.111111164093017600000000000000
mysql>: insert into t12 values(1.11111111111111111119);
# 1.111111111111111200000000000000
mysql>: insert into t13 values(1.11111111111111111119);
# 1.111111111111111111190000000000
mysql>: insert into t14 values(1.11111111111111111119);
# 重點:長度與小數字分析
# 報錯,總長度m必須大於等於小數字d
mysql>: create table t14 (x decimal(2, 3));
# 能儲存 -0.999 ~ 0.999,超長度的小數字會才有四捨五入,0.9994可以存,就是0.999,0.9995不可以存
mysql>: create table t14 (x decimal(3, 3)); # 整數字 3 - 3,所以最大為0
# 能儲存 -9.999 ~ 9.999,超長度的小數字會才有四捨五入,9.9994可以存,就是9.999,9.9995不可以存
mysql>: create table t14 (x decimal(4, 3)); # 整數字 4 - 3,所以最大為9
# 能儲存 -99.999 ~ 99.999,超長度的小數字會才有四捨五入,99.9994可以存,就是99.999,99.9995不可以存
mysql>: create table t14 (x decimal(5, 3)); # 整數字 5 - 3,所以最大為99
字串:資料庫優化 - char效率要高於varchar
'''型別
char:定長,永遠採用設定的長度儲存資料
varchar:不定長,在設定的長度範圍內,變長的儲存資料
'''寬度
限制儲存寬度
char(4):存 "a" "ab" "abc" "abcd"都採用4個長度,"abcde" 只能儲存前4位(安全模式下報錯)
varchar(4):存 "a" "ab" "abc" "abcd"分別採用1,2,3,4個長度儲存,"abcde" 只能儲存前4位(安全模式下報錯)
char就按定長儲存,如果資料長度變化大,通常更佔空間,但是訪問資料按固定定長操作,效率高
varchar儲存資料時,會先計算要儲存資料的長度,動態變長儲存資料,所以一般較省空間,但是計算是需要耗時的,所以效率低
varchar計算出的資料長度資訊也是需要開闢空間來儲存,儲存在資料頭(資料開始前)中,也需要額外消耗1~2個位元組
所以如果資料都是固定長度,或是小範圍波動,char相比就不會更佔空間,且效率高
# 建表:
mysql>: create table ts1 (s1 char(4), s2 varchar(4));
mysql>: insert into ts1 values('adcde', 'xyzabc'); # 'adcd', 'xyza'
時間'''型別
year:yyyy(1901/2155)
date:yyyy-mm-dd(1000-01-01/9999-12-31)
time:hh:mm:ss
datetime:yyyy-mm-dd hh:mm:ss(1000-01-01 00:00:00/9999-12-31 23:59:59)
timestamp:yyyy-mm-dd hh:mm:ss(1970-01-01 00:00:00/2038-01-19 ??)
# 建表:
mysql>: create table td1 (my_year year, my_date date, my_time time);
mysql>: insert into td1 values(1666, '8888-8-8', '8:8:8'); # 時間需要在取值訪問內
mysql>: create table td2 (my_datetime datetime, my_timestamp timestamp);
mysql>: insert into td2 values('2040-1-1 1:1:1', '2040-1-1 1:1:1'); # 時間需要在取值訪問內
mysql>: insert into td2(my_datetime) values('2040-1-1 1:1:1'); # timestamp不複製會才有系統當前時間
# datetime:8位元組,可以為null
# timestamp:4位元組,有預設值current_timestamp
列舉與集合
# 列舉與集合:為某乙個字段提供選項的 - 列舉只能單選(1個),集合可以多選(0-n個)
# 建表
# enum、set預設值為null
mysql>: create table tc1 (name varchar(20), *** enum('男', '女', '哇塞'), hobbies set('男', '女', '哇塞'));
mysql>: insert into tc1 values('ruakei', '哇塞哇塞', '未知');
# enum、set手動設定預設值 '男' 與 '哇塞'
mysql>: create table tc2 (name varchar(20), *** enum('男', '女', '哇塞') default '男', hobbies set('男', '女', '哇塞') default '哇塞');
mysql>: insert into tc2 values('ruakei', '哇塞哇塞', '未知');
mysql>: insert into tc2(name) values('ruakei');
# 對***、hobbies兩個字段賦值錯誤,系統預設用空字串填充(非安全模式),安全模式拋異常
# 如果對出***、hobbies兩個欄位外的其他字段進行賦值,這兩個欄位會才有預設值
# 注:對set型別的字段進行賦值,用乙個字串,字串內部用,將多個選項隔開,且不能新增空格等其他額外字元
mysql>: insert into tc2 values('ruakei_1', '女', '男,女,哇塞');
GNS中支援的模組
gns中支援的模組 dynamips 支援的模組 c7200 開始 slot 0 c7200 io fe 支援1 個fastethernet 介面 c7200 io 2fe 支援2 個fastethernet 介面 dynamipsgui 2.3 裡面沒有這個選項,想用只有自己添 加了 c7200 ...
GNS中支援的模組
dynamips 支援的模組 c7200 開始 slot 0 c7200 io fe 支援1 個fastethernet 介面 c7200 io 2fe 支援2 個fastethernet 介面 dynamipsgui 2.3 裡面沒有這個選項,想用只有自己添 加了 c7200 io ge e 插這...
MySQL中支援emoji表情的儲存(親測可用)
mysql的utf8編碼的乙個字元最多3個位元組,但是乙個emoji表情為4個位元組,所以utf8不支援儲存emoji表情。但是utf8的超集utf8mb4乙個字元最多能有4位元組,所以能支援emoji表情的儲存。下面介紹了關於如何修改mysql資料庫的編碼格式變為utf8mb4的具體方法。linu...