MySQL入门之数据完整性约束与表维护

来源:互联网 发布:俊知地产 编辑:程序博客网 时间:2024/05/21 22:53

-------------------------------------------------------------------------------------------------------------

教程大纲:

http://blog.csdn.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索引丢失时才用