最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

主鍵

主鍵會自動添加唯一索引,所以主鍵列不需要添加索引

建表時設置主鍵

方法1、

create table student(
	id int primary key
);

方法2、

create table student(
	id int,
	primary key (id)
);

單獨設置主鍵

alter table student add primary key(id)

刪除主鍵

alter table student drop primary key;

外鍵

外鍵是指引用另外一個表中的一列或多列數(shù)據(jù),被引用的列應該具有主鍵約束或者唯一性約束(簡單來說外鍵是另一個表的主鍵或者唯一約束)。外鍵可以有重復的, 可以是空值,用來建立和加強兩個表數(shù)據(jù)之間的連接

外鍵的使用

外鍵的使用需要滿足下列的條件:

1、兩張表必須都是InnoDB表,并且它們沒有臨時表。

2、建立外鍵關系的對應列必須具有相似的InnoDB內部數(shù)據(jù)類型。

3、建立外鍵關系的對應列必須建立了索引。

創(chuàng)建外鍵的兩種方式:

方式一:在創(chuàng)建表的時候進行添加

方式二:表已經(jīng)創(chuàng)建好了,繼續(xù)修改表的結構來添加外鍵。

建表時添加外鍵

方法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,   --學生的學號
)comment '學生表';

表2

create table score(
studentID	int,
coureseID int,		
scoreID int primary key,	
foreign	key(studentID) references student(id)  --添加外鍵 
)comment '成績表'

單獨添加外鍵

語法:alter table 表名稱 add foreign key (列名稱) references關聯(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;

唯一鍵

唯一鍵會自動添加唯一索引,所以唯一鍵列不需要添加索引

普通索引

創(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是可選項,下同。如果忽略length 的值,則使用整個列的值作為索引。如果指定,使用列的前l(fā)ength個字符來創(chuàng)建索引,這樣有利于減小索引文件的大小。在不損失精確性的情況下,長度越短越好。
  • 索引名建議以“index"結尾。
 create index name_index on member(name);  以name字段創(chuàng)建普通索引 ?
 create index cardid_index on member(cardid(4));  指定cardid字段值的前4個字符做普通索引的值

方法二:修改表方式創(chuàng)建索引

ALTER TABLE 表名 ADD INDEX 索引名(列名);

ALTER TABLE member ADD INDEX phone_index(phone);   以phone字段創(chuàng)建普通索引

方法三:創(chuàng)建表時指定索引

一般不在創(chuàng)建表的時候添加索引,會讓插入數(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ū)別是唯一索引列的每個值都唯一。 唯一索引 允許有空值(注意和主鍵不同)。如果是用組合索引創(chuàng)建,則列值的組合必須唯一。添加唯一鍵將自動創(chuàng)建唯一索引。

創(chuàng)建唯一鍵或者創(chuàng)建唯一索引都可實現(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)建表時指定索引

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”。一個表只能有一個主鍵,不允許有空值。 添加主鍵將自動創(chuàng)建主鍵索引。

方法一:創(chuàng)建表時添加主鍵

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)建的索引。

需要滿足最左原則,因為select 語句的where條件是依次從左往右執(zhí)行的,所以在使用select 語句查詢時where 條件使用的字段順序必須和組合索引中的排序一致,否則索引將不會生效。

方法一:直接創(chuàng)建索引

CREATE INDEX 索引名 on 表名(字段1,字段2,字段3);

create index name_cardid_phone_index on member3(name,cardid,phone);   使用3個字段創(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)建表的時候指定索引

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));

總結 

到此這篇關于Mysql添加、刪除、主鍵(外鍵)方法的文章就介紹到這了,更多相關Mysql添加刪除主鍵外鍵內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解MySQL和Redis如何保證數(shù)據(jù)一致性

    詳解MySQL和Redis如何保證數(shù)據(jù)一致性

    MySQL與Redis都是常用的數(shù)據(jù)存儲和緩存系統(tǒng),為了提高應用程序的性能和可伸縮性,很多應用程序將MySQL和Redis一起使用,其中MySQL作為主要的持久存儲,而Redis作為主要的緩存,那么本文就給大家介紹一下MySQL和Redis如何保證數(shù)據(jù)一致性,需要的朋友可以參考下
    2023-08-08
  • MySQL函數(shù)大全及用法示例分享

    MySQL函數(shù)大全及用法示例分享

    這篇文章主要介紹了MySQL的一些函數(shù)及用法示例,需要的朋友可以參考下
    2014-03-03
  • sql和MySQL的語句執(zhí)行順序分析

    sql和MySQL的語句執(zhí)行順序分析

    本文就sql和mysql的語句執(zhí)行順序問題向大家作了詳細介紹,小編覺得挺不錯的,這里分享下,供大家參考。
    2017-10-10
  • MySQL的InnoDB存儲引擎的數(shù)據(jù)頁結構詳解

    MySQL的InnoDB存儲引擎的數(shù)據(jù)頁結構詳解

    這篇文章主要為大家詳細介紹了MySQL的InnoDB存儲引擎的數(shù)據(jù)頁結構,,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • win10下mysql5.7.21解壓版安裝教程

    win10下mysql5.7.21解壓版安裝教程

    這篇文章主要為大家詳細介紹了win10下mysql5.7.21解壓版安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • mysql日志系統(tǒng)redo log和bin log介紹

    mysql日志系統(tǒng)redo log和bin log介紹

    這篇文章主要介紹了mysql日志系統(tǒng)redo log和bin log介紹,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 刪除mysql服務的具體方法

    刪除mysql服務的具體方法

    在本篇文章里小編給各位分享了是關于刪除mysql服務的具體方法,需要的朋友們可以學習下。
    2020-07-07
  • 使用logrotete定時切割mysql的慢日志操作

    使用logrotete定時切割mysql的慢日志操作

    本文介紹了如何在Linux系統(tǒng)中使用logrotate工具對MySQL慢查詢日志進行自動輪轉和管理配置,包括創(chuàng)建配置文件、設置輪轉頻率、文件命名、權限、執(zhí)行腳本以及測試配置的方法,感興趣的朋友一起看看吧
    2025-03-03
  • Mysql?遠程連接遇到的問題排查

    Mysql?遠程連接遇到的問題排查

    無法連接到遠程MySQL數(shù)據(jù)庫可能是由于多種原因導致的,本文主要介紹了Mysql遠程連接遇到的問題排查,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • 深入理解Mysql中的MVCC

    深入理解Mysql中的MVCC

    這篇文章主要介紹了深入理解Mysql中的MVCC,同樣的sql查詢語句在一個事務?里多次執(zhí)行查詢結果相同,就算其它事務對數(shù)據(jù)有修改也不會影響當前事務sql語句的查詢結果,?這個隔離性就是靠MVCC機制來保證的,需要的朋友可以參考下
    2023-09-09

最新評論

丹凤县| 长泰县| 富顺县| 扶绥县| 兴文县| 淮安市| 大城县| 蓬安县| 安达市| 桑日县| 洛宁县| 遵化市| 中牟县| 中超| 保靖县| 湘西| 泌阳县| 汉源县| 平安县| 鹤岗市| 虎林市| 东港市| 方城县| 益阳市| 九龙坡区| 连州市| 华阴市| 河津市| 浮山县| 房山区| 海伦市| 太谷县| 积石山| 临桂县| 明水县| 通化市| 平定县| 炎陵县| 突泉县| 武宣县| 玉门市|