MySQL數(shù)據(jù)庫(kù)的約束限制詳解
一、介紹
數(shù)據(jù)庫(kù)的約束是對(duì)表中數(shù)據(jù)進(jìn)行的一種限制,為了保證數(shù)據(jù)的正確性、有效性、完整性。
無論是在添加數(shù)據(jù)還是在刪除數(shù)據(jù)的時(shí)候,都能提供幫助。所有的關(guān)系型數(shù)據(jù)庫(kù)都支持對(duì)數(shù)據(jù)表的約束。
- 主鍵:唯一標(biāo)識(shí)一條記錄,不能重復(fù),不允許為空。主要用來保證數(shù)據(jù)的完整性。
- 外鍵: 表的外鍵是另一表的主鍵,外鍵可以有重復(fù),可以為控制。主要用來和其他表建立聯(lián)系。
二、操作
添加
添加主鍵:
// 一般設(shè)置id為主鍵 CREATE TABLE student( id INT PRIMARY KEY, NAME VARCHAR(30), age INT );
添加自增主鍵:
CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(30), age INT );
創(chuàng)建唯一約束:
// 這里age為唯一約束 CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(30), age INT UNIQUE );
創(chuàng)建非空約束:
// 這里 NAME 屬性為非空約束 CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(30) NOT NULL, age INT UNIQUE );
建表時(shí)添加外鍵約束:
// 這里是指orderlist這個(gè)表的uid是USER表id主鍵的外鍵約束 CREATE TABLE orderlist( id INT PRIMARY KEY AUTO_INCREMENT, -- id number VARCHAR(20) NOT NULL, -- 訂單編號(hào) uid INT, -- 外鍵列 CONSTRAINT ou_fk1 FOREIGN KEY (uid) REFERENCES USER(id) );
建表后單獨(dú)添加主鍵約束:
ALTER TABLE student MODIFY id INT PRIMARY KEY;
建表后單獨(dú)添加非空約束:
ALTER TABLE student MODIFY NAME VARCHAR(30) NOT NULL;
建表后單獨(dú)添加唯一約束:
ALTER TABLE student MODIFY age INT UNIQUE;
建表后單獨(dú)添加外鍵約束:
ALTER TABLE orderlist ADD CONSTRAINT ou_fk1 FOREIGN KEY (uid) REFERENCES USER(id);
刪除
刪除主鍵:
LTER TABLE student DROP PRIMARY KEY;
刪除自增約束:
ALTER TABLE student MODIFY id INT;
刪除唯一約束:
ALTER TABLE student DROP INDEX age;
刪除非空約束:
ALTER TABLE student MODIFY NAME VARCHAR(30);
刪除外鍵約束:
ALTER TABLE orderlist DROP FOREIGN KEY ou_fk1;
外鍵聯(lián)級(jí)操作
添加外鍵約束,同時(shí)添加級(jí)聯(lián)更新 標(biāo)準(zhǔn)語(yǔ)法: ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (本表外鍵列名) REFERENCES 主表名(主鍵列名) ON UPDATE CASCADE; 添加外鍵約束,同時(shí)添加級(jí)聯(lián)刪除 標(biāo)準(zhǔn)語(yǔ)法: ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (本表外鍵列名) REFERENCES 主表名(主鍵列名) ON DELETE CASCADE; 添加外鍵約束,同時(shí)添加級(jí)聯(lián)更新和級(jí)聯(lián)刪除 標(biāo)準(zhǔn)語(yǔ)法: ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (本表外鍵列名) REFERENCES 主表名(主鍵列名) ON UPDATE CASCADE ON DELETE CASCADE;
到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)的約束限制詳解的文章就介紹到這了,更多相關(guān)MySQL 約束內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 淺談關(guān)系型數(shù)據(jù)庫(kù)中的約束及應(yīng)用場(chǎng)景
- MySQL數(shù)據(jù)庫(kù)表中的約束詳解
- MySQL數(shù)據(jù)庫(kù)的約束使用實(shí)例
- MySQL數(shù)據(jù)庫(kù)約束操作示例講解
- 一文理解MySQL數(shù)據(jù)庫(kù)的約束與表的設(shè)計(jì)
- SQL?Server數(shù)據(jù)庫(kù)創(chuàng)建表及其約束條件的操作方法
- MySQL數(shù)據(jù)庫(kù)表約束講解
- MySQL示例講解數(shù)據(jù)庫(kù)約束以及表的設(shè)計(jì)
- MySQL數(shù)據(jù)庫(kù)如何給表設(shè)置約束詳解
- MySQL?數(shù)據(jù)庫(kù)的約束及數(shù)據(jù)表的設(shè)計(jì)原理
- Mysql關(guān)于數(shù)據(jù)庫(kù)是否應(yīng)該使用外鍵約束詳解說明
- 深入理解數(shù)據(jù)庫(kù)之表的唯一、自增等七大約束
相關(guān)文章
使用cgroups來限制MySQL企業(yè)備份服務(wù)對(duì)資源的占用
這篇文章主要介紹了使用cgroups來限制MySQL企業(yè)備份服務(wù)對(duì)資源的占用,以限制mysqlbackup相關(guān)的進(jìn)程和線程對(duì)CPU和內(nèi)存的閑時(shí)消耗,需要的朋友可以參考下2015-06-06
Linux下MySQL 5.5/5.6的修改字符集編碼為UTF8的方法
下面小編就為大家?guī)硪黄狶inux下MySQL 5.5/5.6的修改字符集編碼為UTF8的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
mysql通過my.cnf修改默認(rèn)字符集為utf-8的方法和注意事項(xiàng)
本文主要給大家介紹mysql通過my.cnf修改默認(rèn)字符集為utf-8的方法,當(dāng)然你也可以設(shè)置成別的,國(guó)際點(diǎn)還是utf-8好,以及在修改過程中要注意的一些事項(xiàng),有需要的朋友們可以參考借鑒。2016-09-09
CentOS 7中源碼安裝MySQL 5.7.6+詳細(xì)教程
最近在CentOS 7中源碼安裝MySQL 5.7.6+,發(fā)現(xiàn)MySQL5.7.6+以后的安裝方式真的與以前版本的MySQL安裝方式大大的不同呀。不自己安裝一把,你都不知道不同之處在哪,下面這篇文章是通過自己的安裝過程總結(jié)的一篇安裝教程,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12
/var/log/pacct文件導(dǎo)致MySQL啟動(dòng)失敗的案例分享
這篇文章主要介紹了/var/log/pacct文件導(dǎo)致MySQL啟動(dòng)失敗的案例分享,這是個(gè)比較讓人郁悶的問題,找不到MySQL啟動(dòng)失敗的原因進(jìn)可以按此文的方法試一試,需要的朋友可以參考下2015-01-01

