• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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连接查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • SQL设置SQL Server最大连接数及查询语句
    • bat/cmd批处理连接SqlServer数据库查询脚本
    • SQLServer 查询当前服务器有多少连接请求的语句
    • SQL Server中的连接查询详解
    • SQL Server 2012 多表连接查询功能实例代码
    上一篇:sqlserver添加sa用户和密码的实现
    下一篇:SQL Server使用脚本实现自动备份的思路详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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