整數類型
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
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) 來操做,若是數據超過了精度和標度值,系統會報錯。sql
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);
若是是使用帶格式的時間賦值須要以字符串的方式插入 (用引號引發來)ide
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 |
+------+------+-----------+函數