首页 > 代码库 > 2016-11-25-MYSQL-2

2016-11-25-MYSQL-2

 

         字符串类型

                   char :255字    

                            char(字符数)

                            效率高

 

                   varchar    :(GBK<=32767字符  |  UTF8<=21845字符)

                            varchar(字符数)

                            存储较为灵活

 

                   text  :长度长

                            tinytext,text,mediumtext,longtext

                            不需要指定长度,用于文本区域和自由输入区域的存储

 

                   enum        :枚举类型,类似单选。只能插入选项中的选项值。

                            enum(‘值1‘,‘值2‘)

                            存储为按编号(左至右)存储,也就是第一个选项存储在内存中为1,如此类推。

 

                   set    :集合类型,类似多选。只能插入选项中的选项值

                            set(‘值1‘,‘值2‘,‘值3‘,...)

                            插入值时顺序不限,存储与enum一样按位置编号存储。

                            特别注意:存储——

                            e.g.  set("值1","值2","值3","值4","值5","值6")

                                           1      2     4  8     16    32

                            存储的时候是按照该方式的位置编号存储。

 

                   binary | varbinary | blob

                            二进制文本类型,存储使用二进制形式。一般不使用    

 

                  

         列属性              定义列(字段)的属性

                  

                   null  |  not null

                            :定义字段能否为空(缺省为null)

                  

                   default

                            :给字段一个缺省值,当字段没有写入值时使用缺省值填充。一般配合not null使用。

                            此时在写入值时可以直接写入default,不用引号包裹。

 

                   primary key

                            主键,为字段或字段组合(多个字段组合为一个主键)设置为主键,一般设置为能起到标识的字段为主键,一个表格只能有一个主键。

                            在使用时很少使用组合主键,一般会另设一个与表格字段无任何业务逻辑的字段,并把该字段设置为主键。

                            主键字段不能有重复值,不能为空。

                            格式有  :字段  primary key

                                     :primary key(字段名)    定义字段组时只能使用该格式

 

                   unique key

                            唯一键,定义后该字段值不可重复,可以为空值,可以定义多个(同一表格)

                           

                   auto_increment

                            自增长,被定义字段再每次插入行记录时自动写入加1后的值。

                            注意  :使用字段必须为整型,必须存在索引。

                            e.g.  (字段 auto_increment

                                     )auto_increment 初始数值;

                                     默认为从0开始,当需要指定开始数值时,要在表格创建语句后加上auto_increment 初始数值 该句。

                            注意  :开启自增长后依然可以手动写入值,并且每次自增长都会以前边出现的最大值为增长基,也就是说原本从0开始,增到1之后手动插入一行值为200的数据后,下次插入行将会从201开始计,并且即使删除表格所有数据,并不会清空该增长机制(增长基不变)。重置自增长语句:truncate 表名。

 

                   comment

                            列注释,为列进行注释,使用show create table 表名后,注释内容会显示在表属性之中。

                                    

         索引

                   每个表都会内建一些经过排序过的表格,在查询时将使用这些表格查询。索引表格的机制将根据存储引擎不同而不同。

                   能提高查询效率,降低增删改速度,占用一定的存储空间。

 

        

         实体与实体的关系

                   一对一  :设计表格时,两个实体表格存在相同的主键字段,并且主键值为一一对应。

                   一对多  :设计表格时,两个实体表格存在着一种关系——一个表格中的主键值对应另一个表格的多个非主键值。

                   多对多  :设计表格时,三个实体表格存在着,两个实体表格的主键值分别通过第三个表格联系起来。

 

         外键

                   当前只有innoDB存储引擎才支持,项目中往往不用外键,而是借用其设计思想

                   alter table 表名 add foreign key 外键定义

                   foreign key 外键

                当一个表格的主键值对应另一个表格的字段值(非主键)时,那么主键字段的表被称为父表,另一个被称为子表(外键)。

                   也就是说,外键的值依赖于主键的值。插入外键值必须在主键有与之对应的数据。

                   格式  :foreign key(外键字段) references 主键字段表名(主键字段)。

        

                   主表更新

                            on update[级联操作]  |  主表更新

                            on delete[级联操作]  |  主表删除

                                     级联操作:1.cascade | 同步操作,当主表记录删除或更新的时候,从表也进行相应的删除或更新

                                                 2.set null | 当主表记录删除或更新的时候,从表的外键字段设置为空

                                                 3.restrict | 拒绝主表的更新或删除。

                   删除外键

                            alter table 表名 drop foreign key 外键名

                            此处外键名不是字段名,创建外键的时候若没定义外键名,那么系统会自动分配一个外键名。(查看方法show create table)

  存储引擎

      技术分享

      引擎的选择主要还是要注意其执行效率的快慢。

2016-11-25-MYSQL-2