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...