精講MySQL復雜查詢

張方興

  • 出版商: 清華大學
  • 出版日期: 2024-02-01
  • 售價: $474
  • 貴賓價: 9.5$450
  • 語言: 簡體中文
  • ISBN: 730265350X
  • ISBN-13: 9787302653509
  • 相關分類: MySQLSQL
  • 立即出貨 (庫存 < 4)

  • 精講MySQL復雜查詢-preview-1
  • 精講MySQL復雜查詢-preview-2
  • 精講MySQL復雜查詢-preview-3
精講MySQL復雜查詢-preview-1

買這商品的人也買了...

相關主題

商品描述

本書根據各個公司的SQL復雜查詢面試題進行編寫,可以更好輔助讀者進行針對性的學習。尤其每個SQL復雜查詢面試題都通過步驟的形式進行解讀,而非直接擺出一個答案。對比答案而言,解題思路更為重要。希望學習本書之後,讀者可以擁有一份自己針對復雜查詢的解題思路。 本書共13章,分別對應SQL語句的查詢基礎、多表聯查、元數據的查詢與管理、字符串的查詢與處理、數字的查詢與處理、日期的查詢與處理、JSON和XML的查詢與處理、結果集的查詢與處理、視圖與臨時表、存儲過程與預編譯語句、觸發器與自定義函數、事務與鎖、數據庫備份、復雜查詢面試題等相關內容。 作者精心設計多種案例與復雜查詢題目,非隨意擺出的“難題”,而是基於工作時積攢的業務場景。本書適合初學者入門,適合準備開始面試的學生進行面試準備,適合開發多年卻仍然對復雜查詢心有餘悸的程序員,並可作為高等院校和培訓機構相關專業的教學參考書。

目錄大綱

 

目錄

 

 

 

本書源碼

 

 

 

 

教學課件(PPT)

 

 

 

 

 

第1章SQL語句基礎與精講select關鍵字

 

1.1SQL查詢語句基礎

 

1.1.1SQL簡介

 

1.1.2SQL的語句類型

 

1.1.3關系數據庫的組成

 

1.1.4查詢語句的基本規則

 

1.1.5dual虛擬表

 

1.1.6數字計算符號的特殊情況

 

1.2精講select關鍵字

 

1.2.1select常規語法

 

1.2.2distinct關鍵字

 

1.2.3straight_join關鍵字

 

1.2.4sql_result關鍵字

 

1.2.5sql_cache關鍵字

 

1.2.6group by與having關鍵字

 

1.2.7order by關鍵字

 

1.2.8with rollup關鍵字

 

1.2.9window關鍵字

 

1.2.10limit與offset關鍵字

 

1.2.11limit分頁相關公式

 

1.2.12for關鍵字

 

1.3MySQL 8.0的內置函數與幫助

 

1.3.1瞭解MySQL自帶的實例庫

 

1.3.2通過MySQL 8.0內置文檔瞭解MySQL 8.0函數

 

1.4條件查詢

 

1.4.1MySQL中的比較運算符

 

1.4.2like關鍵字

 

1.4.3strcmp()函數

 

1.4.4MySQL中的正則表達式語法

 

 

第2章子查詢與連接查詢

 

2.1子查詢

 

2.1.1子查詢的作用

 

2.1.2子查詢作為列值

 

2.1.3外層嵌套子查詢

 

2.1.4使用子查詢進行比較

 

2.1.5子查詢的相關關鍵字

 

2.1.6行內子查詢與構造表達式

 

2.1.7子查詢作為派生表

 

2.2連接查詢

 

2.2.1連接查詢語句

 

2.2.2笛卡兒積

 

2.2.3交叉連接

 

2.2.4左連接

 

2.2.5右連接

 

2.2.6拼接

 

2.2.7全連接

 

2.2.8內連接

 

2.2.9並集去交集

 

2.2.10自連接

 

第3章MySQL元數據相關查詢

 

3.1show關鍵字

 

3.1.1show關鍵字查看某實例庫中含有的表

 

3.1.2show關鍵字查看表結構

 

3.1.3show關鍵字查看binlog日誌

 

3.1.4show關鍵字查看相關創建語句信息

 

3.1.5show關鍵字查看MySQL支持哪些引擎

 

3.2數據庫的系統變量元數據與set關鍵字

 

3.2.1set關鍵字用於用戶自定義變量

 

3.2.2set關鍵字用於環境變量

 

3.2.3sql_mode變量

 

3.2.4根據用戶自定義變量增加列的行號

 

3.3表的元數據

 

3.3.1表的元數據查詢

 

3.3.2表信息中的row_format字段

 

3.3.3表信息中的data_free字段

 

3.3.4MySQL各表占用磁盤空間計算方式

 

3.3.5利用optimize關鍵字優化空間碎片

 

3.3.6查看表中的約束

 

3.4列的元數據

 

3.5用戶權限的元數據

 

3.5.1查詢當前MySQL中含有哪些用戶

 

3.5.2用戶的操作權限

 

3.5.3表的操作權限

 

3.5.4列的操作權限

 

第4章SQL字符串的查詢與處理

 

