1. 程式人生 > 其它 >(四)DQL查詢資料(最重點)

(四)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 分頁和排序