• MySQL数据类型笔记


    整型

    • TINYINT
    • SMALLINT
    • MEDIUMINT
    • INT/INTEGER
    • BIGINT

    类型(宽度):指的是查询的显示宽度,而非存储宽度,存储宽度随类型而定,不写宽度的时候,默认是类型的最大值显示的宽度值

    时间类型

    案例

    create table student (
    	id int,
    	name char(6),
    	born_year year,
    	birth_date date,
    	class_time time,
    	reg_time datetime
    );
    
    # 会默认以其对应的格式内容插入
    insert into student values(1, 'egon',  now(), now(), now(), now());
    
    

    datetime和timestamp的区别

    1. datatime的日期范围是1001 - 9999年,timestamp的时间爱你范围是1970 - 2038年
    2. datetime占据8个字节,timestamp占据4个字节
    3. datetime存储时间与时区无关,timestamp存储时间与时区有关

    字符类型

    • char:定长
    • varchar:变长

    案例

    # 宽度指的是字符的个数
    create table t1(name char(5));
    
    create table t2 (name varchar(5));
    
    insert into t1 values('李杰'); # '李杰    ' 补全到3个空格到5个宽度
    
    insert into t2 values('李杰'); # '李杰' 有多少存多少
    
    # 查看存储的长度
    select char_length(name) from t1; # 2 mysql char取的时候会自动去除空格
    
    select char_length(name) from t2; # 存的是2个,取的也是2个
    

    修改mysql的模式,来查询char的存储长度

    set sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
    

    mysql查询的时候,char补全空格的,查询的会自动去除空格进行查询

    select name from t1 where name = '李杰'; # 有空格还是无空格的都能查
    
    # 末尾去空格查询只适用等号,不适用like
    select name from t1 where name like '李杰'; 
    

    末尾去空格查询只适用等号,不适用like

    varchar 还会用一个字节存储数据的长度

    length: 查看字节数
    char_length: 查看字符数
    
    1. char填充空格来满足固定长度,但是在查询时会很不要脸的删除尾部的空格(装作好像自己没有浪费过空间一样),然后更改 sql_mode 让其显出原形。
      1. 存取数据很快
      2. 浪费空间
    2. varchar
      1. 更加节省空间,存数据更精准
      2. 存取数据比较慢,得先获取头

    大部分场景使用char,存储空间不是一种限制了。建表时尽量的把定长的数据往前放,变长的数据往后放。

    枚举类型和集合类型

    字段的值只能在给定的范围中选择,如:单选框,多选框

    enum 单选,只能在给定的范围内选一个值,如:性别

    set 多选,在给定的范围内可以选择一个或多个的值 如:爱好

    案例

    create table consumer (
    	id int,
    	name char(16),
    	sex enum("male", "female", "other"),
    	level enum('vip1', 'vip2', 'vip3'),
    	hobbies set('play', 'music', 'read', 'run')
    );
    
    insert into consumer values (1, 'egon', 'male', 'vip1', 'music,read')
    

    set插入数值是,引号内多个值以逗号隔开

    如果传入不在范围之内的,插入之后查询结果为空

    额外补充

    加入命令行的模式下,输入的sql语句打错了或者最后一句输入了一个逗号而不是分号;

    可以输入 c 终止运行

  • 相关阅读:
    dede首页调用分类信息
    install sphinx
    rails新环境
    互联网创业三件事:钱、人和项目
    Remove Duplicate Elements from an Array using jQuery
    rails新环境
    rails新环境
    牛人
    电动车电池
    rails新环境
  • 原文地址:https://www.cnblogs.com/wxvirus/p/14772875.html
Copyright © 2020-2023  润新知