4.1MySQL 8.0中的字符串

 

4.1.1字符、字符集與字符串

 

4.1.2字符集與排序

 

4.1.3字符串各數據類型的存儲空間

 

4.1.4char類型與varchar類型

 

4.1.5varchar類型的長度誤區

 

4.1.6binary類型與varbinary類型

 

4.1.7blob類型與text類型

 

4.1.8enmu類型

 

4.1.9set類型

 

4.2字符串相關常用函數

 

4.2.1concat()函數(多列拼接)

 

4.2.2group_concat()函數(多行拼接)

 

4.2.3replace()函數

 

4.2.4regexp_substr()函數

 

4.2.5substr()函數與substring()函數

 

4.2.6substring_index()函數

 

4.2.7instr()函數與locate()函數

 

4.2.8length()函數

 

4.2.9reverse()函數

 

4.2.10right()函數與left()函數

 

4.2.11rpad()函數

 

4.2.12space()函數

 

4.2.13trim()、rtrim()、ltrim()函數

 

4.2.14upper()函數與lower()函數

 

4.2.15repeat()函數

 

4.2.16insert()函數

 

4.2.17elt()函數

 

4.2.18concat_ws()函數

 

4.3MySQL 8.0處理字符串相關的復雜查詢

 

4.3.1查詢總經理名稱並增加單引號

 

4.3.2將數字數據和字符數據分開

 

4.3.3計算字符串中特定字符出現的次數

 

4.3.4提取分隔符數據中的第N個數據

 

第5章SQL數字的查詢與處理

 

5.1MySQL 8.0的數字

 

5.1.1MySQL 8.0中的數字類型

 

5.1.2tinyint類型、bool類型、boolean類型

 

5.1.3無符號整數類型

 

5.1.4數字類型的精度

 

5.2數字常用函數與運算符

 

5.2.1div()函數

 

5.2.2abs()函數

 

5.2.3ceiling()函數

 

5.2.4floor()函數

 

5.2.5pow()函數和power()函數

 

5.2.6rand()函數

 

5.2.7truncate()函數

 

5.3聚合函數

 

5.3.1count(distinct)函數

 

5.3.2查詢每個部門的平均薪資

 

5.3.3查詢每個部門的薪資最高與最低的人(攜帶提成)

 

5.3.4查詢每個部門的薪資總額

 

5.3.5查詢每個部門有多少人

 

5.3.6查詢每個部門有多少人沒有提成

 

5.3.7查詢某個部門薪資占全公司的百分比

 

5.4窗口函數

 

5.4.1窗口函數的語法

 

5.4.2初步使用窗口函數

 

5.4.3partition by關鍵字

 

5.4.4order by關鍵字

 

5.4.5rank()函數

 

5.4.6dense_rank()函數

 

5.4.7percent_rank()函數

 

5.4.8ntile()函數

 

5.5聚合函數窗口化

 

5.6MySQL 8.0處理數字相關的復雜查詢

 

5.6.1計算眾數

 

5.6.2計算中值

 

第6章SQL日期的查詢與處理

 

6.1MySQL 8.0的日期

 

6.1.1MySQL 8.0中的日期類型

 

6.1.2date類型

 

6.1.3datetime類型

 

6.1.4time類型

 

6.1.5year類型

 

6.2獲取當前日期和時間函數

 

6.3日期的運算

 

6.4日期的比較

 

6.5日期的區間

 

6.6MySQL 8.0中的時區

 

6.7日期相關常用函數

 

6.7.1adddate()與date_sub()

 

6.7.2addtime()

 

6.7.3date()和time()

 

6.7.4timestamp()

 

6.7.5datediff()

 

6.7.6timediff()

 

6.7.7timestampdiff()

 

6.7.8day()等提取函數

 

6.7.9dayname()

 

6.7.10dayofweek()和dayofyear()

 

6.7.11extract()

 

6.7.12from_unixtime()

 

6.7.13str_to_date()與date_format()

 

6.7.14get_format()

 

6.7.15sec_to_time()

 

6.8MySQL 8.0處理日期相關的復雜查詢

 

6.8.1張三今年多少歲

 

6.8.2判斷今年是不是閏年

 

第7章SQL對JSON與XML的查詢與處理

 

7.1MySQL 8.0的JSON

 

7.1.1JSON類型的使用場景

 

7.1.2初識MySQL 8.0中的JSON類型

 

7.2JSON相關常用函數

 

7.2.1json_object()

 

7.2.2json_array()

 

7.2.3json_valid()

 

7.2.4json_contains()

 

7.2.5json_contains_path()

 

7.2.6json_extract()

 

7.2.7json_unquote()

 

7.2.8json_search()

 

7.2.9“-”符號和“-”符號

 

7.2.10json_keys()

 

7.2.11json_value()

 

7.3MySQL 8.0的XML

 

7.4XML相關常用函數

 

7.4.1extractvalue()

 

7.4.2updatexml()

 

第8章SQL對結果集的查詢與處理

 

8.1MySQL 8.0的結果集

 

8.1.1什麽是處理結果集

 

8.1.2處理結果集的方式

 

