整型
- 默認是有符號的,默認符號爲空格
create table 表名(x tinyint); - 設置爲沒有符號的
create table 表名(x tinyint unsigned); - 強調
整型類型後面的寬度限制的不是存儲寬度,限制的是顯示寬度浮點型
- float: 推薦使用float,用float足夠用了
create table 表名(x float(255,30)); - double: 比float更加精確小數點後面的數字
create table 表名(x double(255,30)); - decimal: 用於機器的精確度,只有在某種特殊情況纔會使用,不過我認爲我這輩子也用不上這個
create table 表名(x decimal(65,30));日期類型
- year 1999
- data 1999-11-11
- time 08:00:00
- datetime 1999-11-11 08:00:00
- timestamp 1999-11-11 08:00:00
create table student(
id int primary key auto_increment,
name varchar(16),
born_year year,
birth data,
class_time time,
reg_time datetime);
insert into studnet(name,born_year,birth,class_time,reg_time) values('lxx',now(),now(),now(),now()); - timestamp與datetime的區別
timestamp與datetime的區別在於timestamp會自動生成一個時間,而datetime要手動輸入
字符類型
- char: 定長
create table student(
name char(5), - varchar: 變長
create table student(
name char(5),
寬度指的都是最大存儲的字符個數,超過了都無法正常存儲
不同的地方是 char(5) 如果沒有夠5個字符 就會被mysql默認添加不夠的空格,最多也是隻能顯示5個字符
而varchar(5) 寫了幾個就是幾個字符,最多顯示5個字符 - 可以設置成存的時候在存,取的時候就是存的時候的樣子
set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH"; - 需要注意的
mysql在查詢時針對where 字段="值 "會忽略掉右邊的空格,既where 字段="值", 如果是like模糊匹配就不會忽略右面的空格了枚舉與集合類型
枚舉 enum:多選一
insert info emp values("lxx","male","read,play");
集合 set: 多選多
insert info emp values('wxx',"male","read,play");
create table emp(
name varchar(15),
sex enum('male','female','unkown'),
hobbies set('read','music','yinshi','play'));