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