数据查询语句 SELECT
一、数据查询操作
查询是使用 SELECT 语句对数据库进行探究。我们利用查询,根据需要从数据库里以一种可理解的格式提取数据。举例来说,假设我们有一个学生成绩表,就可以利用查询返回最高成绩、哪个学生取得最高成绩。这种获取有用信息的请求是关系型数据库里典型的查询操作。
语法:SELECT [ * | ALL | DISTINCT ] 查询项, . . .
FROM 表名 [, . . . ]
[ WHERE 查询条件 ]
[ GROUP BY 列名, . . . ]
[ HAVING . . . ]
[ ORDER BY . . . ]
[ LIMIT 行数 ]
叙述:FROM 子句:查询数据的表,指定数据的来源。
WHERE 子句:查询数据的过滤条件。
GROUP BY 子句:对匹配 WHERE 子句的查询结果进行分组。
HAVING 子句:对分组后的结果进行条件限制。
ORDER BY 子句:对查询结果结果进行排序,后面跟 DESC 降序或 ASC 升序(默认)。
LIMIT 子句:对查询的显示结果限制行数。
在查询里,关键字 SELECT 后面是字段列表,它们是查询输出的组成部分。星号(*)表示输出结果里包含表里的全部字段;选项 ALL 用于显示全部行的值,包括重复值;选项 DISTINCT 禁止在输出结果里包含重复的行。选项 ALL 是默认的操作方式。
例1:我们有 Store_Information 表,显示表的全部内容:
SELECT * FROM Store_Information;
结果: store_name Sales Date
----------------------------------------------------------
Los Angeles 1500 1999-01-05
San Diego 250 1999-01-07
Los Angeles 300 1999-01-08
Boston 700 1999-01-08
提示:星号(*)是选取所有列的快捷方式。
二、字段选择
前面讲了,星号(*)表示表里的全部字段,是选取所有列的快捷方式。但是,如果我们想查询选定的字段,可以在 SELECT 之后列出字段名称。
语法:SELECT [ ALL | DISTINCT ] 列名 FROM 表名;
例2:若要选出 Store_Information 表里所有的店名(store_Name) ,我们就列出字段名称: SELECT store_name FROM Store_Information;
结果:store_name
-----------------
Los Angeles
San Diego
Los Angeles
Boston
下面的语句使用选项 ALL,其结果会展示出 ALL 完全是多余的,它是默认选项,不需要明确指定。
SELECT ALL store_name FROM Store_Information;
结果:store_name
-----------------
Los Angeles
San Diego
Los Angeles
Boston
三、DISTINCT 的使用
SELECT 指令让我们能够读取表里一列或数列的所有数据。这将把所有的数据都找出,无论数据值有无重复。在数据处理中,我们会经常碰到需要找出表里不同数据值的情况。换句话说,我们需要知道这个表格/字段里有哪些不同的值,而每个值出现的次数并不重要。这要如何达成呢?在SQL 中,这是很容易做到的。我们只要在 SELECT 后加上一个 DISTINCT 就可以了。
关键词 DISTINCT 用于返回唯一不同的值。
语法:SELECT DISTINCT 列名 FROM 表名;
例3:使用 DISTINCT 选项,显示中去除了重复记录,Los Angeles 只显示一次。
SELECT DISTINCT store_name FROM Store_Information;
结果:store_name
----------------
Los Angeles
San Diego
Boston
【参考资料】
W3SChool 在线SQL教程 http://www.w3SChool.com.cn/sql/sql_select.asp SQL SELECT 语句
http://www.w3SChool.com.cn/sql/sql_distinct.asp SQL SELECT DISTINCT 语句
课后练习:
有学生表 Student(Sno, Sname, Sage, Sdept),包括字段学号、姓名、年龄、系名;
及成绩表 SC(studentid, course,grade),包括字段学号、课程、成绩。
完成以下查询:
1. 查询全体学生的详细记录。
2. 查询全体学生的学号与姓名。
3. 查询全体学生的姓名及其出生年份。
4. 查询选修了课程的学生学号(去掉重复的记录)