一、存储引擎:就是用于针对不同的数据格式而采用的不同的处理机制。

二、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、切换严格模式/宽松模式:

    ①切换为严格模式:改my.ini文件里[mysqld]下的sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION。

    ②切换为宽松模式:改my.ini文件里[mysqld]下的sql_mode = 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位,应该就可以满足绝大部分数据的需求,括号若不声明填充长度,会默认按照限制值位数执行。

六、基本数据类型之浮点型

  1、用途:身高,体重,薪资等

  2、分类:

    ①float(255,30):总共255位,小数部分占30位,精度是小数点后7位。

    ②double(255,30):总共255位,小数部分占30位,精度是小数点后15位。

    ③decimal(65,30):总共65位,小数部分占30位,精度是小数点后30位。

  3、使用场景:要结合实际需求灵活选择。

七、基本数据类型之字符类型

  1、分类:

    ①char:定长,不够声明的宽度以空格补齐。缺点:浪费空间。优点:直接按照固定长度存取,效率比较高。

    ②varchar:变长,存成实际长度,但不能超过声明的宽度。缺点:存取需要制作报头和读取报头,较为麻烦。优点:节省空间。

    ③小结:数据量不多的情况下用char比较高效,但是数据量比较大的时候用varchar节省的空间也是比较可观的。所以还是要结合实际灵活选择。

  2、自动剔除:虽然存储数据有自动补齐的空格,但是MySQL在显示数据时,会自动剔除空格,可以改my.ini文件里[mysqld]下的sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH。如此配置可以不自动剔除空格。

  2、统计字段长度:select char_length(name) from t1。

八、基本数据类型之时间类型

  1、data:年月日,如,2020-05-04。

  2、datatime:年月日 时分秒,如,2020-05-04 12:34:56。

  3、time:时分秒,如,12:34:56。

  4、year:年,如2020。

九、基本数据类型之枚举与集合

  1、enum:枚举,多选一,create table t1(hobby enum('a','b','c'),存入的数据只能在定义好的('a','b','c')选择其中的一个,多选或不在其中会报错。

  2、set:集合,多选多,create table t1(hobby set('a','b','c'),存入的数据只能在定义好的('a','b','c')选择其中的一个或多个,不在其中会报错。 

 

 

posted on 2020-05-02 02:01  焚音留香  阅读(129)  评论(0编辑  收藏  举报