SQL Server 数据查询 --- 复杂查询

php中文网
发布: 2016-06-07 17:49:29
原创
1281人浏览过

SQL Server 数据查询 --- 复杂查询 有需要的朋友可参考一下。

/********************************************

例1查询每个学生及其选修课程的情况

*********************************************/

 代码如下 复制代码

SELECT STUDENT.*,SC.* FROM SC,STUDENT WHERE SC.SNO = STUDENT.SNO;

/********************************************

对例1用自然连接完成

*********************************************/

 代码如下 复制代码
 SELECT STUDENT.SNAME,STUDENT.SSEX,STUDENT.SAGE,STUDENT.SDEPT,SC.*
 FROM SC,STUDENT       
 WHERE SC.SNO = STUDENT.SNO;

/*****************************************

查询每一门课程的间接先修课

*****************************************/

 

若冰企业商务平台.net
若冰企业商务平台.net

集企业自助建站、网络营销、商品推广于一体的系统 功能说明: 1、系统采用Microsoft SQL Server大型数据库支持,查询数据库用的全是存储过程,速度和性能极好。开发环境是vs.net,采用4层结构,具有很好的可维护性和可扩冲性。 2、用户注册和登陆 未注册用户只具备浏览商品、新闻和留言功能;要采购商品,需接受服务协议并填写相关注册信息成为正式用户后方可进行,以尽可能减少和避免无效

若冰企业商务平台.net 0
查看详情 若冰企业商务平台.net
 代码如下 复制代码
SELECT SY.CNO,SX.CPNO FROM COURSE SX,COURSE SY WHERE SX.CNO = SY.CPNO

/********************************************

对例1用左外连接连接完成

*********************************************/

 代码如下 复制代码
 SELECT STUDENT.SNAME,STUDENT.SSEX,STUDENT.SAGE,STUDENT.SDEPT,SC.*
 FROM   STUDENT LEFT JOIN SC ON(SC.SNO = STUDENT.SNO);

/********************************************

查询每个学生的学号、姓名、选修的课程名及成绩 *********************************************/

 代码如下 复制代码

 SELECT STUDENT.SNO,STUDENT.SNAME,COURSE.CNAME,COURSE.CCREDIT
 FROM SC,STUDENT,COURSE   
 WHERE SC.CNO =COURSE.CNO AND SC.SNO = STUDENT.SNO;

/********************************************  

查询与刘晨在同一个系学习的学生

*********************************************/

 代码如下 复制代码

 SELECT SX.*
 FROM STUDENT SX   
 WHERE SX.SDEPT IN  (
              SELECT SY.SDEPT FROM STUDENT SY WHERE SY.SNAME='刘晨'
 );
/************   

或者如下:

 代码如下 复制代码

 SELECT SX.*
 FROM STUDENT SX, STUDENT SY      
 WHERE SX.SDEPT = SY.SDEPT AND SY.SNAME = '刘晨';  或者:

 SELECT *
 FROM STUDENT SX
 WHERE EXISTS (
          SELECT * FROM STUDENT SY WHERE SY.SDEPT = SX.SDEPT AND SY.SNAME='刘晨'
 );  **************/

 

/********************************************  

查询选修了课程名为"信息系统"的学生学号和姓名 *********************************************/

 

 代码如下 复制代码
 SELECT SNO, SNAME
 FROM STUDENT       
 WHERE SNO IN  (
         SELECT SNO FROM SC
         WHERE  CNO IN  (
                     SELECT CNO FROM COURSE
                     WHERE CNAME = '信息系统'
                    )
 );  

/********************************************  

找出每个学生超过他选修课程平均成绩的课程号

*********************************************/

 

 代码如下 复制代码

SELECT SX.SNO,SX.CNO
 FROM SC SX
 WHERE SX.GRADE  >  (
                        SELECT AVG(GRADE)
                       FROM SC SY              
                        WHERE SX.SNO = SY.SNO
);

/*****************************************************  

查询其他系中比计算机科学系某一学生年龄小的学生姓名和年龄

*******************************************************/

 代码如下 复制代码


 SELECT SNAME, SAGE
 FROM STUDENT   
 WHERE SAGE                        SELECT SAGE
                       FROM STUDENT 
                       WHERE SDEPT='CS'
                    )
       AND SDEPT'CS';

/*****************************************************  

查询其他系中比计算机科学系所有学生年龄小的学生姓名和年龄

*******************************************************/

 代码如下 复制代码

 SELECT SNAME, SAGE
 FROM STUDENT   
 WHERE SAGE                        SELECT SAGE
                      FROM STUDENT 
                       WHERE SDEPT='CS' 
                    )
       AND SDEPT'CS';

/*****************************************************  

查询所有选修了1号课程的学生姓名

*******************************************************/

 代码如下 复制代码


 SELECT SNAME
 FROM STUDENT   
 WHERE EXISTS   (
                   SELECT * FROM SC           
                   WHERE SC.SNO = STUDENT.SNO AND SC.CNO='1'          
 );

/******************************************

查询选修了全部课程的学生姓名

*******************************************/

 代码如下 复制代码

 SELECT SNAME
 FROM STUDENT
 WHERE NOT EXISTS (
                     SELECT *
                     FROM COURSE
                     WHERE NOT EXISTS   (
                                           SELECT *
                                           FROM SC
                                           WHERE STUDENT.SNO = SC.SNO AND COURSE.CNO = SC.CNO
                                        )
 );

/*****************************************************

查询至少选修了学生200215122选修的全部课程的学生号码

*****************************************************/

 代码如下 复制代码

 SELECT DISTINCT SNO
 FROM SC X    
 WHERE NOT EXISTS (
                     SELECT *
                     FROM SC Y
                    WHERE SNO='200215122' AND NOT EXISTS (
                                                            SELECT *
                                                            FROM SC Z
                                                             WHERE Z.SNO = X.SNO AND Y.CNO = Z.CNO             
                                                           )
 );

/**********************************************************

从自身表中选择一条记录,修改某个字段再回插到自身表中

这里的INSERT INTO 可以用来插入子查询 *********************************************************/

 代码如下 复制代码

 INSERT INTO COURSE(CNO,CNAME,CPNO,CCREDIT)
       SELECT '8',CNAME,CPNO,CCREDIT FROM  COURSE WHERE  CNO='2';

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号