首页 数据库 mysql教程 SQL Server 数据查询 --- 复杂查询

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

Jun 07, 2016 pm 05:49 PM

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;

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

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

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

 

 代码如下 复制代码
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';

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Hibernate 框架中 HQL 和 SQL 的区别是什么? Hibernate 框架中 HQL 和 SQL 的区别是什么? Apr 17, 2024 pm 02:57 PM

HQL和SQL在Hibernate框架中进行比较:HQL(1.面向对象语法,2.数据库无关的查询,3.类型安全),而SQL直接操作数据库(1.与数据库无关的标准,2.可执行复杂查询和数据操作)。

Oracle SQL中除法运算的用法 Oracle SQL中除法运算的用法 Mar 10, 2024 pm 03:06 PM

《OracleSQL中除法运算的用法》在OracleSQL中,除法运算是常见的数学运算之一。在数据查询和处理过程中,除法运算可以帮助我们计算字段之间的比例或者得出特定数值的逻辑关系。本文将介绍OracleSQL中除法运算的用法,并提供具体的代码示例。一、OracleSQL中除法运算的两种方式在OracleSQL中,除法运算可以使用两种不同的方式进行

Oracle和DB2的SQL语法比较与区别 Oracle和DB2的SQL语法比较与区别 Mar 11, 2024 pm 12:09 PM

Oracle和DB2是两个常用的关系型数据库管理系统,它们都有自己独特的SQL语法和特点。本文将针对Oracle和DB2的SQL语法进行比较与区别,并提供具体的代码示例。数据库连接在Oracle中,使用以下语句连接数据库:CONNECTusername/password@database而在DB2中,连接数据库的语句如下:CONNECTTOdataba

详解MyBatis动态SQL标签中的Set标签功能 详解MyBatis动态SQL标签中的Set标签功能 Feb 26, 2024 pm 07:48 PM

MyBatis动态SQL标签解读:Set标签用法详解MyBatis是一个优秀的持久层框架,它提供了丰富的动态SQL标签,可以灵活地构建数据库操作语句。其中,Set标签是用于生成UPDATE语句中SET子句的标签,在更新操作中非常常用。本文将详细解读MyBatis中Set标签的用法,以及通过具体的代码示例来演示其功能。什么是Set标签Set标签用于MyBati

SQL中的identity属性是什么意思? SQL中的identity属性是什么意思? Feb 19, 2024 am 11:24 AM

SQL中的Identity是什么,需要具体代码示例在SQL中,Identity是一种用于生成自增数字的特殊数据类型,它常用于唯一标识表中的每一行数据。Identity列通常与主键列配合使用,可以确保每条记录都有一个独一无二的标识符。本文将详细介绍Identity的使用方式以及一些实际的代码示例。Identity的基本使用方式在创建表时,可以使用Identit

SQL出现5120错误怎么解决 SQL出现5120错误怎么解决 Mar 06, 2024 pm 04:33 PM

解决办法:1、检查登录用户是否具有足够的权限来访问或操作该数据库,确保该用户具有正确的权限;2、检查SQL Server服务的帐户是否具有访问指定文件或文件夹的权限,确保该帐户具有足够的权限来读取和写入该文件或文件夹;3、检查指定的数据库文件是否已被其他进程打开或锁定,尝试关闭或释放该文件,并重新运行查询;4、尝试以管理员身份运行Management Studio等等。

如何使用SQL语句在MySQL中进行数据聚合和统计? 如何使用SQL语句在MySQL中进行数据聚合和统计? Dec 17, 2023 am 08:41 AM

如何使用SQL语句在MySQL中进行数据聚合和统计?在进行数据分析和统计时,数据聚合和统计是非常重要的步骤。MySQL作为一个功能强大的关系型数据库管理系统,提供了丰富的聚合和统计函数,可以很方便地进行数据聚合和统计操作。本文将介绍使用SQL语句在MySQL中进行数据聚合和统计的方法,并提供具体的代码示例。一、使用COUNT函数进行计数COUNT函数是最常用

数据库技术大比拼:Oracle和SQL的区别有哪些? 数据库技术大比拼:Oracle和SQL的区别有哪些? Mar 09, 2024 am 08:30 AM

数据库技术大比拼:Oracle和SQL的区别有哪些?在数据库领域中,Oracle和SQLServer是两种备受推崇的关系型数据库管理系统。尽管它们都属于关系型数据库的范畴,但两者之间存在着诸多不同之处。在本文中,我们将深入探讨Oracle和SQLServer之间的区别,以及它们在实际应用中的特点和优势。首先,Oracle和SQLServer在语法方面存

See all articles