数据库mysql面试题 it_【模块三】数据库篇--MySQL面试题☞参考答案
【一】初級(jí)
【二】中級(jí)
執(zhí)行過程
【1】客戶端向MySQL服務(wù)器發(fā)送一條查詢請(qǐng)求
【2】服務(wù)器首先檢查查詢緩存,如果命中緩存,則立刻返回存儲(chǔ)在緩存中的結(jié)果。否則進(jìn)入下一階段
【3】服務(wù)器進(jìn)行SQL解析、預(yù)處理、再由優(yōu)化器生成對(duì)應(yīng)的執(zhí)行計(jì)劃
【4】MySQL根據(jù)執(zhí)行計(jì)劃,調(diào)用存儲(chǔ)引擎的API來執(zhí)行查詢
【5】將結(jié)果返回給客戶端,同時(shí)緩存查詢結(jié)果
多種Join
交集:
select * from A inner join B on A.key = B.key
并集:
select * from A full outer join B on A.key = B.key
差集:
select * from A left outer join B on A.key = B.key where B.key IS NULL
select * from A right outer join B on A.key = B.key where A.key IS NULL
以A表為主表,A表數(shù)據(jù)全部取到
select * from A left outer join B on A.key = B.key
以B表為主表,B表數(shù)據(jù)全部取到
select * from A right outer join B on A.key = B.key
取A,B全集,并去掉A,B的交集
select * from A full outer join B on A.key = B.key where A.key IS NULL or B.key IS NULL
數(shù)據(jù)庫設(shè)計(jì)
表結(jié)構(gòu)設(shè)計(jì):遵循三范式 NF(Normal Form)
(1)簡(jiǎn)單歸納:
第一范式(1NF):字段不可分
第二范式(2NF):有主鍵,非主鍵字段依賴主鍵
第三范式(3NF):非主鍵字段不能相互依賴
(2)本質(zhì)解釋:
1NF:原子性。 字段不可再分,否則就不是關(guān)系數(shù)據(jù)庫
2NF:唯一性 。一個(gè)表只說明一個(gè)事物
3NF:每列都與主鍵有直接關(guān)系,不存在傳遞依賴
字段設(shè)計(jì)
1.字段類型選擇:盡量小
--變長(zhǎng)字段使用varchar,定長(zhǎng)使用char
--冗余字段,合理參考范式,以空間換時(shí)間
--int類型詳解:https://www.jb51.net/article/93777.htm
Q:int(3)中數(shù)字3的含義是什么?
答:這里的3代表的并不是存儲(chǔ)在數(shù)據(jù)庫中的具體的長(zhǎng)度,以前總是會(huì)誤以為int(3)只能存儲(chǔ)3個(gè)長(zhǎng)度的數(shù)字.不論是int(3)還是int(11),它在數(shù)據(jù)庫里面存儲(chǔ)的都是4個(gè)字節(jié)的長(zhǎng)度。加上zerofill后,,才能看出3代表的效果,比如 int(3) zerofill,當(dāng)你插入到數(shù)據(jù)庫里的是10,則實(shí)際插入為010,插入的數(shù)字超過3位,定義的3不再起作用。
Q:不同int型后的默認(rèn)位數(shù)M分別是多少?
答: TINYINT[(M)] [UNSIGNED] [ZEROFILL]? M默認(rèn)為4
SMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為6
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為9
INT[(M)] [UNSIGNED] [ZEROFILL]?? M默認(rèn)為11
BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為20
2.命名規(guī)則
-多個(gè)單詞以 "_" 連接
-重要數(shù)據(jù)表模型加上create_user,create_time,last_modify_user,last_modify_time字段
3.主鍵
-每張表必須建立一個(gè)自增id作為主鍵
4.索引
-where限定條件后查詢字段加索引
SQL優(yōu)化
【三】高級(jí)
總結(jié)
以上是生活随笔為你收集整理的数据库mysql面试题 it_【模块三】数据库篇--MySQL面试题☞参考答案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 试管婴儿的大概费用
- 下一篇: dapperpoco mysql_.NE