php单表查询语句,单表查询
一、SQL數據查詢的一般格式
數據查詢是數據庫的核心操作。SQL提供了SELECT語句進行數據查詢,其一般格式為:
SELECT [ALL | DISTINCT][,]···
FROM[,···] | (SELECT語句>)[AS]
[WHERE]
[GROUP BY[HAVING]]
[ORDER BY[ASC | DESC]];
整個SELECT語句的含義是,根據WHERE子句的條件表達式從FROM子句指定的基本表、視圖或派生表中找出滿足條件的元組,再按SELECT子句中的目標列表達式選出元組中的屬性值形成結果表。
如果有GROUP BY子句,則將結果按的值進行分組,該屬性列值相等的元組為一個組。通常會在每組中作用聚集函數。如果GROUP BY子句帶HAVING短語,則只有滿足指定條件的組才予以輸出。
如果有ORDER BY子句,則結果還要按的值的升序或降序排序。
SELECT語句既可以完成簡單的單表查詢,也可以完成復雜的連接查詢和嵌套查詢。
二、SQL單表查詢(僅涉及一個表的查詢)
1.選擇表中的若干列
(1)查詢指定列
查詢全體學生的學號與姓名
SELECT Sno,Sname
FROM Student;
查詢全體學生的姓名、學號、所在系
SELECT Sname,Sno,Sdept
FROM Student;
(2)查詢全部列
查詢全體學生的詳細記錄
SELECT *
FROM Students;
等價于
SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Student;
(3)查詢經過計算的值
查詢全體學生的姓名及其出生年份
SELECT Sname,2014-Sage //查詢結果的第2列是一個 算術表達式
FROM Student;
注意:用當時的年份(假設為2014年)減去學生的年齡,這樣所得的即是學生的出生年份。
查詢全體學生的姓名、出生年份和所在的院系,要求用小寫字母表示系名
SELECT Sname,'Year of Birth:',2014-Sage,LOWER(Sdept)
FROM Student;
2.選擇表中的若干組
(1)消除取值重復的行
查詢選修了課程的學生學號
SELECT DISTINCT Sno
FROM SC;
(2)查詢滿足條件的元組
查詢滿足指定條件的元組可以通過WHERE子句實現。WHERE子句常用的查詢條件如下表所示查詢條件謂詞
比較=,>,=,<=,!=,<>,!>,!
確定范圍BETWEEN AND,NOT BETWEEN AND
確定集合IN,NOT IN
字符匹配LIKE,NOT LIKE
空值IS NULL,IS NOT NULL
多重條件(邏輯運算)AND,OR,NOT
查詢計算機科學系全體學生的名單
SELECT Sname
FROM Student
WHERE Sdept='CS'
查詢所有年齡在20歲以下的學生姓名及其年齡
SELECT Sname,Sage
FROM Student
WHERE Sage<20;
查詢考試成績不合格的學生的學號
SELECT DISTINCT Sno
FROM SC
WHERE Grade<60;
查詢年齡在20~23歲之間的學生的姓名、系別和年齡
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23
查詢年齡在20~23歲之間的學生的姓名、系別和年齡
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23
查詢計算機科學系(CS)、數學系(MA)和信息系(IS)學生的姓名、系別和年齡
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN('CS','MA','IS');
查詢學號為201215121的學生的詳細情況
SELECT *
FROM Student
WHERE Sno LIKE '201215121'
等價于
SELECT *
FROM Student
WHERE Sno='201215121'
此處介紹下字符匹配
謂詞LIKE可以用來進行字符串的匹配。其一般語法格式如下:
[NOT] LIKE'' [ESCAPE '']
其含義是查找指定的屬性列值與相匹配的元組。可以是一個完整的字符串,也可以含有通配符 % 和 _。其中:%(百分號)代表任意長度(長度可以為0)的字符串。例如:a%b 表示以a開頭,以b結尾的任意長度的字符串。如acb、addgb、ab等。
_(下劃線)代表任意單個字符。例如:a_b表示以a開頭,以b結尾的長度為3的任意字符串。如acb、agb等。
查詢所有姓劉的學生的姓名、學號和性別
SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname LIKE '劉%';
查詢姓“歐陽”且全名為三個漢字的學生的姓名
SELECT Sname
FROM Student
WHERE Sname LIKE '歐陽_'
注意:數據庫字集為ASCII時一個漢字需要兩個_;當字符集為GBK時只需要一個。
查詢名字中第二個字為“陽”的學生的姓名和學號
SELECT Sname,Sno,
FROM Student
WHERE Sname LIKE '_陽%';
查詢所有不姓劉的學生的姓名、學號和性別
SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname NOT LIKE '劉%';
如果用戶要查詢的字符串本身就含有通配符%或_,這時就要使用 ESCAPE '' 短語對通配符進行轉義了。
查詢DB_Design 課程的課程號和學分
SELECT Cno,Ccredit
FROM Course
WHERE Cname LIKE 'DB \ _Design' ESCAPE '\';
ESCAPE '\' 表示 “\” 為換碼字符。這樣匹配串中緊跟在 “\” 后面的字符“_”不再具有通配符的含義,轉義為普通的“_”字符。
查詢以“DB_”開頭,且倒數第三個字符為i的課程的詳細情況
SELECT *
FROM Course
WHERE Cname LIKE 'DB \_%i__'ESCAPE '\';
某些學生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢缺少成績的學生的學號和相應的課程號
SELECT Sno,Cno
FROM SC
WHERE Grade IS NULL; /*分數Grade是空值*/
注意:這里的“IS”不能用等號(=)代替。
查所有有成績的學生學號和課程號
SELECT Sno,Cno
FROM SC
WHERE Grade IS NOT NULL;
查詢計算機科學系年齡在20歲以下的學生姓名
SELECT Sname
FROM Student
WHERE Sdept='CS' AND Sage<20;
總結
以上是生活随笔為你收集整理的php单表查询语句,单表查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 赢越人生怎么领取
- 下一篇: 使用备用金可以开通借呗吗