(四)DQL查詢資料(最重點)
4.1 DQL
Data Query Language 資料查詢語言
1 所有的查詢操作都用它 Select
2 簡單的查詢,複雜的查詢它都能做
3 資料庫中最核心的語言,最重要的語句
4 使用頻率最高的語句
4.2 指定查詢欄位
-- 查詢全部的學生
-- SELECT 欄位 FROM 表
SELECT * FROM student
SELECT * FROM result
-- 查詢指定欄位
SELECT `StudentNo`,`StudentName` FROM student
-- 別名,給結果起一個名字 AS 可以給欄位起別名,也可以給表起別名
SELECT `StudentNo` AS 學號,`StudentName` AS 學生姓名 FROM student AS s
-- 函式 CONCAT(str1,str2,...)
SELECT CONCAT('姓名: ',StudentName) AS 新名字 FROM student
有的時候,列名字不是那麼的見名知意。我們起別名
AS
欄位名 as 別名 `StudentNo` AS 學號
表名 as 別名 student AS s
去重 distinct
-- 查詢一下有哪些同學參加了考試,成績
-- 查詢全部的考試成績
SELECT * FROM result
-- 查詢有哪些同學參加了考試
SELECT `StudentNo` FROM result
-- 發現重複資料,去重
SELECT DISTINCT `StudentNo` FROM result
去除SELECT查詢出來的結果中重複的資料,重複的資料只顯示一條
資料庫的列(表示式)
-- 查詢系統版本
SELECT VERSION() (函式)
-- 用來計算
SELECT 100*3-1 AS 計算結果 (表示式)
-- 查詢自增的步長
SELECT @@auto_increment_increment (變數)
-- 學院考試成績 + 1分檢視
SELECT `StudentNo`,`StudentResult`+1 AS '提分後' FROM result
資料庫中的表示式:
文字值,列,Null,函式,計算表示式,系統變數......
select 表示式 from 表
SELECT `StudentNo` FROM result
4.3 where 條件子句
作用:檢索資料中符合條件的值
搜尋的條件由一個或多個表示式組成,結果為 布林值
邏輯運算子
運算子 | 語法 | 描述 |
and && | a and b a&&b | 邏輯與 |
or || | a or b a||b | 邏輯或 |
not ! | not a !a | 邏輯非 |
儘量使用英文字母
模糊查詢:比較運算子
運算子 | 語法 | 描述 |
IS NULL | a is null | 如果操作符為NULL,結果為真 |
IS NOT NULL | a is not null | 如果操作符不為NULL,結果為真 |
BETWEEN | a between b and c | 若a在b和c之間,則結果為真 |
Like | a like b | SQL匹配,如果a匹配b,則結果為真 |
In | a in(a1,a2,a3....) | 假設a在a1,或者a2....其中的某一個值中,結果為真 |
IN具體的一個或多個值
NULL 和 NOT NULL
4.4 聯表查詢
JOIN對比
-- 查詢參加了考試的同學
-- (學號,姓名,科目編號,分數)
/*
1.分許需求,分析查詢的欄位來自哪些表(連線查詢)
2.確定使用哪種連線查詢? 7種
確定交叉點(這兩個表哪個資料是相同的)
判斷的條件:學生表中的 studentNo = 成績表 studentNo 交集
*/
SELECT s.studentNo,studentName,subjectNo,studentResult
FROM student AS s
INNER JOIN result AS r
WHERE s.studentNo = r.studentno
-- Right JOIN
SELECT s.studentNo,studentName,subjectNo,studentResult
FROM student s
RIGHT JOIN result r
ON s.studentNo = r.studentno
-- Left JOIN
SELECT s.studentNo,studentName,subjectNo,studentResult
FROM student s
LEFT JOIN result r
ON s.studentNo = r.studentno
操作 | 描述 |
Inner Join | 如果表中至少有一個匹配,就返回行 |
Left Join | 會從左表中返回所有的值,即使右表中沒有匹配 |
Right Join | 會從右表中返回所有的值,即使左表中沒有匹配 |
Join(連線的表) ON(判斷的條件) 連線查詢 具體的語法
where 等值查詢
結果一致
RIGHT JOIN 的作用:
有一個學生在這個學校,但是他沒有參加考試,而且我們想要的結果為參加考試的學生,所以我們要把result 當做主表,這樣的話,在result表中沒有該同學的成績,自然他也不會出現在表中,若將student當做主表,該同學的資訊就會顯示在該表上。
INNER JOIN 的作用:如果表中至少有一個匹配,就返回行
4.5 分頁和排序