久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql中restrict的含義是什么

165次閱讀
沒有評論

共計 3489 個字符,預(yù)計需要花費 9 分鐘才能閱讀完成。

本篇內(nèi)容介紹了“mysql 中 restrict 的含義是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

在 mysql 中,restrict 是約束的意思,是指對表中數(shù)據(jù)的一種限制,能夠幫助數(shù)據(jù)庫管理員更好地管理數(shù)據(jù)庫,并且能夠確保數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和完整性。MySQL 支持 6 種約束:主鍵約束、外鍵約束、唯一約束、檢查約束、非空約束和默認(rèn)值約束。

MySQL 中什么是約束?

restrict(約束)是指對表中數(shù)據(jù)的一種限制,能夠幫助數(shù)據(jù)庫管理員更好地管理數(shù)據(jù)庫,并且能夠確保數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和完整性。

例如,在數(shù)據(jù)表中存放年齡的值時,如果存入 200、300 這些無效的值就毫無意義了。因此,使用約束來限定表中的數(shù)據(jù)范圍是很有必要的。

MySQL 中的約束就是用來檢測數(shù)據(jù)正確性和合理性的,一般的錯誤有:1,存在相同重復(fù)的數(shù)據(jù);2,錯誤的數(shù)據(jù);3,數(shù)據(jù)丟失錯誤 (空數(shù)據(jù));4,指代不明確的錯誤(表之間無法準(zhǔn)確聯(lián)系起來) 等。

MySQL 的約束就是用來解決上述問題的,比如身份證號不能重復(fù),收貨地址不能空。如果違反了約束,則數(shù)據(jù)操作行為被制止。

在 MySQL 中,主要支持以下 6 種約束:

1)主鍵約束

主鍵約束是使用最頻繁的約束。在設(shè)計數(shù)據(jù)表時,一般情況下,都會要求表中設(shè)置一個主鍵。

主鍵是表的一個特殊字段,該字段能唯一標(biāo)識該表中的每條信息。例如,學(xué)生信息表中的學(xué)號是唯一的。

2)外鍵約束

外鍵約束經(jīng)常和主鍵約束一起使用,用來確保數(shù)據(jù)的一致性。

例如,一個水果攤,只有蘋果、桃子、李子、西瓜 4 種水果,那么,你來到水果攤要買水果只能選擇蘋果、桃子、李子和西瓜,不能購買其它的水果。

3)唯一約束

唯一約束與主鍵約束有一個相似的地方,就是它們都能夠確保列的唯一性。與主鍵約束不同的是,唯一約束在一個表中可以有多個,并且設(shè)置唯一約束的列是允許有空值的,雖然只能有一個空值。

例如,在用戶信息表中,要避免表中的用戶名重名,就可以把用戶名列設(shè)置為唯一約束。

4)檢查約束

檢查約束是用來檢查數(shù)據(jù)表中,字段值是否有效的一個手段。

例如,學(xué)生信息表中的年齡字段是沒有負(fù)數(shù)的,并且數(shù)值也是有限制的。如果是大學(xué)生,年齡一般應(yīng)該在 18~30 歲之間。在設(shè)置字段的檢查約束時要根據(jù)實際情況進(jìn)行設(shè)置,這樣能夠減少無效數(shù)據(jù)的輸入。

5)非空約束

非空約束用來約束表中的字段不能為空。例如,在學(xué)生信息表中,如果不添加學(xué)生姓名,那么這條記錄是沒有用的。

6)默認(rèn)值約束

默認(rèn)值約束用來約束當(dāng)數(shù)據(jù)表中某個字段不輸入值時,自動為其添加一個已經(jīng)設(shè)置好的值。

例如,在注冊學(xué)生信息時,如果不輸入學(xué)生的性別,那么會默認(rèn)設(shè)置一個性別或者輸入一個“未知”。

默認(rèn)值約束通常用在已經(jīng)設(shè)置了非空約束的列,這樣能夠防止數(shù)據(jù)表在錄入數(shù)據(jù)時出現(xiàn)錯誤。

以上 6 種約束中,一個數(shù)據(jù)表中只能有一個主鍵約束,其它約束可以有多個。

操作表的約束

1、給一張表添加主鍵約束

一張表的只能有一個主鍵,添加主鍵有兩種方式。

        單一主鍵:使用一個列作為主鍵列,當(dāng)該列的值有重復(fù)時,則違反唯一約束。

        聯(lián)合主鍵:使用多個列作為主鍵列,當(dāng)多個列的值都相同時,則違反唯一約束。指的是:使用多個列的組合形式來確定主鍵,當(dāng)出現(xiàn)組合重復(fù)就無效,如 00,01,10,11,12,22 這樣的組合形式。

使用 DDL 語句添加主鍵約束。示例:

ALTER TABLE  表名  ADD PRIMARY KEY(列名);
alter table emp add primary key(employee_id);// 選取 employee_id 作為主鍵
alter table emp add primary key(employee_id,shenfen_id);// 聯(lián)合主鍵

