SQL的约束和索引

约束:

作用是为了保证数据的完整性,一致性,有效性.
约束分类:
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内学号和姓名匹配上。如果匹配不上则插入时会报错。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值