SQL Server连接查询的实用教程_MsSql

来源:脚本之家  责任编辑:小易  

前沿小补充

例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连接查询内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:SQL设置SQL Server最大连接数及查询语句bat/cmd批处理连接SqlServer数据库查询脚本SQLServer 查询当前服务器有多少连接请求的语句SQL Server中的连接查询详解SQL Server 2012 多表连接查询功能实例代码

  • 本文相关:
  • 浅析sql server 临时表
  • .net下执行sqlcmd的方法
  • select * from sp_who的解决方案
  • sql server的优化建议与方法
  • 用sql获取某字符串中的数字部分的语句
  • sql语句检测sp4补丁是否安装
  • sql 存储过程分页代码 支持亿万庞大数据量
  • 如何控制sqlserver中的跟踪标记
  • 一条sql语句修改多表多字段的信息的具体实现
  • sql判断是否"存在",还在用 count 操作?很耗时的!
  • 如何连接sqlserver数据库
  • sqlserver 怎么从链接数据库查询
  • sqlserver怎么连接数据库
  • 如何连接SQLSERVER 2000数据库
  • 图解SQLSERVER联合查询和连接查询的区别
  • SQLSERVER 表 自身连接查询问题
  • Mysql和Mssql可以连表查询吗?
  • 关于SQLSERVER数据库连接查询的问题
  • 怎么远程连接sqlserver
  • asp连接sqlserver怎么写
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页sql设置sql server最大连接数及查询语句bat/cmd批处理连接sqlserver数据库查询脚本sqlserver 查询当前服务器有多少连接请求的语句sql server中的连接查询详解sql server 2012 多表连接查询功能实例代码浅析sql server 临时表.net下执行sqlcmd的方法select * from sp_who的解决方案sql server的优化建议与方法用sql获取某字符串中的数字部分的语句sql语句检测sp4补丁是否安装sql 存储过程分页代码 支持亿万庞大数据量如何控制sqlserver中的跟踪标记一条sql语句修改多表多字段的信息的具体实现sql判断是否"存在",还在用 count 操作?很耗时的!sql server 2012 安装图解教程(附sql server数据库入门学习总结microsoft sql server 2012 数据win7系统安装sqlserver2000的详细sql重复记录查询的几种方法sqlserver中distinct的用法(不重sql server错误代码大全及解释(sql-order by 多字段排序(升序、sql将一个表中的数据插入到另一个用sql语句添加删除修改字段、一些sql 截取字符串应用代码sqlserver的非聚集索引结构深度理解基于存储过程的详细介绍sql server中的执行引擎入门 图解sqlserver 快速生成汉字的首拼字母的函数sql where 1=1的优缺点分析sql中count或sum为条件的查询示例(sql查询sqlserver性能优化--间接实现函数索引或者sql server"错误 21002: [sql-dmo]用sql server高级内容之case语法函数概述及
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved