数据存储引擎
涉及到数据存储的代码,我们称之为数据引擎
mysql中支持多种数据引擎
查看mysql中所有支持的数据引擎的语法是
show engines;
在mysql中默认的搜索引擎为InnoDB
创建表的完整语句
create table 表名(字段名 数据类型[(长度) 约束条件])
其中[]中的可以不填写,不填写时表示使用有默认值.
提示:其中的长度表示的是显示的长度,如果超过该长度,就会丢弃超过的部分
数据类型
整型
数据类型 tinyint smallint mediumint int bigint
字节数 1 2 3 4 8
1 默认情况下整型有符号,需一个二进制来存符号
2 给整型加上约束条件 unsigned 来表示无符号
3 如果数据超过范围,超出部分就会丢弃
以上特征的出现是因为mysql处于非严格模式
查看当前的模式 show variables like "sql_mode";
修改为默认模式 set global sql_mode = "STRICT_TRANS_TABLES";
长度限制对于整型的意义:
1 长度限制的是显示的宽度
2 如果你的数据超过了显示的宽度,就会舍弃掉超出的部分
3 若不足mysql会自动的用空格补全也可以用0补全语法为:
create table 表名(id int(5) zerofill);
浮点型
数据类型 float double decimal
字节数 4 8 手动指定
相同点:小数部分最大长度都是30,float和double整体最大长度255
不同点:decimal的整体最大长度是65,float和double都是不准确的,而decimal是准确的
给浮点型设置宽度:
例如:
float(m,n)
m表示的是整体的长度
n表示的是小数部分的长度
字符型
char 定长字符
varchar 变长字符
char 无论你存储的数据有多长,占用的容量都一样
varchar 存储的数据有多长就占用多长
由于是可变的,存入硬盘中,无法知道数据的开头和结尾,所以会在数据的头加一位置用于存储数据的长度信息
能支持的最大长度是65535,用于数据长度信息的数据为最大占2个字节
char和varchar的优缺点:
char:
存取效率高
浪费空间
varchar:
存取效率低
节省空间
模糊查询:
select * from 表名 where 字段like "张%"
%任意个数的任意字符
_1个任意字符
大文本类型
TEXT系列 TINYTEXT TEXT MEDIUMTEXT LONGTEXT 文本是带有编码
BLOB 系列 TINYBLOB BLOB MEDIUMBLOB LONGBLOB 也是字符数据 但是不带编码
二进制类型: 用于存储多媒体数据 比如视频 但是我们一般不会将多媒体数据存到数据 而是存储文件路径地址
BINARY系列 BINARY VARBINARY 存储二进制数据
时间:
time 时分秒 HH:MM:SS
year 年份
date 年月日 Y-M-D 是字符串形式
datetime 日期加时间 年份最大是9999
timestamp 时间戳 年份最大是2037 当插入为null时,会自动插入当前的时间,当更新数据时,会自动的更新当前的时间
datetime和timestamp都可以用now()来获取当前的时间
枚举
用于描述一个已知范围的数据 例如性别等
enum("man","woman","other")
1 枚举中的值只能是字符串
2 添加的数据只能是已经出现在枚举中的值
3 你也可以使用枚举值的序号来插入值
集合
用于描述一堆数据 比如你的兴趣爱好
set("watch movie","listen music","play")