MySQL數(shù)據(jù)庫的約束限制詳解
一、介紹
數(shù)據(jù)庫的約束是對表中數(shù)據(jù)進行的一種限制,為了保證數(shù)據(jù)的正確性、有效性、完整性。
無論是在添加數(shù)據(jù)還是在刪除數(shù)據(jù)的時候,都能提供幫助。所有的關(guān)系型數(shù)據(jù)庫都支持對數(shù)據(jù)表的約束。
- 主鍵:唯一標(biāo)識一條記錄,不能重復(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 );
建表時添加外鍵約束:
// 這里是指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)更新 標(biāo)準(zhǔn)語法: ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (本表外鍵列名) REFERENCES 主表名(主鍵列名) ON UPDATE CASCADE; 添加外鍵約束,同時添加級聯(lián)刪除 標(biāo)準(zhǔn)語法: ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (本表外鍵列名) REFERENCES 主表名(主鍵列名) ON DELETE CASCADE; 添加外鍵約束,同時添加級聯(lián)更新和級聯(lián)刪除 標(biāo)準(zhǔn)語法: ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (本表外鍵列名) REFERENCES 主表名(主鍵列名) ON UPDATE CASCADE ON DELETE CASCADE;
到此這篇關(guān)于MySQL數(shù)據(jù)庫的約束限制詳解的文章就介紹到這了,更多相關(guān)MySQL 約束內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 淺談關(guān)系型數(shù)據(jù)庫中的約束及應(yīng)用場景
- MySQL數(shù)據(jù)庫表中的約束詳解
- MySQL數(shù)據(jù)庫的約束使用實例
- MySQL數(shù)據(jù)庫約束操作示例講解
- 一文理解MySQL數(shù)據(jù)庫的約束與表的設(shè)計
- SQL?Server數(shù)據(jù)庫創(chuàng)建表及其約束條件的操作方法
- MySQL數(shù)據(jù)庫表約束講解
- MySQL示例講解數(shù)據(jù)庫約束以及表的設(shè)計
- MySQL數(shù)據(jù)庫如何給表設(shè)置約束詳解
- MySQL?數(shù)據(jù)庫的約束及數(shù)據(jù)表的設(shè)計原理
- Mysql關(guān)于數(shù)據(jù)庫是否應(yīng)該使用外鍵約束詳解說明
- 深入理解數(shù)據(jù)庫之表的唯一、自增等七大約束
相關(guān)文章
mysql數(shù)據(jù)庫在表中添加數(shù)據(jù)三種操作方式
這篇文章主要介紹了mysql數(shù)據(jù)庫在表中添加數(shù)據(jù)三種方式,首先創(chuàng)建數(shù)據(jù)庫和表,創(chuàng)建完成后就可以進行添加數(shù)據(jù)的操作了,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-08-08MySQL中JSON_ARRAYAGG和JSON_OBJECT函數(shù)功能和用法
JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,它可以用來存儲和表示結(jié)構(gòu)化的數(shù)據(jù),在MySQL數(shù)據(jù)庫中,JSON格式的數(shù)據(jù)處理已經(jīng)變得越來越常見,本文將深入探討這兩個函數(shù)的用途、語法和示例,以幫助您更好地理解它們的功能和用法,需要的朋友可以參考下2023-09-09MySQL中的datediff()方法和timestampdiff()方法的應(yīng)用示例小結(jié)
在MySQL中,DATEDIFF()函數(shù)和TIMESTAMPDIFF()函數(shù)用于計算日期和時間之間的差異,TIMESTAMPDIFF()函數(shù)返回的結(jié)果是整數(shù),但你可以通過在計算過程中使用適當(dāng)?shù)某▉慝@得所需的小數(shù)部分,本文介紹MySQL中的datediff()方法和timestampdiff()方法的應(yīng)用,感興趣的朋友一起看看吧2023-12-12MySQL添加外鍵時報錯:1215 Cannot add the foreign key constraint的解決方法
大家都知道MySQL中經(jīng)常會需要創(chuàng)建父子表之間的約束,這個約束是需要建立在主外鍵基礎(chǔ)之上的,最近在MySQL添加外鍵時發(fā)現(xiàn)了一個報錯:1215 Cannot add the foreign key constraint,所以這篇文章就給大家介紹了如何解決在創(chuàng)建主外鍵約束過程中碰到的這個問題。2016-11-11SQLyog連接MySQL8.0+報錯:錯誤號碼2058的解決方案
本文將總結(jié)如何解決 SQLyog 連接 MySQL8.0+ 時報錯:錯誤號碼2058,文中通過圖文結(jié)合和代碼示例給大家總結(jié)了三種解決方案,具有一定的參考價值,需要的朋友可以參考下2023-12-12