欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql添加、刪除、主鍵(外鍵)方法詳細(xì)講解

 更新時(shí)間:2024年06月03日 09:45:59   作者:愛吃java的羊兒  
MySQL是一種廣泛使用的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在數(shù)據(jù)庫設(shè)計(jì)中主鍵和外鍵是兩個(gè)重要的概念,下面這篇文章主要給大家介紹了關(guān)于Mysql添加、刪除、主鍵(外鍵)方法的相關(guān)資料,需要的朋友可以參考下

主鍵

主鍵會(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)文章

  • MySQL5.0存儲(chǔ)過程教程

    MySQL5.0存儲(chǔ)過程教程

    Introduction 簡(jiǎn)介 MySQL 5.0 新特性教程是為需要了解5.0版本新特性的MySQL老用戶而寫的。簡(jiǎn)單的來說是介紹了“存儲(chǔ)過程、觸發(fā)器、視圖、信息架構(gòu)視圖”,在此感謝譯者陳朋奕的努力.
    2008-04-04
  • 修改mysql默認(rèn)字符集的兩種方法詳細(xì)解析

    修改mysql默認(rèn)字符集的兩種方法詳細(xì)解析

    下面小編就為大家介紹兩種修改mysql默認(rèn)字符集的方法。需要的朋友可以過來參考下
    2013-08-08
  • MySQL group by語句如何優(yōu)化

    MySQL group by語句如何優(yōu)化

    這篇文章主要介紹了MySQL group by語句如何優(yōu)化,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-11-11
  • 如何徹底刪除mysql服務(wù)(清理注冊(cè)表)詳解

    如何徹底刪除mysql服務(wù)(清理注冊(cè)表)詳解

    這篇文章主要給大家介紹了關(guān)于如何徹底刪除mysql服務(wù)(清理注冊(cè)表)的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • MySQL數(shù)據(jù)庫CPU飆升到100%的詳細(xì)解決方案

    MySQL數(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-05
  • MySQL 5.7升級(jí)8.0報(bào)異常:ONLY_FULL_GROUP_BY的問題解決

    MySQL 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-11
  • MySQL實(shí)現(xiàn)分詞搜索(FULLTEXT)的方法

    MySQL實(shí)現(xiàn)分詞搜索(FULLTEXT)的方法

    這篇文章主要介紹了MySQL實(shí)現(xiàn)分詞搜索(FULLTEXT)的方法,包括全文搜索的簡(jiǎn)單使用,建表添加FULLTEXT索引使用該技術(shù)非常簡(jiǎn)單,首先需要有一張表,我建立了一張圖書表并插入了兩條數(shù)據(jù),需要的朋友可以參考下
    2022-10-10
  • SELinux導(dǎo)致PHP連接MySQL異常Can''t connect to MySQL server的解決方法

    SELinux導(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-07
  • SQL GROUP BY 詳解及簡(jiǎn)單實(shí)例

    SQL GROUP BY 詳解及簡(jiǎn)單實(shí)例

    這篇文章主要介紹了SQL GROUP BY 詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • phpstudy無法啟動(dòng)MySQL服務(wù)的完美解決辦法

    phpstudy無法啟動(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

最新評(píng)論