1. 查询语句 SELECT 的基本结构
SELECT [ALL | DISTINCT] <目标列表达式> [[AS] <新列名>] [,...n]
FROM <表名或试图名> [[AS] <别名>] [...n]
[WHERE <条件表达式>]
[GROUP BY <分组依据列>]
[HAVING <条件表达式>]
[ORDER BY <排序依据列> [ASC | DESC]] [...n]
[LIMIT N,M]
其中:
- [ALL | DISTINCT]:指定在结果集中是否显示重复行。ALL 表示显示,为默认值;DISTINCT 表示不显示。
- <目标列表达式> [[AS]<新列名>][,…n]:指定为结果集选定的列。特别地,如果该处为’*’,则表示输出所有列。
- <表名或视图名>[[AS]<别名>][,…n]:指定从其中检索数据的表或视图。
- [WHERE <条件表达式>]:指定数据 检索的条件。
- [GROUP BY <分组依据>]:实现对数据的分组查询。
- [HAVING <条件表达式>]:用于分组后的筛选条件。
- [ORDER BY <排序依据列>[ASC | DESC]][,…N]:对结果集按<排序依据列>指定的列的值排序。其中ASC表示升序排序,为默认值;DESC 表示降序排序。
- [LIMIT N,M]:表示只从查询结果集中删除从 N 到 M 行。
2. 单表查询
(1) 选择表中若干列
- 查询全体学生的详细记录
SELECT * FROM student;
- 查询全体学生的学号与姓名
SELECT Sno,Sname FROM studnet;
- 查询全体学生的姓名及年龄
SELECT Sname,YEAR(now()) - YEAR(Sbirth) FROM student;
- 本例中,<目标表达式>中第二项不是通常的列名,而是一个计算表达式,是用当前的年份减去学生的日期,这样所得的即为学生的年龄。其中YEAR()是输出年份的函数,now()是输出当前日期的函数。
- 查询全体学生的姓名、出生年份
SELECT Sname AS 学生姓名 , YEAR(Sbirth) AS 出生年份 FROM student
(2) 选择表中若干元组
查询所有选修过课的学生的学号
SELECT DI