SQL Server连接查询的实用教程
前沿小补充
例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,sc select * 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连接查询的文章就介绍到这了,更多相关sql server连接查询内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: LeetCode130被围绕的区域
下一篇: 清朝康熙皇帝是怎么平定三藩之乱的?
推荐阅读
-
快速入门:使用Azure 数据 Studio进行连接和查询 Azure SQL 数据库
-
快速入门:使用Azure 数据 Studio进行连接和查询 Azure SQL 数据仓库中的数据
-
基于Linux下PHP连接SQL Server的FreeTDS配置
-
mysql-求助MySQL的关于sql语句怎么写??三表的查询~~~请大神进来帮忙~~~~~
-
对MySql查询缓存及SQL Server过程缓存的理解及总结_MySQL
-
sql查询的相关有关问题
-
SQL Server 中的事务(含义,属性,管理)
-
SQL Server2008 数据库误删除数据的恢复方法分享
-
SQL Server2005与SQLServer2008并存时, 怎样连接到2008
-
在SQL中设置允许同时连接的用户数_PHP教程