MySQL入门之数据完整性约束与表维护
-------------------------------------------------------------------------------------------------------------
教程大纲:
http://blog.****.net/qq78442761/article/details/76018310
-------------------------------------------------------------------------------------------------------------
1.数据完整性约束
一旦设定,服务器将随时检测
2.定义完整性
a) 实体完整性
b) 参照完整性
c) 用户定义完整性
实体完整性-主码不能为空
1.每一个表只能定义一个主键
2.复合主键不能包含不必要的多于列
3.一个列明在复合主键的列表中只能出现一次
4.作为列的完整性约束
以列的完整性约束定义主键:
候选约束性
在create table 或 alter table 语句中使用关键字 unique 来定义
一个表中只能创建一个主键,但可以定义若干个候选键
定义候选键结束时系统自动产生unique 索引
参照完整性
举一个列子,创建一个订单表,要求商品的订单表orders中的所有订购客户信息都在表customers中记录
Restrict vt. 限制;限定;约束
Reference n. 提及, 涉及
以上代码不难理解
用户定义完整性
1.非空约束 在某个列定义后面加上关键字 not null
2.check约束:
在orders中cust_id列的所有值均来源于表customers中的cust_id列
该约束可以对表中多个列进行限制
创建一个orders表,要求表中order_price 列的值不能低于2000,且order_amount 列不能高于5
命名完整性约束
可以完整性约束进行添加,删除和修改等操作
主要功能就是命名
创建一个order表,在原要求的基础上,将该表的主键约束命名为PRI-MARY_KEY_ORDERS,并将他们的外键说明命名为FOREIGN_KEY_ORDERS
Constraint n. 强制; 限制, 约束
更新完整性约
使用alter table orders drop constraint FOREIGN_KEY_ORDERS
表维护语句
1.analyze table
更新数据库中表customers1的索引散列程度,并查询结果
chck table语句
1.Upgrade:用来检测更早版本的表是否兼容当前版本
2.Quick:速度快,在检查数据时不会检查连接是否正确
3.fast:检查表是否正常关闭
4.changed:检查上次检查后更改的表以及有没有正常关闭
5.medium:默认选项,检查索引和文件之间的链接真确性
6.extended:最慢的选择,对每行的所有关键字进行查找
使用check table 语句检查数据库中的 customers1
查询数据库中表customers1的相关检查信息
Checksum table 语句
对数据库中到底每一个表进行校验和
如下所示:
Optimize table 语句
重新利用未使用的空间,并整理数据文件的碎片
如下操作
Repair table 语句
修复一个或多个可能被损坏的表
Use_frm 当myi索引丢失时才用