十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
1、打開navicat工具,連接上mysql服務(wù)器,選擇完數(shù)據(jù)庫之后,選擇一個(gè)表右擊選擇設(shè)計(jì)表(這里為了演示測試,隨便選擇一個(gè)表即可)。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供岱岳網(wǎng)站建設(shè)、岱岳做網(wǎng)站、岱岳網(wǎng)站設(shè)計(jì)、岱岳網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、岱岳企業(yè)網(wǎng)站模板建站服務(wù),十余年岱岳做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
2、在設(shè)計(jì)表頁面,可以看到當(dāng)前表的所有字段信息,我們選擇的學(xué)生表有一個(gè)id字段,目前該表沒有主鍵字段。
3、如圖,在最后一列右擊選擇主鍵,即可將該字段設(shè)置為主鍵,也可以直接點(diǎn)擊鼠標(biāo)左鍵,可以快速添加和取消主鍵。
4、設(shè)置完主鍵之后,可以看到一把鎖的標(biāo)志,并且有一個(gè)1字,因?yàn)橐粋€(gè)表可以給多個(gè)字段添加主鍵,則為聯(lián)合主鍵,這樣就顯示為主鍵1,主鍵2等。
5、主鍵設(shè)置完成之后,還沒有自增,選擇id字段之后,在下方,如圖,勾選自動(dòng)遞增,這樣id在每次插入記錄之后都會(huì)自增一個(gè)值。
6、設(shè)置完成主鍵和自增之后,點(diǎn)擊保存,關(guān)閉當(dāng)前窗口,然后選擇表名右擊選擇對象信息。
7、在DLL頁面中,可以看到剛剛添加的主鍵和自增的DLL語句,這里就是創(chuàng)建表的DLL語句。
8、上面有提到聯(lián)合主鍵,其實(shí)一個(gè)表可以給多個(gè)字段設(shè)置主鍵,這樣可以組成聯(lián)合主鍵,對于特定的業(yè)務(wù),聯(lián)合主鍵也是必須的。
mysql設(shè)置UUID為主鍵需要先將數(shù)據(jù)類型設(shè)置為VARCHAR(36),然后插入數(shù)據(jù)的時(shí)候用UUID函數(shù)插入U(xiǎn)UID。下面我用win10系統(tǒng)下的CMD命令行具體演示一下:
1、打開CMD,輸入mysql -uroot -p命令連接mysql,如下圖所示
2、通過create創(chuàng)建表,指定ID為varchar(36),并設(shè)置為主鍵,如下圖所示
3、在插入數(shù)據(jù)的時(shí)候,調(diào)用uuid()函數(shù)往主鍵字段里插入uuid值,如下圖所示
4、最后查詢插入的數(shù)據(jù)就可以看到id主鍵列存放的是uuid類型了,如下圖所示
mysql設(shè)置主鍵的代碼是PRIMARY KEY (主鍵字段)。
如:CREATE TABLE Customer (SID integer,Last_Name varchar(30),F(xiàn)irst_Name varchar(30),PRIMARY KEY (SID))。
主關(guān)鍵字(主鍵,primary key)是被挑選出來,作表的行的唯一標(biāo)識的候選關(guān)鍵字。一個(gè)表只有一個(gè)主關(guān)鍵字。主關(guān)鍵字又可以稱為主鍵。
擴(kuò)展資料:
永遠(yuǎn)也不要更新主鍵。實(shí)際上,因?yàn)橹麈I除了唯一地標(biāo)識一行之外,再?zèng)]有其他的用途了,所以也就沒有理由去對它更新。如果主鍵需要更新,則說明主鍵應(yīng)對用戶無意義的原則被違反了。
主鍵應(yīng)當(dāng)由計(jì)算機(jī)自動(dòng)生成。如果由人來對主鍵的創(chuàng)建進(jìn)行干預(yù),就會(huì)使它帶有除了唯一標(biāo)識一行以外的意義。一旦越過這個(gè)界限,就可能產(chǎn)生人為修改主鍵的動(dòng)機(jī),這樣,這種系統(tǒng)用來鏈接記錄行、管理記錄行的關(guān)鍵手段就會(huì)落入不了解數(shù)據(jù)庫設(shè)計(jì)的人的手中。
1.主鍵語法
①創(chuàng)建時(shí):create table sc (
studentno int,
courseid int,
score int,
primary key (studentno) );
②修改時(shí):ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名);
前提是原先沒有設(shè)置主鍵。
2.外鍵語法
①創(chuàng)建時(shí):create table sc (
studentno int,
courseid int,
score int,
foreign key (courseid) );
②修改時(shí):
ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[約束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ;
3.使用組合主鍵
如果一列不能唯一區(qū)分一個(gè)表里的記錄時(shí),可以考慮多個(gè)列組合起來達(dá)到區(qū)分表記錄的唯一性,形式
①創(chuàng)建時(shí):create table sc (
studentno int,
courseid int,
score int,
primary key (studentno,courseid) );
②修改時(shí):alter table tb_name add primary key (字段1,字段2,字段3);
前提是原來表中沒有設(shè)置主鍵,若原先已有主鍵則會(huì)報(bào)錯(cuò)。
1.外鍵的作用,主要有兩個(gè):
一個(gè)是讓數(shù)據(jù)庫自己通過外鍵來保證數(shù)據(jù)的完整性和一致性
一個(gè)就是能夠增加ER圖的可讀性
2.外鍵的配置
1)先創(chuàng)建一個(gè)主表,代碼如下:
#創(chuàng)建表student,并添加各種約束
create table student
(
id int primary key , #主鍵約束
name varchar(20) , #唯一約束
age int NOT NULL, #非空約束
sex varchar(2) ,
address varchar(20) default '重慶' #默認(rèn)約束
) ;
再通過一個(gè)外鍵,創(chuàng)建一個(gè)分?jǐn)?shù)表,這樣的話,就可以方便查詢。代碼如下:
#創(chuàng)建分?jǐn)?shù)表
create table score
(
id int primary key ,
sid int ,
china int ,
history int,
english int,
constraint FK_sid foreign key(sid) references student(id) #通過外鍵創(chuàng)建鏈接
) ;
創(chuàng)建外鍵的方法有很多,其中最常見創(chuàng)建外鍵的格式是:constraint FK_*** foreign key(**) references 鏈接的外表
刪除外鍵:
alter table drop foreign key '外鍵名'.
注意:
只有在定義外鍵時(shí),用constraint 外鍵名 foreign key .... 方便進(jìn)行外鍵的刪除
主鍵是唯一標(biāo)示這一行的,就好像你的身份證號一樣,每個(gè)人只有一個(gè),也是唯一能證明你是你的東西。外鍵是別人執(zhí)行你的東西。也就是說如果一個(gè)人想和你有點(diǎn)關(guān)系怎么辦,那就要關(guān)聯(lián)起來,怎么關(guān)聯(lián)起來,就通過外鍵啊
定義主鍵和外鍵主要是為了維護(hù)關(guān)系數(shù)據(jù)庫的完整性,總結(jié)一下:
一、主鍵是能確定一條記錄的唯一標(biāo)識,比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個(gè)人的,其他都可能有重復(fù),所以,身份證號是主鍵。
外鍵用于與另一張表的關(guān)聯(lián)。是能確定另一張表記錄的字段,用于保持?jǐn)?shù)據(jù)的一致性。比如,A表中的一個(gè)字段,是B表的主鍵,那他就可以是A表的外鍵。
自增?
主鍵自增:
CREATE?TABLE???test
(
id?INT?UNSIGNED?NOT?NULL?PRIMARY?KEY?AUTO_INCREMENT,
username?VARCHAR(15)?NOT?NULL
)AUTO_INCREMENT?=?100;
可在建表時(shí)可用“AUTO_INCREMENT=n”選項(xiàng)來指定一個(gè)自增的初始值。
alter?table?tbname?auto_increment?=?x?;
設(shè)置表tbname的唯一auto_increment字段起始值從x開始,如果此表數(shù)據(jù)量很多的話,這樣執(zhí)行起來會(huì)很慢
AUTO_INCREMENT說明:
(1)如果把一個(gè)NULL插入到一個(gè)AUTO_INCREMENT數(shù)據(jù)列里去,MySQL將自動(dòng)生成下一個(gè)序列編號。編號從1開始,并1為基數(shù)遞增。
(2)把0插入AUTO_INCREMENT數(shù)據(jù)列的效果與插入NULL值一樣。但不建議這樣做,還是以插入NULL值為好。
(3)當(dāng)插入記錄時(shí),沒有為AUTO_INCREMENT明確指定值,則等同插入NULL值。
(4)當(dāng)插入記錄時(shí),如果為AUTO_INCREMENT數(shù)據(jù)列明確指定了一個(gè)數(shù)值,則會(huì)出現(xiàn)兩種情況,情況一,如果插入的值與已有的編號重復(fù),則會(huì)出現(xiàn)出錯(cuò)信息,因?yàn)锳UTO_INCREMENT數(shù)據(jù)列的值必須是唯一的;情況二,如果插入的值大于已編號的值,則會(huì)把該插入到數(shù)據(jù)列中,并使在下一個(gè)編號將從這個(gè)新值開始遞增。也就是說,可以跳過一些編號。
(5)如果用UPDATE命令更新自增列,如果列值與已有的值重復(fù),則會(huì)出錯(cuò)。如果大于已有值,則下一個(gè)編號從該值開始遞增。