mysql的基本數據類型

mysql數據庫使用數據類型有


數值類型


整數類型
tinyint 佔用1個字節的微小整數 默認是有符號的整數 取值範圍是-128-127 如果需要設置成無符號微小整數需要在類型後面加上unsigned關鍵字 無符號的取值範圍是 0-255
smallint 佔用2個字節的小整數 默認是有符號的整數 取值範圍是-32768-32767 如果需要設置成無符號小整數需要在類型後面加上unsigned關鍵字 無符號的取值範圍是 0-65535
mediumint 佔用3個字節的中整數 默認是有符號的整數 取值範圍是-2的23次方到2的23次方-1 如果需要設置成無符號中整數需要在類型後面加上unsigned關鍵字 無符號的取值範圍是 0-2的24次方-1
int 佔用4個字節的大整數 默認是有符號的整數 取值範圍是-2的31次方到2的31次方-1 如果需要設置成無符號的大整數需要在類型後面加上unsigned 無符號的取值範圍是 0-2的32次方-1
bigint 佔用8個字節的極大整數 默認是有符號的整數 取值範圍是-2的63次方到2的63次方-1 如果需要設置成無符號的大整數需要在類型後面加上unsigned 無符號的取值範圍是 0-2的64次方-1
整數類型的可以指定顯示寬度,不影響類型存儲範圍,int(5)表示顯示寬度爲5當不足5位時用空格在左邊補充 ,如果需要用0補充,需要加zerofill關鍵字

mysql> create table _123.t2(age tinyint(3) zerofill) ;
mysql> insert into _123.t2 values(12);
mysql> select * from _123.t2;
+------+
| age  |
+------+
|  012 |
+------+
1 row in set (0.00 sec)

浮點數類型
float 佔用4個字節的單精度浮點數 定義方式爲float(m,n) m爲總位數長度,n位小數位數長度 float是非標準類型,在數據庫中保存的是近似值
double 佔用8個字節的雙精度浮點數 double(m,n)m爲總位數長度,n位小數位數長度 double是非標準類型,在數據庫中保存的是近似值
decimal 定點數
**浮點數如果不寫經度和標度,會按照實際精度值保存,如果有精度和標度,則會自動將四捨五入後的結果插入,系統不會報錯;定點數如果不寫精度和標度,則按照默認值decimal(10,0) 來操作,如果數據超過了精度和標度值,系統會報錯。


字符類型**


char 定長的字符類型最長爲255個字符,字符數不夠定義的長度時會在右邊用空格補充佔位
varchar 不定長的字符類型最長65535個字符 ,根據字符數的長度來開闢存儲空間,由於在存儲之前需要計算存儲空間所以存儲速度會比char慢,在實際應用中應該避免大量使用varchar類型
text/blob 在字符數大於65535時使用,可以存儲視頻、音頻、圖片等文件但是不建議使用數據庫存儲這些數據,一般使用存儲文件的路徑鏈接到物理存儲空間


時間日期類型


year 年 默認賦值格式 YYYY 四位數的年份 1個字節
date 日期 默認賦值格式是 YYYYMMDD 四位年份兩位月份兩位日期 4個字節
time 時間 默認賦值格式是 hhmmss 兩位小時兩位分鐘兩位秒 3個字節
datetime 日期時間 默認賦值格式 YYYMMDD hhmmss 8個字節 取值範圍是 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59.99 如果不給該類型的字段賦值,則用空代替
timestamp 日期時間 默認賦值格式 YYYMMDD hhmmss 4個字節 取值範圍是 1970-01-01 00:00:00 ~ 2038-1-19 03:14:07.99 如果不給該類型的字段賦值,則用當前系統時間賦值
insert into _123.t4 values("tt",1990,083000,19900921,20180228193000);
如果是使用帶格式的時間賦值需要以字符串的方式插入 (用引號引起來)

insert into _123.t4 values("tt",1990,"08:30:00","1990-09-21","2018-02-28 19:30:00");`
Query OK, 1 row affected (0.02 sec
```)
# 幾個關於時間的函數 
獲取當前系統日期時間函數now()  sysdate()
now()在調用開始時就得到了時間  sysdate()得到的是執行時的時間

獲取日期函數 date()   需要傳入一個日期時間參數  date(20180909121212) 得到的是2018-09-09   
如需要獲取當前的日期date(now()) 或 curdate()
獲取時間函數 time()   需要傳入一個日期時間參數  time(20180909121212) 得到的是12:12:12  
如需要獲取當前系統的時間time(now()) 或 curtime()
獲取年的函數 year()  需要傳入一個日期時間參數 
獲取月的函數 month() 需要傳入一個日期時間參數
獲取日的函數 day() 需要傳入一個日期時間參數 
獲取小時的函數hour() 需要傳入一個日期時間參數
獲取分鐘的函數minute() 需要傳入一個日期時間參數
獲取秒的函數second() 需要傳入一個日期時間參數

-----

# 枚舉類型

-----

枚舉類型的值就是在指定的值列表中選擇
set  多選類型    set(值列表) 
creat table db1.t1(sex enum("boy","girl"))
插入的值的時候sex字段只能是“boy”或者“girl”中的一個
enum 單選類型  enum(值列表)
creat table db1.t2(love set("film","girl","game")) 
插入的值的時候love字段只能是“film”或者“girl”或者"game"中的一個或者多個

mysql>create table _123.t5(name char(32),sex enum("boy","girl"),love set("film","music","girl"));
mysql>insert into _123.t5 values("bob",1,"film,girl");
mysql> select * from _123.t5;
+------+------+-----------+
| name | sex | love |
+------+------+-----------+
| bob | boy | film,girl |
+------+------+-----------+

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章