數據庫方面的面試題

面試遇到的題目
1.什麼是索引?
索引:用來提高數據查詢的過濾效率,它類似一個目錄,查詢數據時,通過“目錄”先對數據進行定位,然後直接跳到數據所在的位置。
2.索引的原理?
表只能有一個主鍵,一個表只能有一個聚集索引,因爲主鍵的作用把表的數據格式轉換成平衡樹的格式放置,即表在磁盤上的存儲結構就由整齊排列的結構轉變成了表樹狀結構,
3.爲什麼加索引後會使查詢變快?
加索引後,表的結構爲平衡樹結構,這個結構含有很多節點的樹,從根節點到葉節點有多少層就查找幾次才能得到結果,
這裏寫圖片描述
程序表示:Math.Log(10000000000,10),10000000000是記錄數,10是樹的分叉數,結果就是查找次數,結果從億降到個位數,所以所以會使數據查詢的速度變快
4.爲什麼加索引後會使寫入、修改、刪除變慢?
平衡樹結構必須維持一個正確的狀態,增刪該數據會改變平衡樹各節點索引數據內容,破壞樹結構,因此,每次數據改變時,都要重新梳理樹的機構以確保它的正確,性能就會變慢。
5.怎麼創建索引?
主鍵,外鍵,唯一,都可以創建索引
sql語句:create index 索引名 on 表(字段1,字段2)
爲a字段創建索引
where a =’abc’
where a like ‘abc%’
爲a,b字段創建索引
where a =‘abc’ and b=‘def’
6.什麼情況下索引會失效?
導致索引失效:
a.條件中有or,即使有條件帶索引也不會使用
select * from order where ID =200 or user_id=12 索引會失效
b.對於多列索引,不是使用的第一部分,則不會使用索引。
c.like的模糊查詢以%開頭,索引失效
select * from order where user_name like ‘%w’,索引失效
d.如果列類型爲字符串,一定要在條件中將數據使用引號引用起來,否則索引失效
e.如果mysql預計使用全表掃描比使用索引快,則不適用索引

sql語句的面試題:
1.一個學生表,字段有學生id,name,chenji ,查詢這個班的同名同姓的學生有多少人
select count(name)c
from 表
group by name
having c=‘name’;
2.標準表連接語法
內連接,只查詢連接條件以內的數據
外連接,可以查詢連接條件以外的數據

select
e.employee_id,e.first_name,e.salary,
d.department_name
from employees e
left join departments d
on(e.department_id=d.department_id);

3.事務
事務事由一組sql語句組成,這一組sql語句要麼整體成功,要麼整體失敗
事務的四個特性
a.原子性
b.一致性
c.隔離性
一個事務進行中時,另一事務不能操作數據
d.持久性
提交事務之後,數據持久生效
4.事務操作
啓動事務(begin) ——-提交事務(comit) ——回滾事務(rollback)
5.數據訪問衝突
多個事務並行運行時,同時訪問數據,會造成數據訪問衝突
髒數據
不可重複讀
幻讀
5.事務的隔離級別
4種:讀取未提交,讀取提交,可重複讀,串行化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章