2、給一張表添加自增長主鍵約束

auto_increment。數(shù)據(jù)庫管理系統(tǒng)自動維護(hù)表時自動加上的主鍵,利用自然數(shù)自增的方式確定主鍵。同樣的,自增長主鍵也是把某一列用作主鍵。當(dāng)表中添加了主鍵的字段增加了數(shù)據(jù),則主鍵自動加 1。

自增長主鍵和一般主鍵約束可以相互轉(zhuǎn)化。

1,一個表中只能有一個列為自動增長。2,自動增長的列的類型必須是整數(shù)類型。3,自動增長只能添加到具備主鍵約束與唯一性約束的列上。4,刪除主鍵約束或唯一性約束,如果該列擁有自動增長能力,則需要先去掉自動增長然后在刪除約束。

        注意點:如果之前給某個字段添加了自增長屬性,則刪除這個字段時要先刪除自增長屬性。

alter table  表名  modify  主鍵   類型  auto_increment;
alter table emp modify employee_id int auto_increment;

或者在 Navicat 中添加主鍵:

mysql 中 restrict 的含義是什么

3、刪除一張表中的主鍵約束

使用 DDL 語句刪除主鍵。

ALTER TABLE  表名  DROP PRIMARY KEY;
alter table emp drop primary key;

        注意:刪除主鍵時,如果主鍵列具備自動增長能力,需要先去掉自動增長,然后在刪除主鍵。

alter table emp modify employee_id int;// 去掉自增長,與添加自增長代碼地區(qū)別就是沒有 auto_increament
alter table emp drop primary key;

4、給一張表添加外鍵約束

使用 DDL 語句添加外鍵約束。可以給一張表設(shè)置多個外鍵。

ALTER TABLE  表名  ADD CONSTRAINT  約束名  FOREIGN KEY(列名) REFERENCES  參照的表名(參照的列名);
alter table emp add constraint emp_fk
foreign key(dept_id) references
departments(department_id);

或在在 Navicat 中添加外鍵。外鍵名稱常使用:表名_fk,表名_fk1 表示。

mysql 中 restrict 的含義是什么

5、刪除一張表的外鍵約束

        使用 DDL 語句刪除外鍵約束。或者在 Navicat 中主動刪除外鍵。

ALTER TABLE  表名  DROP FOREIGN KEY  約束名;
alter table emp drop foreign key emp_fk;

mysql 中 restrict 的含義是什么

6、給表中某字段添加唯一性約束

使用 DDL 語句添加唯一性約束。或在在 Navicat 中添加唯一性約束。

ALTER TABLE  表名  ADD CONSTRAINT  約束名  UNIQUE(列名);
alter table emp add constraint emp_uk unique(name);

mysql 中 restrict 的含義是什么

7、刪除表中某字段的唯一性約束

使用 DDL 語句刪除唯一性約束。刪除之前需要弄清楚刪除的約束名是對哪一個字段進(jìn)行約束的。

ALTER TABLE  表名  DROP KEY  約束名;
alter table emp drop key emp_uk;

8、給表中某個字段添加非空約束

使用 DDL 語句添加非空約束。或者 Navicat。

ALTER TABLE  表名  MODIFY  列名   類型  NOT NULL;
alter table emp modify salary float(8,2) not NULL;

mysql 中 restrict 的含義是什么

9、刪除表中某個字段的非空約束

使用 DDL 語句刪除非空約束。

ALTER TABLE  表名  MODIFY  列名   類型  NULL;
alter table emp modify salary float(8,2) NULL;

mysql 中 restrict 的含義是什么

創(chuàng)建表的時候添加約束

上面介紹了當(dāng)一張表已經(jīng)存在之后如何添加約束。下面介紹在一開始新建表的時候如何添加約束。

1、查詢表中加了哪些約束?

 SHOW KEYS FROM  表名;

2、創(chuàng)建表時添加約束

        創(chuàng)建 depts 表包含 department_id 該列為主鍵且自動增長,department_name 列不允許重復(fù),location_id 列不允含有空值。

create table depts
department_id int primary key auto_increment,
department_name varchar(30) unique,
location_id int not null;
);

“mysql 中 restrict 的含義是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實用文章!

向 AI 問一下細(xì)節(jié)

丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2024-02-03發(fā)表,共計3489字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 昌都县| 登封市| 灌阳县| 肃北| 阜南县| 同心县| 昌黎县| 信阳市| 烟台市| 阿勒泰市| 刚察县| 翁源县| 崇明县| 广元市| 柳林县| 剑川县| 巴彦县| 汤阴县| 岫岩| 南汇区| 金门县| 宣恩县| 安多县| 余庆县| 图木舒克市| 申扎县| 和静县| 黔南| 嘉峪关市| 泾川县| 汉阴县| 灵台县| 绥阳县| 芒康县| 闽清县| 无极县| 剑阁县| 时尚| 监利县| 黄大仙区| 沙洋县|