8.2條件判斷函數

 

8.2.1if()函數

 

8.2.2case關鍵字

 

8.3表的展示方式

 

8.3.1橫表與縱表

 

8.3.2將縱表讀取為橫表進行展示

 

8.3.3將橫表讀取為縱表進行展示——union all寫法

 

8.3.4將橫表讀取為縱表進行展示——max()函數寫法

 

8.4MySQL 8.0處理結果集相關的復雜查詢

 

8.4.1將一行分割為多行

 

8.4.2將多行合並為一行(合並為分隔符數據)

 

8.4.3將多列合並為一列

 

8.4.4將一列分割為多列

 

第9章MySQL的視圖與臨時表

 

9.1MySQL 8.0的視圖

 

9.1.1概念

 

9.1.2語法

 

9.1.3使用示例

 

9.1.4管理

 

9.2MySQL 8.0的with as關鍵字

 

9.2.1概念

 

9.2.2語法

 

9.2.3使用示例

 

9.3MySQL 8.0的臨時表

 

9.3.1概念

 

 

9.3.2語法

 

9.3.3使用示例

 

9.3.4臨時復製表

 

9.4MySQL 8.0的內存表

 

9.4.1概念

 

9.4.2MySQL 8.0內存表和臨時表的區別

 

9.4.3語法

 

9.4.4使用示例

 

9.4.5管理

 

第10章MySQL的存儲過程與預編譯語句

 

10.1MySQL 8.0存儲過程概念

 

10.1.1無參存儲過程的創建與調用

 

10.1.2查看MySQL當前含有的存儲過程

 

10.1.3刪除存儲過程

 

10.1.4體驗存儲過程中含有部分報錯

 

10.2MySQL 8.0存儲過程的參數

 

10.2.1in參數

 

10.2.2out參數

 

10.2.3inout參數

 

10.3MySQL 8.0存儲過程的控制流

 

10.3.1declare關鍵字

 

10.3.2set關鍵字

 

10.3.3if關鍵字

 

10.3.4case關鍵字

 

10.3.5while關鍵字

 

10.3.6repeat關鍵字

 

10.3.7leave關鍵字

 

10.3.8iterate條件語句

 

10.4光標

 

10.4.1SQL中光標的概念

 

10.4.2存儲過程中光標的概念

 

10.5MySQL 8.0的預編譯語句

 

10.5.1概念

 

10.5.2特性

 

10.5.3預編譯語句與存儲過程的區別

 

10.5.4創建無參預編譯語句

 

10.5.5創建有參預編譯語句

 

10.5.6管理及刪除預編譯語句

 

第11章MySQL的觸發器和自定義函數

 

11.1MySQL 8.0觸發器概念

 

11.1.1觸發器特點

 

11.1.2觸發器語法

 

11.1.3觸發器示例

 

11.1.4觸發器管理

 

11.1.5觸發器的刪除

 

11.2MySQL 8.0自定義函數概念

 

11.2.1自定義函數的優點

 

11.2.2自定義函數的語法

 

11.2.3自定義函數示例

 

11.2.4管理及刪除自定義函數

 

11.3signal sqlstate拋出異常概念

 

11.3.1在觸發器中使用signal語句

 

11.3.2在函數中使用signal語句

 

11.3.3在存儲過程中使用signal語句

 

第12章MySQL的事務與鎖

 

12.1事務概念

 

12.1.1事務的關鍵字

 

12.1.2事務的四大特性

 

12.1.3事務的保存點savepoint 

 

12.1.4事務在存儲過程、觸發器、自定義函數中的使用

 

12.2鎖的概念

 

12.2.1行級鎖的概念

 

12.2.2表級鎖的概念

 

12.2.3事務的隔離級別

 

12.2.4死鎖的檢測與解決

 

第13章MySQL備份與復雜查詢面試題

 

13.1備份工具mysqldump

 

13.1.1使用mysqldump以SQL格式轉儲數據

 

13.1.2重新加載SQL格式備份

 

13.1.3使用mysqldump以分割文本格式轉儲數據

 

13.1.4重新加載分隔文本格式備份

 

13.1.5mysqldump小技巧

 

13.2復雜查詢面試題——動漫評分

 

13.2.1涉及的表

 

13.2.2解題步驟

 

13.3復雜查詢面試題——查詢連續出現3次的數字

 

13.3.1涉及的表

 

13.3.2解題步驟——虛擬連接方式

 

13.3.3解題步驟——變量方式

 

13.4復雜查詢面試題——訂單退款率

 

13.4.1涉及的表

 

13.4.2解題步驟

 

附錄ASQL語句分類

 

A.1MySQL 8.0的SQL語句分類

 

A.1.1數據定義類語句

 

A.1.2數據操作類語句

 

A.1.3事務和鎖定類語句

 

A.1.4集群復制類語句

 

A.1.5預編譯類語句

 

A.1.6存儲過程類語句

 

A.1.7數據庫管理類語句

 

A.1.8數據庫工具類語句

 

A.2本書測試表的相關數據及結構

 

A.2.1學校系列表結構

 

A.2.2公司系列表結構