MySQL数据类型笔记

1、简述数值类型,日期和时间类型以及字符串类型所包括的数据类型。

数值类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL。
日期类型:YEAR、DATE、TIME、DATETIME、TIMESTAMP。
字符串类型:CHAR、VARCHAR、BINARY、VARBINARY、BLOG、TEXT、ENUM、SET。

2、char和varchar的区别是什么?

答:
CHAR和VARCHAR类型都是用于存储较短的字符串,两者的主要区别是存储方式不同。
CHAR类型的长度是固定的,长度值会在创建创建表时定义。但字段数据类型为CHAR(4)时,表示插入数据的字符数最大为4,而且不论数据字符个数是否为4,占用的空间总是4个字符所占的空间。
VARCHAR类型的长度是可变的。例如,当字段数据类型为VARCHAR(4)时,表示插入数据的最大字符数最大为4,如果插入的数据只有2个字符,那么它实际占用的空间为字符串的实际长度加1字节。
在实际应用中,选择数据类型时还应该考虑数据表的存储引擎。对于MyISAM存储引擎,使用固定长度的CHAR类型可以将整张表静态化,它的处理速度会比VARCHAR类型快,查询性能优先时应该选择CHAR类型。对于InnoDB存储引擎。存储格式不分固定长度和可变长度,所以使用VARCHAR类型比较节省空间,随着MySQL的不断完善,VARCHAR类型的性能不断提高,此类型的使用率更高。

3、谈一下枚举类型,enum的用法和优点。

答:
ENUM类型用于存储“单选项”形式的数据,例如性别字段,创建时需要定义选项值类型,插入时需要从列表中选择,并且一次只能选择一个。
每一个选项值都有一个索引,选项值列表的索引以1开头,NULL值的索引是NULL。向ENUM插入数字时,系统会认为插入值为选项值列表的索引,将自动转换索引所对应的选项值。因此,官方建议用户不要直接使用数字作为选项值,如果一定要使用数字作为选项值,请将数字包含在引号中,
用法
插入:INSERT INTO table_name(sex) VALUES(‘w’),(‘m’),(null);
建表:col_name ENUM(‘value1’,’value2’,’value3’);
查看索引值:SELECT sex,sex+0 FROM table_name;
优点:限定值的取值范围,比如性别。MySQL在存储ENUM类型时非常紧凑,会根据列表值的数据压缩到一个或者两个字节中。

4、谈一下datetime和timestamp的特点和区别。

  • 特点:用于存储同时具有日期和时间的值,存储格式为 YYYY-MM-DD HH:MM:SS
  • 区别: DATETIME类型存储的数据是什么,显示的就是什么,而TIMESTAMP类型的时间可以根据时区进行转换,在查询时,当前时区不同,显示的时间值也不同。范围不同,TIMESTAMP范围:‘1970-01-01 00:00:01.000000‘到’2038-01-19 03:14:07.999999’;DATETIME范围:’1000-01-01 00:00:00.000000’到’9999-12-31 23:59:59.999999’,原因是DATETIME占用8个字节,TIMESTAMP占用4个字节。

5、谈一下json类型的特点和用法。

  • 特点:JSON类型字段的插入值可分为数组对象。JSON数组是一个由逗号分隔并包含在括号”[]”中的值的列表,例如:[“abc”,10,true,false],JSON对象是一组键值,由逗号分隔,包含在括号“{}”中,例如{“k1”:”value”,”k2”:10}。而且JSON数组与JSON对象允许嵌套。JSON值需要写成字符串的形式。

  • 用法:INSERT INTO table_name(address) values(‘{“province”:”河北省”,”city”:”石家庄”}’)

你可能感兴趣的:(MySQL,mysql,数据库,database)