天天看點

資料類型整型浮點型日期類型字元類型枚舉與集合類型

預設是有符号的,預設符号為空格

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: 定長

name char(5),

varchar: 變長

寬度指的都是最大存儲的字元個數,超過了都無法正常存儲

不同的地方是 char(5) 如果沒有夠5個字元 就會被mysql預設添加不夠的空格,最多也是隻能顯示5個字元

而varchar(5) 寫了幾個就是幾個字元,最多顯示5個字元

可以設定成存的時候在存,取的時候就是存的時候的樣子

set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH";

需要注意的

mysql在查詢時針對where 字段="值 "會忽略掉右邊的空格,既where 字段="值", 如果是like模糊比對就不會忽略右面的空格了

insert info emp values("lxx","male","read,play");

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'));