SQL Server中的连接查询
单表查询中的GROUP BY子句
求各课程相应选课人数
select Cno,COUNT(Sno)
from SC
GROUP BY Cno;
带有HAVING短语指定筛选条件的查询
select Sno
from SC
GROUP BY Sno
HAVING COUNT(*)>3;
此处是先用GROUP BY子句进行分组,再用聚焦函数COUNT对每一组计数,在此基础上使用HAVING短语进行筛选,因为插入的数据没有满足此条件的,所以结果显示没有。
查询平均成绩达到条件的学生学号与平均成绩
此处因为WHERE子句不能用聚焦函数作为条件表达式,所以报错。
正确的查询语句如下:
select Sno,AVG(Grade)
from SC
GROUP BY Sno
HAVING AVG(Grade)>=90;
因为插入的数据中无满足条件的,所以没有结果截图
WHERE子句与HAVING短语的区别在于作用对象不同,前者作用于基本表或视图选择其中满足条件的元组,后者作用于组,选择其中满足条件的组。
连接查询
等值连接
当连接运算符为=时,称为等值连接,使用其他运算符的称为非等值连接。
查询学生及其选修课程的信息,该查询涉及两个表,此处通过其公共属性Sno来实现
select Student.*,SC.*
from Student,SC
WHERE Student.Sno=SC.Sno;
在本例中,WHERE子句中的属性名都加上了前缀,这是为了避免混淆,如果属性名在参与连接的各表中是唯一的,则可以省略,但在SQL Server中显示结果时前缀不会被显示。
使用自然连接来实现上述例子(在等值连接中吧目标列中重复的属性列去掉则为自然连接):
select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student,SC
WHERE Student.Sno=SC.Sno;
WHERE子句是由连接谓词与选择谓词组成的复合条件的查询
一条SQL语句可以同时完成选择和连接查询:
select Student.Sno,Sname
from Student,SC
WHERE Student.Sno=SC.Sno ANDSC.Cno='2'AND SC.Grade>80;
该查询比较高效,它先从SC表中挑出符合条件的元组然后和Student表中满足连接条件的元组进行连接从而得出最终的结果关系。
自身连接
连接操作不仅可以在两个表中进行,也可以一个表与自己进行连接,这就是自身连接。
查询每门课的间接选修课(即先修课的先修课),为此,我们要为该表去两个别名(可辨认即可)
select first.Cno,second.Cpno
from Course first,Course second
WHERE first.Cpno=second.Cno;
外连接
当想查询的信息中有某项信息为空时,如想要查询每个学生的基本情况及其选课情况,存在某些学生没选课的情况但仍要显示该学生为空的信息时就可以使用外连接。
select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student LEFT OUTER JOIN SC ON(Student.Sno=SC.Sno);
/*也可以使用USING来去掉结果中的重复值:FROM Student LEFT OUTER JOIN SC USING(Sno);*/
多表连接
连接操作除了可以是两表连接,自身连接外,还可以是两个以上的表进行连接,该连接称为多表连接。
查询每个学生的学号、姓名、选修的课程名及成绩
select Student.Sno,Sname,Cname,Grade
from Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;
在多表连接中,通常先进行两个表的连接,再将结果与第三个表连接,如此类推下去可以实现多表的连接,本例就是先将Student表与SC表连接,再将结果与Course表连接得到结果。
本次连接查询实验结束
下面附上创建表以及插入数据的语句:
create table Student
(Sno char(9) primary key,
Sname char(20) unique,
Ssex char(2),
Sage smallint,
Sdept char(20)
);create table Course
(Cno char(4) primary key,
Cname char(40) not null,
Cpno char(4),
Ccredit smallint,
foreign key(Cpno) references Course(Cno)
);create table SC
(Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno,Cno),
);insert into Student(Sno,Sname,Ssex,Sage,Sdept)
values('201215121','李勇','男','20','CS'),
('201215122','刘晨','女','20','CS'),
('201215123','王敏','女','18','MA'),
('201215125','张立','男','19','IS');insert into Course(Cno,Cname,Cpno,Ccredit)
values('1','数据库','5','4'),
('2','数学',NULL,'2'),
('3','信息系统','1','4'),
('4','操作系统','6','3'),
('5','数据结构','7','4'),
('6','数据处理',NULL,'2'),
('7','PASCAL语言','6','4');insert into SC(Sno,Cno,Grade)
values('201215121','1','92'),
('201215121','2','85'),
('201215121','3','88'),
('201215122','2','90'),
('201215122','3','80');
SQL Server中的连接查询相关推荐
- SQL Server中T-SQL语句查询使用的函数
SQL Server中T-SQL语句查询使用的函数 一,字符串函数 字符串函数用于对字符串数据进行处理,并返回一个字符串或数字. 函数名 描述 举例 CHARINDEX 用来寻找一个指定的字符串在另一 ...
- SQL server中的SELECT查询语句执行顺序
各位大牛们好第一次写博客有点小激动!以后我会把自己的心得分享给大家,求各种评论 SQL server 中SELSECT查询语句的执行顺序如下: (8) SELECT (9) DISTINCT (1 ...
- SQL Server中的模糊查询
查看全文 http://www.taodudu.cc/news/show-5862580.html 相关文章: SQL SERVER精品视频教程 运维教程之Microsoft SQL server 2 ...
- 浅谈SQL Server中统计对于查询的影响
简介 SQL Server查询分析器是基于开销的.通常来讲,查询分析器会根据谓词来确定该如何选择高效的查询路线,比如该选择哪个索引.而每次查询分析器寻找路径时,并不会每一次都去统计索引中包含的行数,值 ...
- mysql sql 连接查询语句_Mysql——sql数据库中的连接查询
1.1.1 交叉连接(CROSS JOIN) 交叉连接(CROSS JOIN):有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积. 例如:下面的语句1和语句2的结果是相同的. ...
- sql server使用DAC连接查询系统表
1.开启DAC连接 --分步执行SQL语句: --1 USE master; GO--2 SP_CONFIGURE'remote admin connections';--3 SP_CONFIGURE ...
- SQL SERVER中的纵横查询
关于sql的纵横查询,其实说白了就是pivot(行转列).unpivot(列转行).字符拼接.for xml path. 网上写关于这方面的东西太少,大多都是把他们分开写的,所以我给大家汇个总 给大家 ...
- SQL Server中的分页查询
分页查询很简单,具体代码如下: --分页查询--查询1-3行数据 select top 3 * from emp order by sal desc;--查询4-6行数据 select top 3 * ...
- 在SQL Server中为什么不建议使用Not In子查询
原文:在SQL Server中为什么不建议使用Not In子查询 在SQL Server中,子查询可以分为相关子查询和无关子查询,对于无关子查询来说,Not In子句比较常见,但Not In潜在会带来 ...
最新文章
- 程序员过年被亲戚鄙视:月薪1万5很一般,在大城市很难养活自己吧?
- 智能车竞赛中的车模足底按摩
- 《小岛经济学--鱼、美元和经济的故事》Digest
- 你知道socket.io中connect事件和connection事件的区别吗?
- CodeForces 321A Ciel and Robot(数学模拟)
- php 有indexof函数吗,详解PHP处理字符串类似indexof的方法函数
- 【渝粤题库】陕西师范大学210032学前心理学 作业(专升本)
- python 编程模型
- SpringCloud入门之Maven系统安装及配置
- 上大学有用吗?35岁以上的程序员都去哪里了
- websocket协议中获取 http 请求字符串
- send anywhere:一个全平台的文件传输神器
- cmd命令安装python第三方库_Python如何安装第三方库
- AD13转oRCAD原理图的操作方式
- 网络监控与安全 | 主要网络流量处理技术
- 北航计算机专业最低分,北京航空航天大学历年录取分数线多少及各省最低投档线统计表...
- 单片机 串口通信实验
- 编写一个函数判断一个整数是否为回文数。如果一个属从正的方向读和从反的方向读的结果相同,则该数就是回文数。...
- vue导出excel功能实现
- 塞班s60v3手电筒sisx_s60第三版_塞班v3软件下载网站_塞班s60 v3论坛
热门文章
- 纳米技术将为我们带来如普通眼镜般轻薄的VR/AR眼镜
- 什么叫做“程序计数器”?它能做什么?
- 多线程之旅(10)_QueueUserWorkItem和UnsafeQueueUserWorkItem的区别
- 冬至,祝福暖 爱至,心温暖
- android 高斯模糊性能,android 高斯模糊实现以及性能比较
- Nginx系列之支持SSL认证
- C#中ListView详解
- vue项目px转vw教程链接
- 图像平滑中“振铃”现象产生的原因
- 大数据 杨栋_杨栋与王庆国修理合同纠纷一案