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

