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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

MySQL面试题 | 附答案解析(十四)

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL面试题 | 附答案解析(十四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接上篇!!!

5. 什么是子查詢

(1)QL語句的查詢結果做為另一條查詢語句的條件或查詢結果

(2)SQL語句嵌套使用,內部的SQL查詢語句稱為子查詢。

6. 子查詢的三種情況

(1)詢是單行單列的情況:結果集是一個值,父查詢使用:=、 <、 > 等運算符

– 查詢工資最高的員工是誰?

select * from employee where salary=(select max(salary) from employee);

(2)詢是多行單列的情況:結果集類似于一個數組,父查詢使用:in 運算符

– 查詢工資最高的員工是誰?

select * from employee where salary=(select max(salary) from employee);

(3)是多行多列的情況:結果集類似于一張虛擬表,不能用于where條件,用于select子句中做為子表

– 1) 查詢出2011年以后入職的員工信息

– 2) 查詢所有的部門信息,與上面的虛擬表中的信息比對,找出所有部門ID相等的員工。

select * from dept d, (select * from employee where join_date > ‘2011-1-1’) e where e.dept_id = d.id;

– 使用表連接:select d., e. from dept d inner join employee e on d.id = e.dept_id where e.join_date > ‘2011-1-1’

7. mysql中 in 和 exists 區別

mysql中的in語句是把外表和內表作hash 連接,而exists語句是對外表作loop循環,每次loop循環再對內表進行查詢。一直大家都認為exists比in語句的效率要高,這種說法其實是不準確的。這個是要區分環境的。

(1)果查詢的兩個表大小相當,那么用in和exists差別不大。

(2)如果兩個表中一個較小,一個是大表,則子查詢表大的用exists,子查詢表小的用in。

(3)not in 和not exists:如果查詢語句使用了not in,那么內外表都進行全表掃描,沒有用到索引;而not extsts的子查詢依然能用到表上的索引。所以無論那個表大,用not exists都比not in要快。

8. varchar與char的區別

char的特點

(1)har表示定長字符串,長度是固定的;

(2)如果插入數據的長度小于char的固定長度時,則用空格填充;

(3)因為長度固定,所以存取速度要比varchar快很多,甚至能快50%,但正因為其長度固定,所以會占據多余的空間,是空間換時間的做法;

(4)char來說,最多能存放的字符個數為255,和編碼無關

varchar的特點

(1)varchar表示可變長字符串,長度是可變的;

(2)插入的數據是多長,就按照多長來存儲;

(3)varchar在存取方面與char相反,它存取慢,因為長度不固定,但正因如此,不占據多余的空間,是時間換空間的做法;

(4)對于varchar來說,最多能存放的字符個數為65532總之,結合性能角度(char更快)和節省磁盤空間角度(varchar更小),具體情況還需具體來設計數據庫才是妥當的做法。

9. varchar(50)中50的涵義

最多存放50個字符,varchar(50)和(200)存儲hello所占空間一樣,但后者在排序時會消耗更多內存,因為order by col采用fixed_length計算col長度(memory引擎也一樣)。在早期 MySQL 版本中, 50 代表字節數,現在代表字符數。

10. int(20)中20的涵義

是指顯示字符的長度。20表示最大顯示寬度為20,但仍占4字節存儲,存儲范圍不變;不影響內部存儲,只是影響帶 zerofill 定義的 int 時,前面補多少個 0,易于報表展示

11. mysql為什么這么設計

對大多數應用沒有意義,只是規定一些工具用來顯示字符的個數;int(1)和int(20)存儲和計算均一樣;

12. mysql中int(10)和char(10)以及varchar(10)的區別

(1)(10)的10表示顯示的數據的長度,不是存儲數據的大小;chart(10)和varchar(10)的10表示存儲數據的大小,即表示存儲多少個字符。

int(10) 10位的數據長度 9999999999,占32個字節,int型4位
char(10) 10位固定字符串,不足補空格 最多10個字符
varchar(10) 10位可變字符串,不足補空格 最多10個字符

(2)char(10)表示存儲定長的10個字符,不足10個就用空格補齊,占用更多的存儲空間

(3)varchar(10)表示存儲10個變長的字符,存儲多少個就是多少個,空格也按一個字符存儲,這一點是和char(10)的空格不同的,char(10)的空格表示占位不算一個字符

13. FLOAT和DOUBLE的區別是什么?

(1)FLOAT類型數據可以存儲至多8位十進制數,并在內存中占4字節。

(2)DOUBLE類型數據可以存儲至多18位十進制數,并在內存中占8字節。

14. drop、delete與truncate的區別

三者都表示刪除,但是三者有一些差別:

15. UNION與UNION ALL的區別?

(1)用UNION ALL,不會合并重復的記錄行

(2)效率 UNION 高于 UNION ALL

最后,小編分類整理了許多java進階學習材料和BAT面試給熱愛IT行業的你,如果需要資料的請轉發此文章后再私聊小編回復【java】就能領取2019年java進階學習資料和BAT面試題以及《Effective Java》(第3版)電子版書籍。也可以加群:712263501領取海量學習資料進行學習。

總結

以上是生活随笔為你收集整理的MySQL面试题 | 附答案解析(十四)的全部內容,希望文章能夠幫你解決所遇到的問題。

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