`
lilin745997
  • 浏览: 29387 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

SQL语句 第5章 子查询和集合操作

阅读更多

5.1  子查询


5.1.1  单行子查询


1.在WHERE 子句中使用子查询
例5.1_1

工资低于平均工资的教师

SELECT * FROM Teachers
  WHERE wage <
  (SELECT AVG(wage) 

   FROM Teachers);

 
例5.1_2

和王天仪同专业的学生

SELECT * FROM Students 
  WHERE specialty =
  (SELECT specialty FROM Students 
     WHERE name = '王天仪');

 
 

2.在HAVING子句中使用子查询
例5.1_4

部门平均工资高于部门最低工资的部门号和平均工资

SELECT department_id, AVG(wage) AS 平均工资

 FROM Teachers 
  GROUP BY department_id 
    HAVING AVG(wage) >
    (SELECT MIN(AVG(wage))
       FROM Teachers 
       GROUP BY department_id);

 

3.在FROM子句(Inline Views)中使用子查询
例5.1_5

计算机专业的男学生

SELECT * FROM (SELECT * FROM Students WHERE sex ='男')
  WHERE specialty = '计算机';

 

 

 

5.1.2  多行子查询

 

1.在多行子查询使用IN/NOT IN操作符
例5.1_6

查询王某的学号和姓名

SELECT student_id, name FROM Students 
  WHERE student_id IN
    (SELECT student_id 

      FROM Students 
       WHERE name LIKE '王%');

 

例5.1_7

未被学生选的课程

SELECT course_id, course_name

 FROM Courses
  WHERE course_id NOT IN
    (SELECT course_id
       FROM Students_grade);

 

2.在多行子查询使用ANY操作符
例5.1_8

平均工资最低的部门里的教师信息

SELECT * FROM Teachers
  WHERE wage < ANY
    (SELECT AVG(wage) 

     FROM Teachers

    GROUP BY department_id);

 

3.在多行子查询使用ALL操作符
例5.1_9

平均工资最高的部门里的教师信息

SELECT * FROM Teachers
  WHERE wage > ALL
    (SELECT AVG(wage)
       FROM Teachers GROUP BY department_id);

 

 

5.1.3  多列子查询


例5.1_10

和王天仪同专业同生日的学生信息

SELECT * FROM Students
  WHERE (specialty, dob)=
    (SELECT specialty, dob 
       FROM Students WHERE name='王天仪');

 

例5.1_11

部门里工资最低的教师信息

SELECT * FROM Teachers
  WHERE (department_id, wage) IN
    (SELECT department_id, MIN(wage)
       FROM Teachers 

       GROUP BY department_id);

 

 

5.1.4  相关子查询

 

例5.1_12

工资高于所在部门的平均工资的教师信息

SELECT * FROM teachers t1
  WHERE wage >
    (SELECT AVG(wage) FROM teachers t2
       WHERE t2.department_id = t1.department_id);

 

1.在相关子查询中使用EXISTS/NOT EXISTS
例5.1_13 

以被学生选的课程号和课程名

SELECT course_id, course_name 

FROM courses c
  WHERE EXISTS
    (SELECT 2 FROM students_grade sg
       WHERE sg.course_id = c.course_id);

 

3.IN/NOT IN
例5.1_15

有老师的部门

SELECT department_id, department_name

 FROM departments
  WHERE department_id IN
    (SELECT department_id FROM teachers);

 

 

5.2  集合操作(UNION UNION ALL INTERSECT MINUS)


5.2.1  分别使用集合操作符


1.使用集合操作符UNION ALL
例5.2_1

主修课并副修课,可重复

SELECT course_id, course_name, credit_hour
  FROM Courses
UNION ALL
SELECT minor_id, minor_name, credit_hour
  FROM Minors;

 

 

2.使用集合操作符UNION

例5.2_6 学生()*专业 男生

计算机专业学生并男学生

SELECT * FROM Students WHERE specialty='计算机'
UNION
SELECT * FROM Students WHERE sex='男';

 

3.使用集合操作符INTERSECT

例5.2_8学生()*专业 男生

SELECT *
  FROM students WHERE specialty='计算机'
INTERSECT
SELECT *
  FROM students WHERE sex='男';

 

4.使用集合操作符MINUS

例5.2_10学生()*专业 男生

计算机专业的女学生

SELECT *
  FROM Students WHERE specialty='计算机'
MINUS
SELECT *
  FROM Students WHERE sex='男';

 

 同类型不同宽度可自动转换,不同类型可先转成字符串型再集合操作

分享到:
评论

相关推荐

    精通sql结构化查询语句

    7.6.7 数学运算符与集合运算符的组合应用 7.7 SQL中的表达式 7.7.1 CAST表达式的应用 7.7.2 CASE表达式的应用 7.8 小结第8章 SQL函数 8.1 SQL函数基础 8.1.1 SQL语句函数 8.1.2 常用的SQL语句函数 8.2 日期函数和...

    SQL 基础教程

    第5章 基本查询操作 第6章 使用WHERE子句查询表 第7章 表中数据的排序 第8章 连接查询与集合查询 第9章 子查询 第10章 常用函数 第11章 视图的创建与维护 第12章 插入数据记录 第13章 修改数据记录 第14章 删除数据...

    精通SQL 结构化查询语言详解

    第5章 简单的查询  5.1 查询的基本结构  5.1.1 SELECT语句的结构  5.1.2 SELECT语句的执行步骤  5.2 列的查询  5.2.1 本章用到的实例表  5.2.2 单列查询  5.2.3 使用DISTINCT去除重复信息  5.2.4 ...

    Microsoft SQL Server 2005技术内幕:T-SQL查询

    第5章 表表达式  5.1 派生表  5.2 公用表表达式(CTE)  5.3 视图  5.4 内联表值函数  5.5 APPLY运算符  5.6 总结  5.7 练习  5.8 解决方案 第6章 集合运算  6.1 UNION(并集)集合运算  6.2 ...

    精通SQL--结构化查询语言详解

    第5章 简单的查询 83 5.1 查询的基本结构 83 5.1.1 select语句的结构 83 5.1.2 select语句的执行步骤 84 5.2 列的查询 84 5.2.1 本章用到的实例表 85 5.2.2 单列查询 85 5.2.3 使用distinct去除重复信息 86 ...

    (第二卷)Microsoft SQL Server 2008技术内幕:T-SQL语言基础

    主要包括SQL的基础理论、逻辑查询处理、SELECT查询、连接和子查询、表表达式、过滤和分组、透视转换、修改数据、事务和一致性的处理、可编程对象等内容。  书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中...

    经典全面的SQL语句大全

     4、说明:子查询(表名1:a 表名2:b) select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)  5、说明:显示文章、提交人和最后回复时间 select a.title,a.username,...

    Microsoft SQL Server 2008技术内幕:T-SQL查询(第二卷)

    第5章 算法和复杂性 5.1 你有一个1夸特的硬币吗? 5.1.1 如何从零钱罐中取回1夸特钱 5.1.2 有时零钱罐中没有1夸特的硬币 5.2 如何度量算法(How Algorithms Scale) 5.2.1 二次缩放(Quadratic Scaling)的一个...

    (第一卷)Microsoft.SQL.Server.2008技术内幕:T-SQL语言基础

    主要包括SQL的基础理论、逻辑查询处理、SELECT查询、连接和子查询、表表达式、过滤和分组、透视转换、修改数据、事务和一致性的处理、可编程对象等内容。  书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中...

    Oracle SQL高级编程

    第5章 关于问题 116 第6章 SQL执行计划 137 第7章 高级分组 170 第8章 分析函数 197 第9章 Model子句 225 第10章 子查询因子化 254 第11章 半联结和反联结 292 第12章 索引 334 第13章 SELECT以外的内容 360 第14章 ...

    SQLServer2008技术内幕T-SQL查询包含源代码及附录A

    第5章 算法和复杂性215 5.1 你有一个1夸特的硬币吗?215 5.1.1 如何从零钱罐中取回1夸特钱216 5.1.2 有时零钱罐中没有1夸特的硬币216 5.2 如何度量算法(How Algorithms Scale)217 5.2.1 二次缩放(Quadratic ...

    Microsoft+SQL+Server+2008技术内幕:T-SQL查询_源代码及附录 中文版

    第5章 算法和复杂性215 5.1 你有一个1夸特的硬币吗?215 5.1.1 如何从零钱罐中取回1夸特钱216 5.1.2 有时零钱罐中没有1夸特的硬币216 5.2 如何度量算法(How Algorithms Scale)217 5.2.1 二次缩放(Quadratic ...

    PL-SQL(由DBA8[1].CN提供,DBA吧,DBA的出没之地) word格式

    第五章 单行函数 5  大小写转换函数 5  字符串处理函数 5  数字函数 6  Date函数 6  其它函数 7  NESTRING函数 9  DUAL表 9 第六章 组函数 10 第七章 子查询 11  单行子查询 11  多行子查询 11 ...

    程序员的SQL金典.rar

    第5章 函数  5.1 数学函数  5.1.1 求绝对值  5.1.2 求指数  5.1.3 求平方根  5.1.4 求随机数  5.1.5 舍入到最大整数  5.1.6 舍入到最小整数  5.1.7 四舍五入  5.1.8 求正弦值  5.1.9 求余弦值  5.1.10 求...

    程序员的SQL金典4-8

    第5章 函数  5.1 数学函数  5.1.1 求绝对值  5.1.2 求指数  5.1.3 求平方根  5.1.4 求随机数  5.1.5 舍入到最大整数  5.1.6 舍入到最小整数  5.1.7 四舍五入  5.1.8 求正弦值  5.1.9 求余弦值  5.1.10 求...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    5、子查询 6、合并查询结果 7、为表和字段取别名 8、使用正则表达式查询 什么是查询? 怎么查的? 数据的准备如下: [sql] view plain copy create table STUDENT( STU_ID int primary KEY, STU_NAME char(10) ...

    程序员的SQL金典6-8

    第5章 函数  5.1 数学函数  5.1.1 求绝对值  5.1.2 求指数  5.1.3 求平方根  5.1.4 求随机数  5.1.5 舍入到最大整数  5.1.6 舍入到最小整数  5.1.7 四舍五入  5.1.8 求正弦值  5.1.9 求余弦值  5.1.10 求...

    程序员的SQL金典7-8

    第5章 函数  5.1 数学函数  5.1.1 求绝对值  5.1.2 求指数  5.1.3 求平方根  5.1.4 求随机数  5.1.5 舍入到最大整数  5.1.6 舍入到最小整数  5.1.7 四舍五入  5.1.8 求正弦值  5.1.9 求余弦值  5.1.10 求...

    程序员的SQL金典3-8

    第5章 函数  5.1 数学函数  5.1.1 求绝对值  5.1.2 求指数  5.1.3 求平方根  5.1.4 求随机数  5.1.5 舍入到最大整数  5.1.6 舍入到最小整数  5.1.7 四舍五入  5.1.8 求正弦值  5.1.9 求余弦值  5.1.10 求...

Global site tag (gtag.js) - Google Analytics