约束:
作用是为了保证数据的完整性,一致性,有效性.
约束分类:
1.默认约束default
2.非空约束not null
索引:
定义:对数据库中表的一列或者多列的值进行排序的一种结构(MySQL中的Btree方式)
优点:加快数据的检索速度
缺点:当对表中的数据进行增加,删除和修改的生活,索引也到动态维护,降低了数据的维护速度。索引需要占用物理空间
普通索引index:
使用规则:
一个表中可以有多个index字段,字段的值可以有重复,且可以为null值,经常把做查询条件的字段设置为index字段,index字段的key标志null.
1,创建表时直接创建:
index(字段名1),index(字段名2)
2,在已有表中创建index
create index 索引名 on 表名(字段名);
3,查看普通索引
desc 表名;
show index from 表名;
4,删除索引:
drop index 索引名 on 表名;#一次只能删除一个索引名
唯一索引unique key:
使用规则: 一个表中可以有多个unique字段,unique字段的值不允许重复,但可以为null,unique字段的key标志是UNI
1,创建唯一索引:
unique(字段名1),unique(字段名2)
2,字段名 数据类型 unique,
create unique index 索引名 on 表名(字段名);
3,删除唯一索引:
drop index 索引名 on 表名;
index和nuique在删除时候只能一个一个删除。不能一次性删除多个。
主键索引primary key:
使用规则:一个表中只能有一个主键pirmary字段
对应字段的值不允许重复,且不能为空
主键字段的key标志PRI
把表中能够唯一标识一条记录的字段设置为主键,通常把表中记录编号的字段设置为主键。
创建表时创建主键:
字段名 数据类型 primary key
在已有表中创建主键
alter table 表名 add primary key(字段名);
删除:
alter table 表名 modify 字段名 字段类型 ;#删除自增长属性,必须先删自增长才能删主键。
alter table 表名 drop primary key;#删除主键
自增长属性auto_increment,与主键字段配合使用
字段名 数据类型 primary key auto_increment;
外键索引foreign key: 让当前表的字段值在另一个表的范围内选择
语法格式:
foreign key(参考字段名) references(被参考表名) on delete 级联动作 on update 级联动作
删除外键
alter table 表名 drop foreign key 外键名;
外键名的查看方式
show create table 表名;
alter table 表名 drop foreign key 外键名;
insert into 表名 values() 记录名;
在已有表中添加一个外键:
alter table 表名 addforeign key (参考字段名) references 被参考表名(被参考字段名) on delete 级联动作 on update 级乱动作
注意:在已有表中添加外键时,会收到表中原有数据的限制。
在已有表中删除一个外键:
alter table 表名 drop foreign key (外键名);
使用规则:
两张表 被参考字段 和 参考字段 的数据类型要一致;
被参考字段 必须是KEY的一种,通常是primary key 。
级联动作
cascade :数据级联更新
当主表删除记录时,如果从表有相关联记录则级联删除;
当主表更新被参考字段的值时,从表级联更新参考字段的值;
restrict(默认):
当主表删除记录时,如果从表中有相关记录则不允许主表删除;
update 同 1;
案例
表1:缴费信息表(财务)
内容有:
学号 姓名 班级 缴费金额
1 汤 6班 200元
2 维 6班 200元
表2:学生信息表(班主任)
内容有:
学号 姓名 缴费金额
1 汤 200元
在表2信息内如果插入信息需要在表1内学号和姓名匹配上。如果匹配不上则插入时会报错。