第五章:  结构化查询语言 SQL

  关闭窗口       

5.4 数据查询

     5.4.1 基本查询
  
5.4.2 带特殊运算符的条件查询
  
5.4.3 排序查询
  
5.4.4 计算与分组查询
  
5.4.5 多表查询
  
5.4.6 联接查询
  
5.4.7 嵌套查询
  
5.4.8 查询输出
 

数据查询是 SQL 语言的核心,也称作 SQL-SELECT 命令。使用 SQL-SELECT 命令,可以对数据源进行各种组合,有效地筛选记录、管理数据、并对结果排序及指定输出去向等,无论查询多么复杂,其内容只有一条 SELECT 语句。

SQL-SELECT 命令可以进行多个查询块的嵌套查询,以完成更复杂的查询任务。

格式: SELECT [DISTINCT] [TOP< 数值 > [PERCENT]]
  [<
别名 1>.]< 选项 1> AS < 列名 1>,
  [<
别名 2>.]< 选项 2> AS < 列名 2>,……
  FROM <
表 1> [AS < 别名 1>],< 表 2>[AS < 别名 2>],……
  [[INNER|LEFT|RIGHT|FULL] JOIN <
表 2>
  ON <
联接条件 >]
  [INTO <
目标 >]|TO FILE < 文件名 >|TO PRINT
  [WHERE <
筛选条件 > [AND < 联接条件 >]]

[GROUP BY < 分组项 >] [HAVING < 筛选条件 >]
  [ORDER BY <
排序项 1>, < 排序项 2>]

[UNION SELECT < 命令 >]

5.4.1. 基本查询 SELECT … FROM … WHERE

例如,从“学生”表中查询所有男生的学号、姓名和出生日期:

SELECT 学号 , 姓名 , 出生日期 FROM 学生 WHERE 性别 = “男”

5.4.2. 带特殊运算符的条件查询 在 WHERE 子句所带的筛选条件表达式中可以使用一些特殊运算符,如 IN 、 BETWEEN … AND …、 LIKE

例如,查询成绩良好( 75 ~ 85 分)的学生和课程信息:

SELECT * FROM 成绩 WHERE 成绩 BETWEEN 75 AND 85

5.4.3. 排序查询 使用 ORDER BY 子句,可以对查询结果按升序( ASC )或降序( DESC )排列。

例如,按课程号输出学生的各科成绩,同一门课按成绩降序排列:

SELECT * FROM 成绩 ORDER BY 课程号 , 成绩 DESC

5.4.4. 计算与分组查询: 使用 GROUP BY 子句可以实现分组查询,通常与计算查询(如计数、求和、求平均值等)结合使用,先按指定的数据项分组,再对各组汇总计算。

例如,查询各门课程的平均成绩:

SELECT 课程号 ,AVG( 成绩 ) AS 平均成绩 FROM 成绩 GROUP BY 课程号

5.4.5. 多表查询: 多表查询时,表和表之间必须有联接关系,在 WHERE 子句中可以指定表间的联接关系。其格式为:

< 表名 1>.< 字段名 1> = < 表名 2>.< 字段名 2> 或

< 别名 1>.< 字段名 1> = < 别名 2>.< 字段名 2>

例如,查询各门课程的平均成绩,要求输出课程名和成绩信息:

SELECT 课程名 ,AVG( 成绩 ) AS 平均成绩 FROM 课程 KC ,成绩 CJ;

WHERE KC. 课程号 = CJ. 课程号 GROUP BY CJ. 课程号

5.4.6. 联接查询 :利用 FROM … ON 子句建立两表之间的联接。

格式: FROM < 表名 1> INNER | LEFT | RIGHT | FULL JION
<
表名 2> ON < 联接条件 >

说明: INNER JOIN( 内部联接 ) 、 LEFT JOIN( 左联接 ) 、 RIGHT JOIN (右联接)、 FULL JOIN (全联接)的含义与 4.1.2 节中相同。

例如,

查询各门课程的平均成绩,要求输出课程名和成绩信息:

SELECT 课程名 ,AVG( 成绩 ) AS 平均成绩 FROM 课程 KC ;

INNER JOIN 成绩 CJ;

ON KC. 课程号 = CJ. 课程号 ;

GROUP BY CJ. 课程号

5.4.7. 嵌套查询: 在一个 SELECT 命令的 WHERE 子句中出现另一个 SELECT 命令 ( 即子查询)。

子查询的结果必须是确定的值。

例如,查询李华同学所学课程的课程名和成绩:

SELECT 课程名 , 成绩 FROM 课程 KC, 成绩 CJ;

WHERE KC. 课程号 = CJ. 课程号

AND CJ. 学号 = (SELECT 学号 FROM 学生 WHERE 姓名 = “李华” )

5.4.8. 查询输出 查询结果默认显示在浏览窗口中,通过 INTO 子句或 TO 子句可以对输出重定向。

格式:

INTO ARRAY < 数组 > | CURSOR < 临时表 > | && 保存到内存
  DBF <
表文件 > | TABLE < 表文件 > && 保存到表文件

TO FILE < 文本文件 > && 保存到文本文件

TO PRINT && 打印

例如,查询各门课程的平均成绩,结果保存在 “ 平均成绩 ” 表中。

SELECT 课程号 ,AVG( 成绩 ) AS 平均成绩 FROM 成绩 ;

GROUP BY 课程号 INTO TABLE 平均成绩

 

关闭窗口      
 
版权所有西北师范大学数学与信息科学学院