zhaojp0 2020-05-05
一、存储引擎:就是用于针对不同的数据格式而采用的不同的处理机制。
二、MySQL主要的存储引擎
1、innodb:MySQL5.5开始默认的存储引擎,虽然速度比不上Myisam,但是存储的数据更加安全。
2、myisam:MySQL5.5以前默认的存储引擎,虽然速度比Innodb要快,但是存储数据的安全性不如Innodb。
3、memory:内存引擎,数据全部存放于内存中,断电数据丢失。
4、blackhole:黑洞引擎,无论存什么,都立即消失。
5、相关SQL语法:
①show engines---查看所有可用的存储引擎。
②create table t1(id int) engine=‘innodb‘---新建表,并声明使用的存储引擎,不声明默认为‘innodb’。
三、创建表的完整SQL语法:create table t1(字段名1 类型(宽度) 约束条件,字段名2 类型(宽度) 约束条件1 约束条件2)。
1、同一张表的字段名不能重复。
2、字段名和类型是必须的。
3、宽度和约束条件不是必须的。
4、字段编辑组之间以逗号隔开,但是最后一个字段编辑组后面一定不能加逗号。
5、宽度一般情况下是对存储数据长度的限制,不同版本有不同的效果:
①MySQL5.7以前默认没有开启严格模式,超出规定宽度的数据会被截取为规定宽度存入,不会报错。
②MySQL5.7开始默认开启严格模式或其他版本手动开启严格模式,超出规定宽度时会报错。
6、null: 通用类型,不受宽度限制的约束,可以存于任意认可null的字段下,类似于python语法中的None。
7、约束条件之not null:不能存入null,否则报错。
8、小结:宽度一般情况下用来限制数据的长度,而约束条件是在宽度限制的基础上再增加了限制。
四、严格模式
1、查看严格模式之模糊匹配法:show variables like ‘%mode’---%可以匹配任意多个字符,若改为单下划线_则只能匹配任意单个字符。
2、改为严格模式:
①set session sql_mode = ‘strict_trans_tables‘---只在当前窗口时有效。
②set global sql_mode = ‘strict_trans_tables‘---全局有效,修改完毕需要重启服务端。
③取消严格模式:no_engine_substitution。
五、基础数据类型之整型
1、作用:年龄,等级,编号等
2、可存储范围由小到大分类:tinyint < smallint < meduiint < int < bigint 。
3、约束条件之unsigned:无符号,默认情况下是有符号的。
4、限制值:若限制为N,无符号情况下可存储范围为0~N,有符号情况下为-N/2~N/2。超过限制值时,则存为限制值。
5、约束条件之zerofill:以0填充,整型括号里面声明的数字不是表示限制数据的长度,而是表示填充长度,不足填充长度的位数,默认以空格填充,比如声明长度5,存入数据为123,则会以‘ 123’存入,若用了zerofill声明,则会以‘00123’存入,但不能超过限制值。
6、针对整型的数据,一般用int,限制值有11位,应该就可以满足绝大部分数据的需求,括号若不声明填充长度,会默认按照限制值位数执行。
六、