本篇內(nèi)容介紹了“MySQL中restrict的含義是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比海倫網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式海倫網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋海倫地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴(lài)。
在mysql中,restrict是約束的意思,是指對(duì)表中數(shù)據(jù)的一種限制,能夠幫助數(shù)據(jù)庫(kù)管理員更好地管理數(shù)據(jù)庫(kù),并且能夠確保數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性、有效性和完整性。MySQL支持6種約束:主鍵約束、外鍵約束、唯一約束、檢查約束、非空約束和默認(rèn)值約束。
restrict(約束)是指對(duì)表中數(shù)據(jù)的一種限制,能夠幫助數(shù)據(jù)庫(kù)管理員更好地管理數(shù)據(jù)庫(kù),并且能夠確保數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性、有效性和完整性。
例如,在數(shù)據(jù)表中存放年齡的值時(shí),如果存入 200、300 這些無(wú)效的值就毫無(wú)意義了。因此,使用約束來(lái)限定表中的數(shù)據(jù)范圍是很有必要的。
MySQL中的約束就是用來(lái)檢測(cè)數(shù)據(jù)正確性和合理性的,一般的錯(cuò)誤有:1,存在相同重復(fù)的數(shù)據(jù);2,錯(cuò)誤的數(shù)據(jù);3,數(shù)據(jù)丟失錯(cuò)誤(空數(shù)據(jù));4,指代不明確的錯(cuò)誤(表之間無(wú)法準(zhǔn)確聯(lián)系起來(lái))等。
MySQL的約束就是用來(lái)解決上述問(wèn)題的,比如身份證號(hào)不能重復(fù),收貨地址不能空。如果違反了約束,則數(shù)據(jù)操作行為被制止。
在 MySQL 中,主要支持以下 6 種約束:
1)主鍵約束
主鍵約束是使用最頻繁的約束。在設(shè)計(jì)數(shù)據(jù)表時(shí),一般情況下,都會(huì)要求表中設(shè)置一個(gè)主鍵。
主鍵是表的一個(gè)特殊字段,該字段能唯一標(biāo)識(shí)該表中的每條信息。例如,學(xué)生信息表中的學(xué)號(hào)是唯一的。
2)外鍵約束
外鍵約束經(jīng)常和主鍵約束一起使用,用來(lái)確保數(shù)據(jù)的一致性。
例如,一個(gè)水果攤,只有蘋(píng)果、桃子、李子、西瓜 4 種水果,那么,你來(lái)到水果攤要買(mǎi)水果只能選擇蘋(píng)果、桃子、李子和西瓜,不能購(gòu)買(mǎi)其它的水果。
3)唯一約束
唯一約束與主鍵約束有一個(gè)相似的地方,就是它們都能夠確保列的唯一性。與主鍵約束不同的是,唯一約束在一個(gè)表中可以有多個(gè),并且設(shè)置唯一約束的列是允許有空值的,雖然只能有一個(gè)空值。
例如,在用戶(hù)信息表中,要避免表中的用戶(hù)名重名,就可以把用戶(hù)名列設(shè)置為唯一約束。
4)檢查約束
檢查約束是用來(lái)檢查數(shù)據(jù)表中,字段值是否有效的一個(gè)手段。
例如,學(xué)生信息表中的年齡字段是沒(méi)有負(fù)數(shù)的,并且數(shù)值也是有限制的。如果是大學(xué)生,年齡一般應(yīng)該在 18~30 歲之間。在設(shè)置字段的檢查約束時(shí)要根據(jù)實(shí)際情況進(jìn)行設(shè)置,這樣能夠減少無(wú)效數(shù)據(jù)的輸入。
5)非空約束
非空約束用來(lái)約束表中的字段不能為空。例如,在學(xué)生信息表中,如果不添加學(xué)生姓名,那么這條記錄是沒(méi)有用的。
6)默認(rèn)值約束
默認(rèn)值約束用來(lái)約束當(dāng)數(shù)據(jù)表中某個(gè)字段不輸入值時(shí),自動(dòng)為其添加一個(gè)已經(jīng)設(shè)置好的值。
例如,在注冊(cè)學(xué)生信息時(shí),如果不輸入學(xué)生的性別,那么會(huì)默認(rèn)設(shè)置一個(gè)性別或者輸入一個(gè)“未知”。
默認(rèn)值約束通常用在已經(jīng)設(shè)置了非空約束的列,這樣能夠防止數(shù)據(jù)表在錄入數(shù)據(jù)時(shí)出現(xiàn)錯(cuò)誤。
以上 6 種約束中,一個(gè)數(shù)據(jù)表中只能有一個(gè)主鍵約束,其它約束可以有多個(gè)。
1、給一張表添加主鍵約束
一張表的只能有一個(gè)主鍵,添加主鍵有兩種方式。
單一主鍵:使用一個(gè)列作為主鍵列,當(dāng)該列的值有重復(fù)時(shí),則違反唯一約束。
聯(lián)合主鍵:使用多個(gè)列作為主鍵列,當(dāng)多個(gè)列的值都相同時(shí),則違反唯一約束。指的是:使用多個(gè)列的組合形式來(lái)確定主鍵,當(dāng)出現(xiàn)組合重復(fù)就無(wú)效,如00,01,10,11,12,22這樣的組合形式。
使用DDL語(yǔ)句添加主鍵約束。示例:
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、給一張表添加自增長(zhǎng)主鍵約束
auto_increment。數(shù)據(jù)庫(kù)管理系統(tǒng)自動(dòng)維護(hù)表時(shí)自動(dòng)加上的主鍵,利用自然數(shù)自增的方式確定主鍵。同樣的,自增長(zhǎng)主鍵也是把某一列用作主鍵。當(dāng)表中添加了主鍵的字段增加了數(shù)據(jù),則主鍵自動(dòng)加1。
自增長(zhǎng)主鍵和一般主鍵約束可以相互轉(zhuǎn)化。
1, 一個(gè)表中只能有一個(gè)列為自動(dòng)增長(zhǎng)。2,自動(dòng)增長(zhǎng)的列的類(lèi)型必須是整數(shù)類(lèi)型。3,自動(dòng)增長(zhǎng)只能添加到具備主鍵約束與唯一性約束的列上。4,刪除主鍵約束或唯一性約束,如果該列擁有自動(dòng)增長(zhǎng)能力,則需要先去掉自動(dòng)增長(zhǎng)然后在刪除約束。
注意點(diǎn):如果之前給某個(gè)字段添加了自增長(zhǎng)屬性,則刪除這個(gè)字段時(shí)要先刪除自增長(zhǎng)屬性。
alter table 表名 modify 主鍵 類(lèi)型 auto_increment; alter table emp modify employee_id int auto_increment;
或者在Navicat中添加主鍵:
3、刪除一張表中的主鍵約束
使用DDL語(yǔ)句刪除主鍵。
ALTER TABLE 表名 DROP PRIMARY KEY; alter table emp drop primary key;
注意:刪除主鍵時(shí),如果主鍵列具備自動(dòng)增長(zhǎng)能力,需要先去掉自動(dòng)增長(zhǎng),然后在刪除主鍵。
alter table emp modify employee_id int;//去掉自增長(zhǎng),與添加自增長(zhǎng)代碼地區(qū)別就是沒(méi)有auto_increament alter table emp drop primary key;
4、給一張表添加外鍵約束
使用DDL語(yǔ)句添加外鍵約束??梢越o一張表設(shè)置多個(gè)外鍵。
ALTER TABLE 表名 ADD CONSTRAINT 約束名 FOREIGN KEY(列名) REFERENCES 參照的表名(參照的列名); alter table emp add constraint emp_fk foreign key(dept_id) references departments(department_id);
或在在Navicat中添加外鍵。外鍵名稱(chēng)常使用:表名_fk,表名_fk1表示。
5、刪除一張表的外鍵約束
使用DDL 語(yǔ)句刪除外鍵約束?;蛘咴贜avicat中主動(dòng)刪除外鍵。
ALTER TABLE 表名 DROP FOREIGN KEY 約束名; alter table emp drop foreign key emp_fk;
6、給表中某字段添加唯一性約束
使用DDL語(yǔ)句添加唯一性約束?;蛟谠贜avicat中添加唯一性約束。
ALTER TABLE 表名 ADD CONSTRAINT 約束名 UNIQUE(列名); alter table emp add constraint emp_uk unique(name);
7、刪除表中某字段的唯一性約束
使用DDL語(yǔ)句刪除唯一性約束。刪除之前需要弄清楚刪除的約束名是對(duì)哪一個(gè)字段進(jìn)行約束的。
ALTER TABLE 表名 DROP KEY 約束名; alter table emp drop key emp_uk;
8、給表中某個(gè)字段添加非空約束
使用DDL語(yǔ)句添加非空約束?;蛘逳avicat。
ALTER TABLE 表名 MODIFY 列名 類(lèi)型 NOT NULL; alter table emp modify salary float(8,2) not NULL;
9、刪除表中某個(gè)字段的非空約束
使用DDL語(yǔ)句刪除非空約束。
ALTER TABLE 表名 MODIFY 列名 類(lèi)型 NULL; alter table emp modify salary float(8,2) NULL;
上面介紹了當(dāng)一張表已經(jīng)存在之后如何添加約束。下面介紹在一開(kāi)始新建表的時(shí)候如何添加約束。
1、查詢(xún)表中加了哪些約束?
SHOW KEYS FROM 表名;
2、創(chuàng)建表時(shí)添加約束
創(chuàng)建 depts 表包含 department_id 該列為主鍵且自動(dòng)增長(zhǎng),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)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
文章標(biāo)題:mysql中restrict的含義是什么
瀏覽路徑:http://www.2m8n56k.cn/article28/jphsjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站設(shè)計(jì)公司、微信小程序、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)