mysql的表的操作 數據類型
阿新 • • 發佈:2018-10-16
數值範圍 mmd line ant nbsp white 1.7 decimal ear
一 數據類型
1 數字:
整型:tinyint int bigint
小數:float:在位數較短的情況下不精準
double:在位數比較長的情況下不精準
1 數字 整型:tinyint int big 小數:float:在位數比較短的情況下不精準 double:在位數比較長的情況下不精準 decimal:如果是小數 推薦使用decimal 精準 內部原理是使用字符串去存儲 2 字符串 char(10) :簡單粗暴 浪費空間 存取速度快 varchar:精準 節省空間 存取速度慢 3 時間類型:最常用: datetime 4 枚舉類型和集合類型: enum 和 set
2 數值類型
作用:存儲年齡 等級 id 各種號碼等
tinyint 小整數,數據類型用於存儲一些範圍的整數的數據範圍; 有符號:-128~127; 無符號:0~255 int 整數,數據類型用於存儲一些範圍的整數數值範圍: 有符號:-1214483648~2147483647 有符號:0~ 4294967295 bigint 大整數:數據類型用於存儲一些範圍的數值: 有符號:-9223372036854775808 ~ 9223372036854775807 無符號:0 ~ 18446744073709551615
驗證1
============有符號tinyint============== # 創建數據庫db4 create database db4 charset utf8; # 切換到當前db4數據庫 mysql> use db4; # 創建t1 規定x字段為tinyint數據類型(默認是有符號的) mysql> create table t1(x tinyint); # 驗證,插入-1這個數 mysql> insert into t1 values(-1); # 查詢 表記錄,查詢成功(證明默認是有符號類型) mysql> select * from t1; +------+ | x | +------+ | -1 | +------+ #執行如下操作,會發現報錯。因為有符號範圍在(-128,127) mysql> insert into t1 values(-129),(128); ERROR 1264 (22003): Out of range value for column ‘x‘ at row 1 ============無符號tinyint============== # 創建表時定義記錄的字符為無符號類型(0,255) ,使用unsigned mysql> create table t2(x tinyint unsigned); # 報錯,超出範圍 mysql> insert into t2 values(-129); ERROR 1264 (22003): Out of range value for column ‘x‘ at row 1 # 插入成功 mysql> insert into t2 values(255); Query OK, 1 row affected (0.00 sec)
驗證2
復制代碼 mysql> create table t3(id int(1) unsigned); #插入255555記錄也是可以的 mysql> insert into t3 values(255555); mysql> select * from t3; +--------+ | id | +--------+ | 255555 | +--------+ ps:以上操作還不能夠驗證,再來一張表驗證用zerofill 用0填充 # zerofill 用0填充 mysql> create table t4(id int(5) unsigned zerofill); mysql> insert into t4 value(1); Query OK, 1 row affected (0.00 sec) #插入的記錄是1,但是顯示的寬度是00001 mysql> select * from t4; +-------+ | id | +-------+ | 00001 | +-------+ 1 row in set (0.00 sec)
註意 :為該類型指定寬度時,僅僅只是指定查詢結果的顯示寬度 與存儲範圍無關,有符號和無符號的最大的區別是顯示的寬度均為10.而針對有符號的最小值則需要11位才能顯示完全,所以int類型默認的顯示寬度是11 是合理的
3 浮點型
浮點類型:float bouble
作用:存儲薪資、身高、體重、體質參數等
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] #參數解釋:單精度浮點數(非準確小數值),M是全長,D是小數點後個數。M最大值為255,D最大值為30 有符號: -3.402823466E+38 to -1.175494351E-38, 1.175494351E-38 to 3.402823466E+38 無符號: 1.175494351E-38 to 3.402823466E+38 精確度:隨著小數的增多,精確度變得不準確 double DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] #參數解釋: 雙精度浮點數(非準確小數值),M是全長,D是小數點後個數。M最大值為255,D最大值為30 有符號: -1.7976931348623157E+308 to -2.2250738585072014E-308 2.2250738585072014E-308 to 1.7976931348623157E+308 無符號: 2.2250738585072014E-308 to 1.7976931348623157E+308 精確度:隨著小數的增多,精度比float要高,但也會變得不準確 decimal[(m[,d])] [unsigned] [zerofill] #參數解釋:準確的小數值,M是整數部分總個數(負號不算) ,D是小數點後的個數,M最大值為65 D最大值是30 精確度: 隨著小數的增多 精確度始終準確、對於精確數值計算時需要使用該類型 decaimal 能夠存儲精確度的原因在於內部按照字符串的形式存儲
4 日期類型
作用:存儲用戶註冊的時間,文章發布的時間,員工入職的時間,出生時間,過期時間
語法: YEAR YYYY(1901/2155) DATE YYYY-MM-DD(1000-01-01/9999-12-31) TIME HH:MM:SS(‘-838:59:59‘/‘838:59:59‘) DATETIME YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y) TIMESTAMP YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某時)
mysql的表的操作 數據類型