目录

  • 前沿小补充
  • 等值与非等值连接查询
  • 自身连接
  • 外连接
  • 多表连接

前沿小补充

例3.48 查询平均成绩大于等于80分的学生学号和平均成绩

SELECT Sno,AVG(Grade)
FROM SC
WHERE AVG(Grade)>=80
GROUP BY Sno;
SELECT * FROM SC;

此时发现:

这是因为WHERE子句中是不能用聚集函数作为条件表达式的,正确的查询语句应该是:

SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade)>=80;
SELECT * FROM SC;


总结:WHERE子句作用基本表或视图,从中选择满足条件的元组。
HAVING短语作用于组,从中选择满足条件的组

等值与非等值连接查询

连接符号是=的成为等值连接,其他的称为非等值连接
一般形式:

[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>

例3.49 查询每个学生及其课程选秀修情况

SELECT Student.*,SC.*
FROM Student,SC
WHERE Student.Sno=SC.Sno;
SELECT * FROM SC;
SELECT * FROM Student;


拓展:去掉WHERE Student.Sno=SC.Sno后发现标称笛卡尔积形式

SELECT Student.*,SC.*
FROM Student,SCSELECT * FROM SC;
SELECT * FROM Student;


例3.50 对例3.49 用自然连接完成

SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student,SC
WHERE Student.Sno=SC.Sno;
SELECT * FROM SC;
SELECT * FROM Student;

修改为自然连接竟然是一点一点选择可视的列来进行的,是我想不到的,以为会有专门的语句来进行呢


例3.51 查询选修了2号课程且成绩大于等于90分所有学生的学号和姓名

SELECT Student.Sno,Sname
FROM Student,SC
WHERE Student.Sno=SC.Sno
AND SC.Cno='2'
AND SC.Grade>=90;
SELECT * FROM SC;
SELECT * FROM Student;

一条SQL语句可以同时完成选择和连接查询,这时WHERE子句由连接谓词和选择谓词组成的复合条件

自身连接

一个表与其自身进行连接,称为自身连接
例3.52 查询每一门课的间接选修课

SELECT FIRST.Cno,SECOND.Cpno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cpno=SECOND.Cno;
SELECT * FROM Course;


在T-SQL 语句中,外连接是存在空值的,

外连接

例如某个学生没有选课,仍把Student的悬浮元组保存在结果关系中,而在SC表的属性上填上空值NULL,这是需要使用外连接
例3.53 对Student进行左外连接SC

SELECT *
FROM Student LEFT OUTER JOIN SC ON(Student.Sno=SC.Sno);
--SELECT * FROM Course;
SELECT * FROM SC;
SELECT * FROM Student;

多表连接

两个表以上的操作称为外连接
例3.54 查询每个学生的学号、姓名、选修的课程及成绩

SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;
SELECT * FROM Course;
SELECT * FROM SC;
SELECT * FROM Student;


拓展:对SELECT进行*改写

SELECT *
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;


原算法只是对数据进行了一步筛选。
总结:连接查询这部分比较简单,注意对属性的表格定位名时,不要打错了

SQL server连接查询相关推荐

  1. Sql Server 连接查询

    在操作数据库的时候,经常会使用到inner join,left join,right join,full join.今天用了一个简单的例子记录一下这几个的区别. 1 测试数据 为了方便测试,就不用搞那 ...

  2. SQL Server 连接查询(多表连接查询)

    多表连接查询 1.查询的信息来源于多张表,则可以通过两两相连的方式建立多表连接查询 以下是正常多表查询语法,查询三张表的所有数据信息 2.简单多表查询要比多表查询写法更简单,效果是一样的, 简单多表查 ...

  3. SQL Server 连接查询(内连接查询)

    内连接查询 1.内连接基于连接谓词on,它将两张表的列组合在一起,产生新的结果表 两个表的每一行连接列进行比较,如果满足连接谓词则会组合成一行数据 2.要想进行内连接查询,就必须有连接列,这样才能建立 ...

  4. mysql不同服务器查询_实战操作SQL Server连接查询不同服务器表数据

    今日产品部要导批数据,但是需要连接查询查询的几个表不在同一服务器上.所以我开始是这么干的: 1.查询一台服务器的数据,并导入本地Excel 2.查询另一台服务器的数据,并导入本地Excel 3.Exc ...

  5. 数据库-SQL Server数据库查询速度慢(连接超时)原因及优化方法

    SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列 ...

  6. SQL错误提示档案(3):SQL Server连接中的四个最常见错误

    SQL   Server连接中的四个最常见错误:         一."SQL   Server   不存在或访问被拒绝"          一般说来,有以下几种可能性:     ...

  7. 优化SQL Server数据库查询方法

    本文详细介绍了优化SQL Server数据库查询方法. SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) ...

  8. SQL Server 2005查询处理结构-用户模式计划(UMS)

    SQL Server 2005查询处理结构-用户模式计划(UMS) 在对数据库进行性能调优时,必须全面的考虑各种可能造成系统性能瓶颈的各种因素,因此深入了解SQL Server 2005的查询处理机构 ...

  9. 用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联

    message: 用户 'sa' 登录失败.原因: 未与信任 SQL Server 连接相关联.这个问题该如何解决?=============一.控制面板->服务->MS SQL SERV ...

最新文章

  1. IT大数据服务管理高级课程(IT服务,大数据,云计算,智能城市)
  2. 报告显示:至2020年,paas在云端的普及率将达32%
  3. json与javabean、list、map之间的转化
  4. java匿名内部类举例和内部类举例
  5. J2EE经典面试题及答案
  6. sql计算留存_SQL基础第七讲:关于用户留存率的计算
  7. python内建时间模块 time和datetime
  8. label 标签里面元素点击事件
  9. 从 VC7 的 CHtmlView 不能正常退出谈 CComPtr 使用中的一个误区
  10. 风华高科厚膜贴片电阻规格书_1206 0.25R取样贴片电阻规格主要参数详解
  11. 使用share prefernces实现轻量级数据存储
  12. MFC工作笔记0002---MFC HelloWorld程序
  13. 记录一个表,COUNT多列的写法
  14. ElasticJob-Lite 框架源码学习
  15. t6服务器虚拟打印机,priPrinter Professional(免费的虚拟打印机) V6.6.0 中文免费版
  16. ORACLE 的 ADD_MONTHS函数常用来计算 上年同期
  17. 机械制图及计算机绘图试题库,机械制图及计算机绘图--试题库2016版.pdf
  18. 面试题——正则表达式
  19. python基础知识点集锦一
  20. IFE阶段二学习总结

热门文章

  1. 2022-2028全球与中国电子水龙头市场现状及未来发展趋势
  2. c语言创建文件夹cpp,c语言实现文件夹的创建和删除
  3. Perl PPM安装模块
  4. 商业变现永不眠(四)- 关于收入的几个关键指标以及如何提升
  5. 中国银行业数字化转型研究报告 附下载
  6. 如何利用Reveal神器查看各大APP UI搭建层级
  7. 数据中心变电站: 从头开始设计
  8. 【转载】求买卖股票的最大利润
  9. android调用h5预加载图片,图片预加载 preload
  10. (四)Flutter 学习之 Dart 操作符、控制流和异常处理