有圖有真相!20個經典面試題(基礎版),全部答對月薪10k+!
文 | 酷頭來源:印象python「ID: python_logic」
嗨!大家好,我是酷頭
歡迎來到學習python的寶藏基地~~~
長按下方二維碼可以添加我為好友哦
本文主要使用三個示例表:員工表(employee)、部門表(department)和職位表(job)。下面是這些示例表的結構圖:

部門表(department)包含部門編號(dept_id)和部門名稱(dept_name)字段,主鍵為部門編號。

職位表(job)包含職位編號(job_id)和職位名稱(job_title)字段,主鍵為職位編號。

員工表(employee)包含員工編號(emp_id)、員工姓名(emp_name)、性別(sex)、部門編號(dept_id)、經理編號(manager)、入職日期(hire_date)、職位編號(job_id)、月薪(salary)、獎金(bonus)以及電子郵箱(email)。
主鍵為員工編號,部門編號字段是引用部門表的外鍵,職位編號字段是引用職位表的外鍵,經理編號字段是引用員工表自身的外鍵。


什么是 SQL?SQL 有哪些功能?
答案:SQL 代表結構化查詢語言,它是訪問關系數(shù)據(jù)庫的通用語言,支持數(shù)據(jù)的各種增刪改查操作。
SQL 語句可以分為以下子類:
DQL,數(shù)據(jù)查詢語言。這個就是 SELECT 語句,用于查詢數(shù)據(jù)庫中的數(shù)據(jù)和信息。
DML,數(shù)據(jù)操作語言。包括 INSERT、UPDATE、DELETE 和 MERGE 語句,主要用于數(shù)據(jù)的增加、修改和刪除。
DDL,數(shù)據(jù)定義語言。主要包括 CREATE、ALTER 和 DROP 語句,用于定義數(shù)據(jù)庫中的對象,例如表和索引。
TCL,事務控制語言;主要包括 COMMIT、ROLLBACK 和 SAVEPOINT 語句,用于管理數(shù)據(jù)庫的事務。
DCL,數(shù)據(jù)控制語言。主要包括 GRANT 和 REVOKE 語句,用于控制對象的訪問權限。

SQL 是一種聲明性的編程語言,只需要告訴計算機想要什么內容(what),不需要指定具體怎么實現(xiàn)(how)。通過幾個簡單的英文單詞,
例如 SELECT、INSERT、UPDATE、CREATE、DROP 等,就可以完成大部分的數(shù)據(jù)操作。

如何查看員工表中的姓名和性別?
SELECT?emp_name,?sex?FROM?employee

如何查看員工表中的所有字段?
SELECT?*?FROM?employee

查詢每個員工一年的總收入?
SELECT?emp_name,?(salary?*?12?+?COALESCE(bonus,?0))??Income?FROM?employee;
COALESCE函數(shù)從值列表中返回第一個非NULL的值,當遇到NULL值時將其替換為0。

如何查詢不同性別的員工的信息?
SELECT?*?FROM?employee?WHERE?sex?=?'女';

如何查看月薪范圍位于 8000 到 12000 之間的員工?
SELECT?*?
FROM?employee?
WHERE?salary?BETWEEN?8000?AND?120000

確認員工中有沒有叫做“張三”、“李四” 或“張飛”的人,有的話查出他們的信息。
SELECT?*?
FROM?employee?
WHERE?emp_name?IN('張三',?'李四',?'張飛')

查詢姓名里帶“云”字的員工信息
SELECT?*?
FROM?employee?
WHERE?emp_name?LIKE?'%云%'

查詢有獎金的員工信息
SELECT?*?
FROM?employee?
WHERE?bonus?<>''

查詢2010 年 1 月 1 日之后入職的女員工
SELECT?*?
FROM?employee?
WHERE?sex='女'?
AND?hire_date<'2010-1-1'

去重查詢性別
SELECT?DISTINCT?sex
??FROM?employee;

員工薪水從高到低排序
SELECT?*
FROM?employee
ORDER?BY?salary?DESC

若薪水一致則按照獎金重新排序
SELECT?*
FROM?employee
ORDER?BY?salary?DESC,??bonus?DESC按照多個字段排序時,使用逗號分隔;排序時先按照第一個條件排列,對于排名相同的數(shù)據(jù),再按照第二個條件排列,以此類推。

查詢薪水最高的 3 位員工
SELECT?emp_name,?salary
FROM?employee
ORDER?BY?salary?DESC?LIMIT?3

查詢第 21 名到 25 名員工信息
SELECT?emp_name,?salary
?FROM?employee
ORDER?BY?salary?DESC?LIMIT?3

查詢員工郵箱長度
SELECT?email,LENGTH(email)
FROM?employee

查詢郵箱名稱是“[email protected]”的用戶信息
SELECT?emp_name,?email
FROM?employee
WHERE?UPPER(email)?=?'[email protected]'

以-格式顯示員工的姓名、性別、薪水信息
SELECT?CONCAT_WS('-',?emp_name,?sex,?salary)
FROM?employee

CONCAT_WS - 用分隔符連接字符串。
用分隔符連接字符串,是CONCAT()的一種特殊形式。?
第一個參數(shù)是其余參數(shù)的分隔符。分隔符被添加到要連接的字符串之間。?
分隔符可以是字符串,其余參數(shù)也可以。
如果分隔符為NULL,則結果為NULL。

如何獲取員工郵箱中的用戶名部分( @ 符號之前的字符串)?
SELECT?emp_name,?email,SUBSTRING_INDEX(email,?'@',?1)
FROM?employee
substring_index(input,split,index):input為要截取的字符,split為分隔符,Index為要截取第index個分隔符左(index為正)或右(index為負)的字符串。

將員工郵箱中的“.com”替換為“.net”
SELECT?emp_name,?email,REPLACE(email,?'com','net')
FROM?employee

查看每個員工的工作年限
SELECT?emp_name,?EXTRACT(?YEAR?FROM?CURRENT_DATE)?-?EXTRACT(?YEAR?FROM?HIRE_DATE)
?FROM?employee;
小于 10000 顯示為“低收入”,大于等于 10000 并且小于 20000 顯示為“中等收入”,大于 20000 顯示為“高收入”。
SELECT?emp_name,
?CASE?WHEN?salary?<?10000?THEN?'低收入'?
???WHEN?10000<=?salary?<20000?THEN?'中收入'?
???ELSE??'高收入'?
?END?"薪水等級"
?FROM?employee;


?統(tǒng)計員工的數(shù)量、平均月薪、最高月薪、最低月薪以及月薪的總和?
SELECT?COUNT(*),?AVG(salary),MAX(salary),MIN(salary),SUM(salary)
?FROM?employee;

聚合函數(shù)針對一組數(shù)據(jù)計算出單個結果值。常見的聚會函數(shù)包括:
AVG - 計算一組值的平均值。
COUNT - 統(tǒng)計某個字段的行數(shù)。
MIN - 返回一組值中的最小值。
MAX - 返回一組值中的最大值。
SUM - 計算一組值的和值。

?以下兩個 COUNT 函數(shù)返回的結果是否相同?
SELECT?COUNT(*),?COUNT(bonus)
??FROM?employee;
OK,基礎版本的Mysql今天的分享就到這里啦!下一期我們看進階版的Mysql語句實戰(zhàn)
【印象python】交流群正式開放啦!歡迎掃碼添加老鄧好友,通過后拉你入群。
