Mysql添加、刪除、主鍵(外鍵)方法詳細(xì)講解
主鍵
主鍵會(huì)自動(dòng)添加唯一索引,所以主鍵列不需要添加索引
建表時(shí)設(shè)置主鍵
方法1、
create table student( id int primary key );
方法2、
create table student( id int, primary key (id) );
單獨(dú)設(shè)置主鍵
alter table student add primary key(id)
刪除主鍵
alter table student drop primary key;
外鍵
外鍵是指引用另外一個(gè)表中的一列或多列數(shù)據(jù),被引用的列應(yīng)該具有主鍵約束或者唯一性約束(簡(jiǎn)單來說外鍵是另一個(gè)表的主鍵或者唯一約束)。外鍵可以有重復(fù)的, 可以是空值,用來建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的連接
外鍵的使用
外鍵的使用需要滿足下列的條件:
1、兩張表必須都是InnoDB表,并且它們沒有臨時(shí)表。
2、建立外鍵關(guān)系的對(duì)應(yīng)列必須具有相似的InnoDB內(nèi)部數(shù)據(jù)類型。
3、建立外鍵關(guān)系的對(duì)應(yīng)列必須建立了索引。
創(chuàng)建外鍵的兩種方式:
方式一:在創(chuàng)建表的時(shí)候進(jìn)行添加
方式二:表已經(jīng)創(chuàng)建好了,繼續(xù)修改表的結(jié)構(gòu)來添加外鍵。
建表時(shí)添加外鍵
方法1、
create table teacher( student_id int not null, foreign key(student_id) references student(id) );
alter table teacher add constraint teacher_ref_student(foreignKeyName) foreign key(student_id) references student(id);
方法2、
表1
create table student( id int primary key, --學(xué)生的學(xué)號(hào) )comment '學(xué)生表';
表2
create table score( studentID int, coureseID int, scoreID int primary key, foreign key(studentID) references student(id) --添加外鍵 )comment '成績(jī)表'
單獨(dú)添加外鍵
語法:alter table 表名稱 add foreign key (列名稱) references關(guān)聯(lián)表名稱(列名稱);
eg1:
alter table teacher add constraint teacher_ref_student(foreignKeyName) foreign key(student_id) references student(id);
eg2:
alter table student add foreign key (id) references score(studentID);
刪除外鍵
語法:alter table 表名稱 drop foreign key 外鍵名稱;
eg1:
alter table score drop foreign key score_1;
eg2:
alter table tableName1 drop foreign key foreignKeyName;
唯一鍵
唯一鍵會(huì)自動(dòng)添加唯一索引,所以唯一鍵列不需要添加索引
普通索引
創(chuàng)建一張表
create table member(id int(10) ,name varchar(10) ,age int(18) ,phone int(11) ,address varchar(50),); insert into member values (1,'a','19','111','贛州'); insert into member values (2,'b','24','222','于都'); insert into member values (3,'c','20','333','九江'); insert into member values (4,'d','18','444','南昌'); insert into member values (5,'e','16','555','吉安');
方法一:直接創(chuàng)建索引
CREATE INDEX 索引名 ON 表名 (列名(length));
- (列名(length)):length是可選項(xiàng),下同。如果忽略length 的值,則使用整個(gè)列的值作為索引。如果指定,使用列的前l(fā)ength個(gè)字符來創(chuàng)建索引,這樣有利于減小索引文件的大小。在不損失精確性的情況下,長(zhǎng)度越短越好。
- 索引名建議以“index"結(jié)尾。
create index name_index on member(name); 以name字段創(chuàng)建普通索引 ? create index cardid_index on member(cardid(4)); 指定cardid字段值的前4個(gè)字符做普通索引的值
方法二:修改表方式創(chuàng)建索引
ALTER TABLE 表名 ADD INDEX 索引名(列名);
ALTER TABLE member ADD INDEX phone_index(phone); 以phone字段創(chuàng)建普通索引
方法三:創(chuàng)建表時(shí)指定索引
一般不在創(chuàng)建表的時(shí)候添加索引,會(huì)讓插入數(shù)據(jù)變慢。
CREATE TABLE 表名(字段1數(shù)據(jù)類型,字段2數(shù)據(jù)類型[,...],INDEX 索引名 (列名));
create table member(id int(10) ,name varchar(10) ,cardid int(18), phone int(11) ,address varchar(50), INDEX name_index(name));
刪除索引:
drop index name_index on member; --直接刪除索引? drop index cardid_index on member; --直接刪除索引? alter table member DROP index phone_index; --以修改表的方式刪除索引
唯一索引(創(chuàng)建唯一鍵即創(chuàng)建唯一索引)
唯一索引:與普通索引類似,但區(qū)別是唯一索引列的每個(gè)值都唯一。 唯一索引 允許有空值(注意和主鍵不同)。如果是用組合索引創(chuàng)建,則列值的組合必須唯一。添加唯一鍵將自動(dòng)創(chuàng)建唯一索引。
創(chuàng)建唯一鍵或者創(chuàng)建唯一索引都可實(shí)現(xiàn)。
方法一:直接創(chuàng)建唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名(字段名);
create unique index address_index on member (address);
方法二:以修改表的方式創(chuàng)建
ALTER TABLE 表名 ADD UNIQUE 索引名(字段名);
alter table member add unique phone_index(phone);
方法三:創(chuàng)建表時(shí)指定索引
CREATE TABLE 表名(字段1 數(shù)據(jù)類型,字段2 數(shù)據(jù)類型[...],UNIQUE 索引名(字段名));
create table member(id int(10) ,name varchar(10) ,cardid int(18) ,phone int(11) ,address varchar(50),unique phone_index(phone));
主鍵索引(和創(chuàng)建主鍵的方式一樣)
主鍵索引是一種特殊的唯一索引,必須指定為“PRIMARY KEY”。一個(gè)表只能有一個(gè)主鍵,不允許有空值。 添加主鍵將自動(dòng)創(chuàng)建主鍵索引。
方法一:創(chuàng)建表時(shí)添加主鍵
create table 表名(字段1 XXX, 字段2 XXX, ...primary key(字段));
create table 表名(字段1 XXX primary key, ...); 將主鍵作為字段1的屬性
create table student(id int(10),name varchar(10),primary key(id)); ? create table student(id int(10) primary key,name varchar(10));
方法二:在現(xiàn)有表中添加主鍵
ALTER TABLE 表名 add primary key(字段名);
ALTER TABLE member add primary key(id); --將id字段添加為主鍵
組合索引(單列索引與多列索引)
組合索引(單列索引與多列索引):可以是單列上創(chuàng)建的索引,也可以是在多列上創(chuàng)建的索引。
需要滿足最左原則,因?yàn)閟elect 語句的where條件是依次從左往右執(zhí)行的,所以在使用select 語句查詢時(shí)where 條件使用的字段順序必須和組合索引中的排序一致,否則索引將不會(huì)生效。
方法一:直接創(chuàng)建索引
CREATE INDEX 索引名 on 表名(字段1,字段2,字段3);
create index name_cardid_phone_index on member3(name,cardid,phone); 使用3個(gè)字段創(chuàng)建組合索引 alter table member3 drop index name_cardid_phone_index; 刪除組合索引 遵循最左原則
方法二:修改表的方式創(chuàng)建索引
alter table 表名 add index 索引名(字段1,字段2, ..., 字段n);
alter table member add index phone_name_cardid_index(phone,name,cardid);
方法三:創(chuàng)建表的時(shí)候指定索引
CREATE TABLE 表名(列名1 數(shù)據(jù)類型,列名2 數(shù)據(jù)類型,列名3 數(shù)據(jù)類型, INDEX 索引名(字段1,字段2,字段3));
create table member(id int(10),name varchar(10),phone int(11),index name_phone_index(name,phone));
總結(jié)
到此這篇關(guān)于Mysql添加、刪除、主鍵(外鍵)方法的文章就介紹到這了,更多相關(guān)Mysql添加刪除主鍵外鍵內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
修改mysql默認(rèn)字符集的兩種方法詳細(xì)解析
下面小編就為大家介紹兩種修改mysql默認(rèn)字符集的方法。需要的朋友可以過來參考下2013-08-08如何徹底刪除mysql服務(wù)(清理注冊(cè)表)詳解
這篇文章主要給大家介紹了關(guān)于如何徹底刪除mysql服務(wù)(清理注冊(cè)表)的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03MySQL數(shù)據(jù)庫CPU飆升到100%的詳細(xì)解決方案
在監(jiān)控線上數(shù)據(jù)庫的運(yùn)行是否安全、正常的過程中,cpu使用率是一個(gè)重要的指標(biāo),一旦cpu使用率飆升至90%+甚至達(dá)到100%,必然會(huì)對(duì)數(shù)據(jù)庫的正常工作產(chǎn)生影響,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫CPU飆升到100%的詳細(xì)解決方案,需要的朋友可以參考下2023-05-05MySQL 5.7升級(jí)8.0報(bào)異常:ONLY_FULL_GROUP_BY的問題解決
本文主要介紹了MySQL 5.7升級(jí)8.0報(bào)異常的問題解決,主要是ONLY_FULL_GROUP_BY,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11MySQL實(shí)現(xiàn)分詞搜索(FULLTEXT)的方法
這篇文章主要介紹了MySQL實(shí)現(xiàn)分詞搜索(FULLTEXT)的方法,包括全文搜索的簡(jiǎn)單使用,建表添加FULLTEXT索引使用該技術(shù)非常簡(jiǎn)單,首先需要有一張表,我建立了一張圖書表并插入了兩條數(shù)據(jù),需要的朋友可以參考下2022-10-10SELinux導(dǎo)致PHP連接MySQL異常Can''t connect to MySQL server的解決方法
這篇文章主要介紹了SELinux導(dǎo)致PHP連接MySQL異常Can't connect to MySQL server的解決方法,有2種,一是設(shè)置允許,二是關(guān)閉SELinux,需要的朋友可以參考下2014-07-07SQL GROUP BY 詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了SQL GROUP BY 詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-01-01phpstudy無法啟動(dòng)MySQL服務(wù)的完美解決辦法
學(xué)習(xí)php當(dāng)然是要先安裝好運(yùn)行環(huán)境了,phpstyudy是一個(gè)運(yùn)行php的集成環(huán)境,一鍵安裝對(duì)新手很友好,下面這篇文章主要給大家介紹了關(guān)于phpstudy無法啟動(dòng)MySQL服務(wù)的完美解決辦法,需要的朋友可以參考下2022-06-06