1. 程式人生 > >mysql的表的操作 數據類型

mysql的表的操作 數據類型

數值範圍 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的表的操作 數據類型