MySQL入门之数据完整性约束与表维护
-------------------------------------------------------------------------------------------------------------
教程大綱:
http://blog.csdn.net/qq78442761/article/details/76018310
-------------------------------------------------------------------------------------------------------------
1.數(shù)據(jù)完整性約束
一旦設(shè)定,服務(wù)器將隨時(shí)檢測
2.定義完整性
a)?實(shí)體完整性
b)?參照完整性
c)?用戶定義完整性
?
實(shí)體完整性-主碼不能為空
1.每一個(gè)表只能定義一個(gè)主鍵
2.復(fù)合主鍵不能包含不必要的多于列
3.一個(gè)列明在復(fù)合主鍵的列表中只能出現(xiàn)一次
4.作為列的完整性約束
以列的完整性約束定義主鍵:
候選約束性
在create?table?或?alter?table?語句中使用關(guān)鍵字?unique?來定義
一個(gè)表中只能創(chuàng)建一個(gè)主鍵,但可以定義若干個(gè)候選鍵
定義候選鍵結(jié)束時(shí)系統(tǒng)自動產(chǎn)生unique?索引
?
參照完整性
????舉一個(gè)列子,創(chuàng)建一個(gè)訂單表,要求商品的訂單表orders中的所有訂購客戶信息都在表customers中記錄
Restrict?vt.?限制;限定;約束
Reference?n.?提及,?涉及
以上代碼不難理解
用戶定義完整性
1.非空約束?在某個(gè)列定義后面加上關(guān)鍵字?not?null
2.check約束:
???在orders中cust_id列的所有值均來源于表customers中的cust_id列
該約束可以對表中多個(gè)列進(jìn)行限制
創(chuàng)建一個(gè)orders表,要求表中order_price?列的值不能低于2000,且order_amount?列不能高于5
命名完整性約束
可以完整性約束進(jìn)行添加,刪除和修改等操作
主要功能就是命名
創(chuàng)建一個(gè)order表,在原要求的基礎(chǔ)上,將該表的主鍵約束命名為PRI-MARY_KEY_ORDERS,并將他們的外鍵說明命名為FOREIGN_KEY_ORDERS
Constraint??n.?強(qiáng)制;?限制,?約束
更新完整性約
使用alter?table?orders?drop?constraint?FOREIGN_KEY_ORDERS
表維護(hù)語句
1.analyze?table?
更新數(shù)據(jù)庫中表customers1的索引散列程度,并查詢結(jié)果
chck?table語句
??????1.Upgrade:用來檢測更早版本的表是否兼容當(dāng)前版本
??????2.Quick:速度快,在檢查數(shù)據(jù)時(shí)不會檢查連接是否正確
??????3.fast:檢查表是否正常關(guān)閉
??????4.changed:檢查上次檢查后更改的表以及有沒有正常關(guān)閉
??????5.medium:默認(rèn)選項(xiàng),檢查索引和文件之間的鏈接真確性
??????6.extended:最慢的選擇,對每行的所有關(guān)鍵字進(jìn)行查找
使用check?table?語句檢查數(shù)據(jù)庫中的?customers1
查詢數(shù)據(jù)庫中表customers1的相關(guān)檢查信息
Checksum?table?語句
對數(shù)據(jù)庫中到底每一個(gè)表進(jìn)行校驗(yàn)和
如下所示:
Optimize?table?語句
?重新利用未使用的空間,并整理數(shù)據(jù)文件的碎片
如下操作
Repair?table?語句
修復(fù)一個(gè)或多個(gè)可能被損壞的表
Use_frm?當(dāng)myi索引丟失時(shí)才用
總結(jié)
以上是生活随笔為你收集整理的MySQL入门之数据完整性约束与表维护的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将(*)的ASCII码2AH送入内存段1
- 下一篇: c语言去空格换行符,关于文件操作,碰到空