MySQL 索引,外來鍵,事務的操作,實體關係

2021-10-02 03:15:14 字數 3470 閱讀 8247

1.1.概念:

索引可以理解為新華字典的目錄, 作用是 大大大的提高查詢效率.

1.2.常見索引:

主索引(主鍵 primary key)

唯一索引(唯一鍵 unique key)

普通索引(普通鍵 key)

全文索引(fulltext)

1.3.語法:

explain

select查詢語句;

2.1.概念:

外來鍵約束指兩個表之間的跨表的條件約束.

2.2.要求:

a.表引擎必須為 innodb.

b.分為主表(parent table)和從表(child table), 從表引用主表資料

c.要求主表和從表關聯欄位的資料型別嚴格一致.(大小,型別是否有無符號 都要一致)

2.3.外來鍵約束作用

主要是保證主表和從表資料的完整性:

a.從表的關聯字段不能隨意新增資料,必須以主表為準.

b.主表的關聯字段不能隨意修改和刪除(從表如果使用就不能隨意動)

2.4.外來鍵使用的語法:

a.新增外來鍵

alter

table 從表名 add

[constraint

`約束名`

]foreign

key(從表關聯字段)

references 主表名(主表關聯字段)

[高階語法]

;

檢視外來鍵是否新增成功

show

create

table student;

b.刪除外來鍵

alter

table 從表名 drop

foreign

key 約束名字;

c.高階語法

alter

table 從表名 add

[constraint

`約束名`

]foreign

key(從表關聯字段)

references 主表名(主表關聯字段)[on

update 模式 on

delete 模式]

;

2.5 模式三種:

a.預設模式:strict 嚴格

b.級聯模式:cascade , 如果主表字段發生改變, 從表跟著一起改變

c. 置空模式:set null, 如果主表字段發生改變, 從表設定為空

案例分享:

學生表新增乙個外來鍵: 要求主表更新從表一起更新,主表刪除從表設定為null

alter

table student add

foreign

key(class_id)

references class(class_id)

onupdate

cascade

ondelete

setnull

;

3.1.概念:

事務是指連續不可分割的多條sql語句,要麼全部都執行成功,要麼全部回滾到初始狀態.

3.2.作用:

事務是保證資料完整性,一致性,安全性的重要技術.

3.3事務操作 三步:

a.開啟事務: begin;或者start transaction;

b.提交事務: commit;

c.回滾事務: rollback;

3.4.事務的特點:acid

事務的四個特性:原子性,一致性,隔離性,永續性!

a.原子性(atomicity)

事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。

b.一致性(consistency)

事務前後資料的完整性必須保持一致。

c.隔離性(isolation)

多個使用者併發訪問資料庫時,乙個使用者的事務不能被其它使用者的事物所干擾,多個併發事務之間的資料要相互隔離。

d.永續性(durability)

乙個事務一旦被提交,它對資料庫中的資料改變就是永久性的。

三種關係:

一對一:

使用相同的主鍵即作為各自主鍵也作用關聯字段

一對多:

在多的一方的表中設計乙個字段儲存一的一方的主鍵id.

多對多:

新建一張中間關係表,儲存兩個表的主鍵id

案例:實現多對多關係,查詢唐老師帶過哪些班級

班級表和講師表

講師表:

create

table teacher(

t_id int

unsigned

primary

keyauto_increment

comment

'主鍵id'

,t_name varchar(50

)not

null

comment

'姓名'

,t_age tinyint

unsigned

notnull

comment

'年齡'

)engine

=innodb

charset

=utf8 comment

'講師表'

;insert

into teacher(t_name,t_age)

values

("唐老師",30

),("郭老師",30

),("強老師",20

);# 建立班級講師中間關係表

create

table class_teacher(

class_id int

unsigned

notnull

comment

'班級id'

,t_id int

unsigned

notnull

comment

'講師id'

)engine

=innodb

charset

=utf8 comment

'班級講師中間關係表'

;insert

into class_teacher(class_id,t_id)

values(3

,1),

(3,2

),(3

,3),

(2,1

),(4

,1),

(5,1

);# 案例: 查詢唐老師帶過哪些班級

select teacher.t_name,c.class_name

from teacher

join class_teacher as ct on teacher.t_id=ct.t_id

join class as c on ct.class_id=c.class_id

where teacher.t_name =

"唐老師"

Mysql 外來鍵與事務

a.什麼是外來鍵 外來鍵約束是指有關聯的兩個資料表之間的跨表條件約束。b.為什麼使用外來鍵 1.保證主表和從表資料的合理性。2.防止誤刪主表資料。3.限制不合理資料插入從表。a.外來鍵新增 語法 alter table 從表 add constraint 約束名字 foreign key 外來鍵字段...

關於MySQL 外來鍵索引

1 什麼時候需要用到外來鍵索引呢?答 a表中存在唯一索引id a,b表中的字段包含id a,由於b表自身已經有主鍵索引,此時如果將字段id a設定為外來鍵索引索引 foreign key 則建立外來鍵索引。使用場景 1 父表更新時,子表也更新 父表刪除時,如果 2 子表有匹配的項,則刪除失敗。3 父...

mysql外來鍵操作

msyql中提供了兩種方式增加外來鍵 方案1 在建立表的時候增加外來鍵 類似主鍵 基本語法 在字段後增加一條語句 constraint 外鍵名 foreign key 外來鍵字段 references 主表 主鍵 create table my foreign id int primary keya...