数据库之MySQL其二

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位,应该就可以满足绝大部分数据的需求,括号若不声明填充长度,会默认按照限制值位数执行。

六、

  

 

相关推荐