from
雇员
S,雇员
E where S.雇员号=E.经理
三、 嵌套查询
嵌套查询是另一类基于多个关系的查询, 此类查询所要求的结果出自 一个关系,但相关的条件却涉及多个关系。 1、例:查询女生学生选课信息,包括学号,课程号,成绩。 SELE *; FROM 选课; WHERE 学号 IN (SELE 学号 FROM 学生 WHERE 性别=”
女”) 说明: IN:相当于集合运算符∈。 还可使用如下 SQL 语句:简单联接查询 SELE 选课.学号,课程号,成绩; FROM 选课 JOIN 学生 ON 选课.学号=学生.学号; WHERE 性别=”女” 2、查询有“硬盘”订购需求的订购单明细记录:这个例子要求查询 订购单明细表中的记录,而查询条件是产品标的名称, Sele * from 订购单明细 where 产品号 IN; where 名称=“硬盘” )
(sele 产品号 from 产品 3、排除法查询的例子:
查询所有订购数量(即订购单中每个订购项目的数量)都在 50 以上 的订购单的信息 Sele * from 订购单 where 订单号 not in; (sele 订单号 from 订购单明细 where 数量〈=50)
Sele * from 订购单 where 订单号 not in; (sele 订单号 from 订购单明细 where 数量 〈=50) and 订
单号 in (sele 订单号 from 订购单明细) 4、找出和某某产品同等价位的所有产品信息:内外层查询的同一个 表,内层查询查处单价,外层查询根据这个单价查询产品信息 Sele * from 产品 where 单价=;
(sele 单价 from 产品 5、内外层互相查询嵌套查询
where
规格说明=“某某产品” )
四、 特殊运算符
1. BETWEEN … AND … 意为“…和…之间”
例:查询成绩在 80 分到 90 分之间的选课信息。 SELE * FROM 选课 WHERE 成绩 BETWEEN 80 AND 90 等价于: SELE * FROM 选课 WHERE 成绩>=80 AND 成绩<=90 例:查询成绩不在 80 分到 90 分之间的选课信息。 SELE * FROM 选课 WHERE 成绩 NOT BETWEEN 80 AND 90 2. LIKE 是字符串匹配运算符, 通配符 “%” 表示 0 个或多个字符, “_”表示一个字符。 注意:不是“*”和“?” ,不正确! 例:从学生关系中查询姓“黄”的学生信息。 SELE * FROM 学生 WHERE 姓名 LIKE “黄%” 不能写成: SELE * FROM 学生 WHERE 姓名="黄%" 例:从学生关系中查询不姓“黄”的学生信息。 SELE * FROM 学生 WHERE 姓名 NOT LIKE “黄%” 例: SELE * FROM 学生 WHERE 姓名 LIKE "黄_"
SELE * FROM 学生 WHERE 姓名 LIKE "黄__"
五、 排序
SQL SELECT 可将查询结果排序。排序的短语格式如下: ORDER BY Order_Item [ASC|DESC][, Order_Item [ASC|DESC]…] 说明:可按升序或降序排序,允许按一列或多列排序。 例:按学分进行升序查询课程信息。 SELE * FROM 课程 ORDER BY 学分 ASC 例:先按学分进行升序排序,学分相同的再按课程名进行降序排序并 输出全部课程信息。 SELE * FROM 课程 ORDER BY 学分,课程名 DESC 注:ORDER BY 对最终的查询(外查询)结果进行排序,不能在子 查询(内查询)中使用此短语。
六、 简单计算查询
SQL 不但具有一般的检索能力, 而且还有计算方式的检索。 用于计算 检索的函数有: 1. 2. 3. 4. COUNT(*) :计数 SUM() :求和 AVG() :算平均值 MAX() :求最大值 自变量通常为数值型
5.
MIN() :求最小值
上面的函数可用在 SELECT 短语中对查询结果进行计算。 例:查询学号为“03&rdq