MySQL數(shù)據(jù)庫(kù)的約束限制詳解
一、介紹
數(shù)據(jù)庫(kù)的約束是對(duì)表中數(shù)據(jù)進(jìn)行的一種限制,為了保證數(shù)據(jù)的正確性、有效性、完整性。
無(wú)論是在添加數(shù)據(jù)還是在刪除數(shù)據(jù)的時(shí)候,都能提供幫助。所有的關(guān)系型數(shù)據(jù)庫(kù)都支持對(duì)數(shù)據(jù)表的約束。
- 主鍵:唯一標(biāo)識(shí)一條記錄,不能重復(fù),不允許為空。主要用來(lái)保證數(shù)據(jù)的完整性。
- 外鍵: 表的外鍵是另一表的主鍵,外鍵可以有重復(fù),可以為控制。主要用來(lái)和其他表建立聯(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)該使用外鍵約束詳解說(shuō)明
- 深入理解數(shù)據(jù)庫(kù)之表的唯一、自增等七大約束
相關(guān)文章
mysql數(shù)據(jù)庫(kù)在表中添加數(shù)據(jù)三種操作方式
這篇文章主要介紹了mysql數(shù)據(jù)庫(kù)在表中添加數(shù)據(jù)三種方式,首先創(chuàng)建數(shù)據(jù)庫(kù)和表,創(chuàng)建完成后就可以進(jìn)行添加數(shù)據(jù)的操作了,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08MySQL中JSON_ARRAYAGG和JSON_OBJECT函數(shù)功能和用法
JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,它可以用來(lái)存儲(chǔ)和表示結(jié)構(gòu)化的數(shù)據(jù),在MySQL數(shù)據(jù)庫(kù)中,JSON格式的數(shù)據(jù)處理已經(jīng)變得越來(lái)越常見(jiàn),本文將深入探討這兩個(gè)函數(shù)的用途、語(yǔ)法和示例,以幫助您更好地理解它們的功能和用法,需要的朋友可以參考下2023-09-09MySQL實(shí)戰(zhàn)記錄之如何快速定位慢SQL
這可能是困然很多人的一個(gè)問(wèn)題,MySQL通過(guò)慢查詢(xún)?nèi)罩径ㄎ荒切﹫?zhí)行效率較低的SQL語(yǔ)句,下面這篇文章主要給大家介紹了關(guān)于MySQL實(shí)戰(zhàn)記錄之如何快速定位慢SQL的相關(guān)資料,需要的朋友可以參考下2022-03-03MySQL中的datediff()方法和timestampdiff()方法的應(yīng)用示例小結(jié)
在MySQL中,DATEDIFF()函數(shù)和TIMESTAMPDIFF()函數(shù)用于計(jì)算日期和時(shí)間之間的差異,TIMESTAMPDIFF()函數(shù)返回的結(jié)果是整數(shù),但你可以通過(guò)在計(jì)算過(guò)程中使用適當(dāng)?shù)某▉?lái)獲得所需的小數(shù)部分,本文介紹MySQL中的datediff()方法和timestampdiff()方法的應(yīng)用,感興趣的朋友一起看看吧2023-12-12MySQL添加外鍵時(shí)報(bào)錯(cuò):1215 Cannot add the foreign key constraint的解決方法
大家都知道MySQL中經(jīng)常會(huì)需要?jiǎng)?chuàng)建父子表之間的約束,這個(gè)約束是需要建立在主外鍵基礎(chǔ)之上的,最近在MySQL添加外鍵時(shí)發(fā)現(xiàn)了一個(gè)報(bào)錯(cuò):1215 Cannot add the foreign key constraint,所以這篇文章就給大家介紹了如何解決在創(chuàng)建主外鍵約束過(guò)程中碰到的這個(gè)問(wèn)題。2016-11-11SQLyog連接MySQL8.0+報(bào)錯(cuò):錯(cuò)誤號(hào)碼2058的解決方案
本文將總結(jié)如何解決 SQLyog 連接 MySQL8.0+ 時(shí)報(bào)錯(cuò):錯(cuò)誤號(hào)碼2058,文中通過(guò)圖文結(jié)合和代碼示例給大家總結(jié)了三種解決方案,具有一定的參考價(jià)值,需要的朋友可以參考下2023-12-12