SQL基礎查詢語法(程序工具專欄)

資料庫概要

SQL查詢最基礎語法

目 錄

  1. 基本的SELECT語句
  2. 內置函數和計算
  3. WHERE條件限制——展開
  4. GROUP BY 分組條件——展開
  5. HAVING 過濾分組條件——展開
  6. ORDER BY對結果進行排序————展開
  7. 子查詢——展開
  8. JOIN多表聯合查詢——展開
  9. 小結:

1 基本的SELECT語句

SELECT 語句的基本格式為:

SELECT 要查詢的列名 FROM 表名字 WHERE 限制條件; # 如果要查詢表的所有內容,只需要把列名改成星號 *

# 查詢『員工表』所有內容

SELECT * FROM employee;

列名:id、姓名、年齡、薪水、手機、部門

# 查詢『項目表』所有內容

SELECT * FROM project;

列名:項目id,項目名稱、開始時間、結束時間、所屬部門

# 查詢『部門表』所有內容

SELECT * FROM department;

列名:部門名稱,部門人數

#查詢姓名和年齡

SELECT name,age FROM employee;

2 內置函數和計算

函數名:COUNT SUM AVG MAX MIN

作用: 計數 和 平均值 最大值 最小值

COUNT 函數可用於任何數據類型(因為它只是計數),而 SUM 、AVG 函數都只能對數字類數據類型做計算,MAX 和 MIN 可用於數值、字元串或是日期時間數據類型

# 計算出薪水的數量、平均值和最大值。 as 表示 別名

SELECT count(salary) as number, avg(salary), max(salary) as max_salary FROM employee;

3 WHERE條件限制——展開

3.1 WHERE限制條件可以有數學符號 (=,<,>,>=,<=)

# 篩選出年齡大於 25 的結果

SELECT name,age FROM employee WHERE age>25;

# 查找一個名字為 Tom的員工 # 查詢字元串(文本)要將內容用』』前後括起來

SELECT name,age,phone FROM employee WHERE name=Mary;

3.2 WHERE 後面可以有不止一條限制,而根據條件之間的邏輯關係,可以用 OR(或) 和 AND(且) 連接:

#篩選出 年齡小於 30,或 age 大於 40

SELECT name,age FROM employee WHERE age<30 OR age>40;

3.3 篩選「在」或「不在」某個範圍內的結果,用in或not in

# 查詢在部門3部門4的人:

SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN (dpt3,dpt4);

3.4 關鍵字 LIKE 在SQL語句中和通配符一起使用,通配符代表未知字元。SQL中的通配符是 _ 和 % 。其中 _ 代表一個未指定字元,% 代表不定個未指定字元。

# 電話號碼前四位數為1101,而後兩位忘記了,則可以用兩個 _ 通配符代替:

SELECT name,age,phone FROM employee WHERE phone LIKE 1101__;

4 GROUP BY 分組條件——展開

先將指定欄位有相同內容歸為一組,將所有記錄分類成各個組,然後針對各組進行下一步操作和計算(如求每組數量count,求每組數值和sum,求每組最大值max等)。

# 求每個部門的人數、部門薪水總和、部門最高薪水

SELECT in_dpt, count(id), sum(salary), max(salary)FROM employeeGROUP BY in_dpt;

5 HAVING 過濾分組條件——展開

將分組條件分組計算後的各組的值再進行條件篩選

# 求部門人數在三個人及以上的部門,每個部門的人數、部門薪水總和、部門最高薪水

SELECT in_dpt, count(id), sum(salary), max(salary)FROM employeeGROUP BY in_dptHAVING count(id) > 2;

6 ORDER BY對結果進行排序————展開

對結果按某一列來排序,這就要用到 ORDER BY排序關鍵詞。默認情況下,ORDER BY的結果是升序排列,而使用關鍵詞asc和desc可指定升序或降序排序。

# 按薪水降序排列

SELECT * FROM employee ORDER BY salary desc;

7 子查詢——展開

當查詢條件WHERE的取值範圍需要通過其他表獲取時

# 想要知道名為 "Tom" 的員工所在部門做了幾個工程。員工信息儲存在 employee 表中,但工程信息儲存在project 表中

SELECT COUNT(proj_name) FROM projectWHERE of_dpt in (SELECT in_dpt FROM employee WHERE name=Tom);

8 JOIN多表聯合查詢——展開

子查詢只有在結果來自一個表時才有用。所以需要顯示兩個表或多個表中的數據時需要多表查詢。多表聯合的基本思想是把多個表按指定的相同欄位連接成一個新的表來操作。

# 查詢各員工所在部門的人數

SELECT employee.id, employee.name, department.people_numFROM employee JOIN department ON employee.in_dpt = department.dpt_nameORDER BY id;

9 小結:

7 SELECT (查詢內容)1 FROM <left table> (查詢主表)3 <join type> JOIN <right table> (關聯的表)2 ON <join condition> (兩表關聯條件)4 WHERE (過濾查詢結果的條件)5 GROUP BY (分組條件)6 HAVING (過濾分組的條件)8 ORDER BY (排序條件)# 前面的數字為實際程序執行時的順序,# 要養成良好的代碼格式,該空行空行,該大寫大寫(資料庫操作的詞盡量保持大寫,庫表列內容等盡量保持小寫)

需要詳細語法的移步網盤下載:

pan.baidu.com/s/1Gxu70S


推薦閱讀:

吉利帝豪GS--車主洞察研究
當我們從事數據崗位時我們需要會什麼
運營做數據分析都會犯的幾個錯
精選 | 2018年1月R新包推薦
精分分子的數據分析修行

TAG:數據分析 | 數據 | 產品運營 |