数据查询语句
一、使用SELECT語句進行查詢
查詢數據使用SELECT語句,最簡單的查詢語句的語法格式如下。
SELECT <表名|表達式|函數|常量>
FROM <表名>
[WHERE <查詢條件表達式>]
[ORDER BY <排序的列名>[ASC或DESC]]
其中,WHERE條件是可選的,若不限制,則查詢返回所有行的數據。ORDER BY用來排序。
1.查詢所有的數據行和列
把表中的所有行和列都列舉出來比較簡單,這時候可以使用“*”表示所有的列,例如:
SELECT * FROM student
2.查詢部分行和列
查詢部分列需要列舉不同的列名,而查詢部分行需要使用WHERE子句進行條件限制,例如:
SELECT studentNo,studentName,address FROM student WHERE address <> ‘河南新鄉’
3.在查詢中使用列的別名
AS子句可是用來改變結果集中列的名稱,也可以為組合或者計算出的列指定名稱,還有一種情況是讓列的信息更易懂,例如,查詢studentNo列并將列名顯示為“學生編號”。
在SQL中重新命名列明可以使用AS子句,例如:
SELECT studentNo AS 學生編號,studentName AS 學生姓名,address AS 學生地址
FROM student
WHERE address <> ‘河南新鄉’
還有一種情況是為通過計算、合并得到的新列命名。例如,假設在某數據庫的雇員表employee中存在firstName列和lastName列,現在需要將這兩列合并成一個叫作“姓名的列”,可以使用一下查詢語句。
SELECT firstName+’.’+lastName AS 姓名 FROM employee
4.查詢控制
在SQL語句中采用“IS NULL”或者“IS NOT NULL”來判斷列值是否為空,因此,如果要查詢學生信息表中沒有填寫Email信息的學生,可以使用以下查詢語句。
SELECT studentName FROM student WHERE email IS NULL
5.在查詢中使用常量列
SELECT studentName as 姓名,address AS 地址,‘北京新興橋’ AS 學校名稱 FROM student
查詢輸出結果多了一列“學校姓名”,該列的所有數據都是“北京新興橋”。
二、條件查詢
SELECT … FROM 表1 WHERE 字段1 比較運算符(子查詢);
其中,子查詢語句必須放置在一堆圓括號中,比較運算符包括>、+、<、>=、<=。
習慣上,外層查詢成為夫查詢,圓括號中嵌入的查詢稱為子查詢。SQL語句執行時,先執行子查詢部分,求出子查詢部分的值,再執行整個夫查詢,返回最后的結果。
子查詢作為WHERE條件的一部分,還可以和UPDATE、INSERT、DELETE一起使用,語法類似于SELECT語句。
使用IN關鍵字可以是父查詢匹配子查詢返回的多個單字段值。
三、數據查詢
1.內連接查詢
內連接使用INNER JOIN …ON關鍵字或WHERE子句老進行行表之間的關聯。內連接查詢可以通過如下兩種方式實現。
(1)在WHERE子句中指定連接條件
例如,查詢學生姓名和成績的SQL語句如下。
SELECT student.studentName,result.subjectNo,result.studentResult
FROM student,result
WHERE student.studentNo=result.studentNo
上面這種形式的查詢相當于FROM后面緊跟了兩個表名,在字段列表中用“表名.列名”來區分列,再在WHERE條件子句中加以判斷,要求學生編號信息相等。
(2)在FROM子句中使用INNER JOIN … ON
SELECT S.studentName,R.subjectNo,R.studentResult
FROM student AS S
INNER JOIN result AS R ON(S.studentNo=R.studentNo)
在上面的內連接查詢中:INNER JOIN用來連接兩個表:INNER可以省略;ON用來設置條件;AS指定表的“別名”,如果查詢的列名在用到的兩個或多個表中不重復,則對這一列的引用不必用表名來限定。
2.外連接
內連接的結果是從兩個或兩個以上表的組合中挑選出符合連接條件的數據,如果數據無法滿足連接條件則將其忽視。在內連接查詢中,參與連接的表的地位時平等的。
與內連接查詢相對的方式稱為外連接查詢。在外連接查詢中參與連接的表有主從之分,以朱標的每行數據匹配從表的數據列,將符合連接條件的數據直接返回到結果集中;對那些不符合連接條件的列,將被填上NULL值(空)后在返回到結果集中。
(1)左外連接查詢
左外連接查詢的結果集包括LEFT JOIN子句中指定的左表的所有行,而不僅僅是連接列所匹配的行。若坐標的某行在右表中沒有匹配行,則在相關聯的結果集行中左右表的所有選擇列均為空值。
左外連接查詢使用LEFT JOIN … ON或LEFT OUTER JOIN … ON關鍵字來進行表之間的關聯。例如,要統計所有學生的考試情況,要求顯示所有參加考試學生的每次考試分數,沒有參加考試的學生也要顯示出來。這時候,以學生信息表為主表(有時也叫左表)、學生成績從表的左外連接查詢的SQL語句如下。
SELECT S.StudentName,R.subjectNo,R.studentResult
FROM student AS S
LEFT OUTER JOIN result AS R ON S.StudentNo=R.StudentNo
其中,對學生信息表中的每一條記錄跟成績表的記錄進行數據匹配(匹配條件為S.StudentNo=R.StudentNo)。若匹配成功,則返回記錄集;若沒有找到匹配的記錄,則返回NULL值填充記錄集。
(2)右外連接查詢
右外連接查詢與左外連接查詢類似,只不過要包含右表中所有匹配的行。若右表中有的項在坐標中沒有對應的項,則以NULL值填充。
SELECT Titles.Title_id,Titles.Title,Publishers.Pub_name
FROM Titles
RIGHT OUTER JOIN Publishers ON Titles.Pub_id=Publishers.Pub_id
總結
- 上一篇: BPG-MF学习笔记
- 下一篇: 夺命雷公狗ThinkPHP项目之----