數據類型

整型

  • 默認是有符號的,默認符號爲空格
    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'));

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