首页 > 代码库 > 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