精講MySQL復雜查詢
張方興
買這商品的人也買了...
-
$480$379 -
$407圖解 TCP/IP 網絡知識輕鬆入門
-
$4,720$4,626 -
$620$484 -
$520$406 -
$68$68 -
$403Spring 5 設計模式
-
$662敏捷測試 : 以持續測試促進持續交付
-
$2,100$1,995 -
$500$395 -
$599$569 -
$580$458 -
$510深度探索 Go語言 — 對象模型與 runtime 的原理、特性及應用
-
$580$458 -
$594$564 -
$650$507 -
$600$450 -
$880$695 -
$342$325 -
$359$341 -
$690$545 -
$580$458 -
$680$537 -
$650$507 -
$630$498
相關主題
商品描述
本書根據各個公司的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公司系列表結構