日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql面试必会6题经典_经典sql面试题及答案第7期

發布時間:2023/12/2 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql面试必会6题经典_经典sql面试题及答案第7期 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

delete from salary where not exists (

select wid from worker where worker.wid = salary.wid)

a. 直接創建索引和間接創建索引

直接創建:使用sql語句創建

間接創建:定義主鍵約束或者唯一性鍵約束,可以間接創建索引,主鍵默認為唯一索引。

b. 普通索引和唯一性索引

普通索引:

CREATE INDEX mycolumn_index ON mytable (myclumn)

唯一性索引:保證在索引列中的全部數據是唯一的,對聚簇索引和非聚簇索引都可以使用:

CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)

c. 單個索引和復合索引

單個索引:索引建立語句中僅包含單個字段,如上面的普通索引和唯一性索引創建示例。

復合索引:又叫組合索引,在索引建立語句中同時包含多個字段:

CREATE INDEX name_index ON username(firstname, lastname)

其中firstname為前導列。

d. 聚簇索引和非聚簇索引(聚集索引,群集索引)

聚簇索引:物理索引,與基表的物理順序相同,數據值的順序總是按照順序排列:

CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH ALLOW_DUP_ROW

其中WITH ALLOW_DUP_ROW表示允許有重復記錄的聚簇索引。

非聚簇索引:

CREATE UNCLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)

索引默認為非聚簇索引。

a. 對于復合索引,把使用最頻繁的列做為前導列(索引中第一個字段)。如果查詢時前導列不在查詢條件中則該復合索引不會被使用。如:

create unique index PK_GRADE_CLASS on student (grade, class)

select * from student where class = 2 未使用到索引

select * from dept where grade = 3 使用到了索引

b. 避免對索引列進行計算,對where子句列的任何計算如果不能被編譯優化,都會導致查詢時索引失效。

c. 比較值避免使用NULL

d. 多表查詢時要注意是選擇合適的表做為內表。連接條件要充份考慮帶有索引的表、行數多的表,內外表的選擇可由公式:外層表中的匹配行數*內層表中每一次查找的次數確定,乘積最小為最佳方案。實際多表操作在被實際執行前,查詢優化器會根據連接條件,列出幾組可能的連接方案并從中找出系統開銷最小的最佳方案。

e. 查詢列與索引列次序一致。

f. 用多表連接代替EXISTS子句。

g. 把過濾記錄數最多的條件放在最前面。

h. 善于使用存儲過程,它使sql變得更加靈活和高效。

update B set B.value =

(select A.value from A where A.key = B.key)

where B.id in(select B.id from B, A where B.key = A.key);

事務就是被綁定在一起作為一個邏輯工作單元的SQL語句分組,如果任何一個語句操作失敗那么整個操作就被失敗,以后操作就會回滾到操作前狀態,或者是上有個節點。為了確保要么執行,要么不執行,就可以使用事務。要將有組語句作為事務考慮,就需要通過ACID測試,即原子性,一致性,隔離性和持久性。

在所以的DBMS中,鎖是實現事務的關鍵,鎖可以保證事務的完整性和并發性。與現實生活中鎖一樣,它可以使某些數據的擁有者,在某段時間內不能使用某些數據或數據結構。當然鎖還分級別的。

select * from EMPLOYEE where FIRST_NAME not in ('John','Roy');

游標是對查詢出來的結果集作為一個單元來有效的處理。游標可以定在該單元中的特定行,從結果集的當前行檢索一行或多行。可以對結果集當前行做修改。一般不使用游標,但是需要逐條處理數據的時候,游標顯得十分重要。

數據庫一般的操作是集合操作,也就是對由WHERE子句和選擇列確定的結果集作集合操作,游標是提供的一個非集合操作的途徑。一般情況下,游標實現的功能往往相當于客戶端的一個循環實現的功能,所以,大部分情況下,我們把游標功能搬到客戶端。

游標是把結果集放在服務器內存,并通過循環一條一條處理記錄,對數據庫資源(特別是內存和鎖資源)的消耗是非常大的,所以,我們應該只有在沒有其他方法的情況下才使用游標。

select cid, cname, score, (case when score<60 then 'fail' else 'pass' end) as mark from course;

總結

以上是生活随笔為你收集整理的mysql面试必会6题经典_经典sql面试题及答案第7期的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。