数据库 简单查询 Sql Server 学生表 课程表 选课表

摘要:
SELECTSname,Cname,Grade FROM学生,课程,SC其中学生.Sno=SC.SnoandSC.Cno=课程.Cno;2.查询所有参加“数据库”课程的学生的分数。SELECTStudent.Snow,Sname,Cname,GradeFROMStudent,Course,SC其中Cname=“数据库”ANDCourse。Cno=sc。CnoANDStudent.Sno=sc.Sno;3.询问其他与“李勇”Sname.SELECTx.SnameFROMStudentxwhere的同性同学。Ssex=ANDx。蜗牛!='李咏4。查询所有学生的基本信息和课程选择,包括未选择课程的学生/*SELECTStudent.*,SC.*FROMStudent,SCwhereStudent。斯诺=sc。Sno*/SELECTStudent.*,SC.*来自学生左外角5。查询参加过课程1且得分超过90分的学生的姓名。选择SnameFROM学生,SCWHERE学生。斯诺=sc。SnoANDCno='1'ANDGrade˃906。查询学生ID为200215121的所有同龄学生的Sno和Sname列。

创建教材中的三张表格,并输入相应的数据

Create table student(
	Sno char(9),
	Same char(20),
	Ssex char(2),
	Sage smallint,
	Sdept char(20)
);
Create table course(
	Cno char(4),
	Cname char(40),
	Cpno char(4),
	Ccredit smallint
);
Create table sc(
	Sno char(9),
	Cno char(4),
	Grade smallint
);
Insert into student values(‘200215121’,’李勇’,’男’,20,’cs’);
Insert into student values(‘200215122’,’刘晨’,’女’,19,’cs’);
Insert into student values(‘200215123’,’王敏’,’女’,18,’ma’);
Insert into student values(‘200515124’,’张立’,’男’,19,’is’);  
Insert into course values (‘1’,’数据库’,’5’,4);
Insert into course values (‘2’,’数学’,NULL,2);	
Insert into course values(‘3’,’信息系统’,’1’,4);
Insert into course values(‘4’,’操作系统’,’6’,3);
Insert into course values(‘5’,’数据结构’,’7’,4);
Insert into course values(‘6’,’数据处理’,NULL,2);
Insert into course values(‘7’,’pascal语言’,’6’,4);
Insert into sc values(‘200215121’,’1’,92);
Insert into sc values(‘200215121’,’2’,85);
Insert into sc values(‘200215121’,’3’,88);
Insert into sc values(‘200215122’,’2’,90);
Insert into sc values(‘200215122’,’3’,80);

查询语句1:

1.  列出所有不姓李的所有学生;

select*FROMStudent

whereSnameNOTLIKE'%'

 

2.  列出姓“张”且全名为2个汉字的学生

select*FROMStudent

whereSnameLIKE'_'

 

3.  显示在1993年以后出生的学生的基本信息;

select*FROMStudent

whereSage<2015-1993

 

4.  查询出课程名含有“数据”字串的所有课程基本信息;

select*FromCourse

whereCnameLIKE'%数据%'

 

5.  列出选修了‘1’课程的学生学号,按成绩的降序排列;

selectSnoFROMSC

whereCno='1'ORDERBYGradeDESC

 

6.  列出课程表中全部信息,按先修课的升序排列;

select*FROMCourseORDERBY CpnoASC

 

7.  列出年龄超过平均值的所有学生名单,按年龄的降序显示;

select*FROMStudent

whereSage>(SELECTAVG(Sage)

FROMStudent)ORDERBYSage DESC

 

8.  按照出生年份升序显示所有学生的学号、姓名、性别、出生年份及院系,在结果集中列标题分别指定为“学号,姓名,性别,出生年份,院系”;

selectSno学号,Sname姓名,Ssex性别,2014-Sage出生年月,Sdept院系

FROMStudentORDERBY 2014-SageASC

 

9.  按照课程号、成绩降序显示课程成绩在80-90之间的学生的学号、课程号及成绩

selectSno,Cno,GradeFROMSC

whereGradebetween 80AND 90ORDERBYCno DESC,GradeDESC

 

10.显示学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为“学生总人数,平均年龄”;

select COUNT(DISTINCTSno)学生总人数,AVG(Sage)平均年龄 

FROMStudent

 

11.显示选修的课程数大于2的各个学生的选修课程数;

selectSno学号,COUNT(Sno)选修课程数

FROMSCGROUPBYSnoHAVINGCOUNT(*)>2

 

12.显示平均成绩大于“2002151022”学生平均成绩的各个学生的学号、平均成绩;

selectSno,AVG(Grade)

      from SC

      Group bySno

      having AVG(Grade)>(selectAVG(Grade)fromSC

whereSno='200215122')

 

 

查询语句2:

1、查询所有学生的Sname、Cname和Grade列。

SELECTSname,Cname,Grade

    FROM Student,Course,SC

    where Student.Sno=SC.SnoandSC.Cno=Course.Cno;

 

2、查询所有选修“数据库”课程的同学的成绩。

SELECTStudent.Sno,Sname,Cname,Grade

    FROM Student,Course,SC

    where Cname='数据库'ANDCourse.Cno=sc.CnoANDStudent.Sno=sc.Sno;

 

3、查询和“李勇”同性别的同学Sname.

SELECTx.SnameFROMStudentx

    where x.Ssex=(selectSsexFROMStudenty WHEREy.Sname='李勇')ANDx.Sname!='李勇'

 

4、查询所有同学的基本情况和选课情况,包括未选课的同学。

/* SELECTStudent.*,SC.* FROM Student,SC where Student.Sno=sc.Sno */

SELECTStudent.*,SC.*

    FROM StudentLEFTOUTERJOINSCON(Student.Sno=SC.Sno)

 

5、查询选修1号课程且成绩高于90分的同学的名字。

SELECTSnameFROMStudent,SC

    WHERE Student.Sno=sc.SnoANDCno='1'ANDGrade>90

 

6、查询和学号为200215121的同学相同年龄的所有学生的Sno、Sname列。

由于该题学号为200215121时,没有其他同学与他年龄相同,故实验中把学号改为200215122。查询结果包括“刘晨”自己。

SELECTx.Sno,x.SnameFROMStudentx

    where x.Sage=(SELECTy.SageFROMStudentyWHERE y.Sno='200215122')

 

7、查询刘晨同学所有的成绩。

SELECTSname,Cno,Grade

    FROM Student,SC

    where Student.Sname='刘晨'ANDStudent.Sno=Sc.Sno

 

8、查询非计算机系的不超过计算机系所有学生的年龄的学生姓名。

SELECTx.SnameFROMStudentx

    WHERE x.Sage<(SELECTMIN(y.Sage)

    FROM StudentyWHEREy.Sdept='CS')ANDx.Sdept!='CS'

 

查询语句3

1 、使用带IN谓词的子查询

(1)   查询与刘晨在同一个系学习的学生的学号和性名。

selectSno,SnameFROMStudent

    WHERE SdeptIN(SELECTSdeptFromStudent WHERESname='刘晨')

ANDSname!='刘晨'

(2)   查询选修了数据库课程的学生的学号和姓名。

SELECTSno,SnameFromStudent

    WHERE SnoIN(SELECTSnoFromSC WHERECno

IN(SELECTCnoFROMCourse WHERECnameIN('数据库')))

 

(3)   查询选修了1号课程和2号课程的学生的学号和姓名。

SELECTSno,SnameFROMStudent

    WHERE SnoIN(SELECTSnoFROMSC WHERECnoIN('1','2'))

2 、使用带比较运算的子查询

(4)   查询比男生平均年龄小的所有学生的信息。

SELECT*FROMStudent/*因为AVG是采取舍去计数,故要加等号*/

    WHERE Sage<=(SELECTAVG(Sage)FROMStudentWHERE Ssex='')

 

(5)   查询比王敏年龄大的所有学生的信息。

SELECT*FROMStudent

    WHERE Sage>(SELECTSageFROMStudent WHERESname='王敏')

 

3 、使用带有ANY,ALL谓词的子查询

(6)   查询其它系中比计算机系CS所有学生年龄都要小的学生姓名和年龄。

SELECTSname,SageFROMStudent

    WHERE Sdept!='CS'

    AND Sage<=ALL(SELECTSageFROMStudent WHERESdept='CS')

 

(7)   查询与计算机系所有学生的年龄均不同的学生学号,姓名和年龄

SELECTSno,Sname,SageFROMStudent

WHERESage!=ALL(SELECTSageFROMStudent WHERESdept='CS')

 

 

4 、使用带Exists谓词的子查询和相关子查询

(8)   查询选修了数据库的学生的姓名和学号

SELECTSname,SnoFROMStudent

    WHERE EXISTS(SELECT*FROMSC

                  WHERE Student.Sno=SnoANDCno

IN(SELECTCnoFROMCourse WHERECname='数据库'))

 

(9)   查询没有选修数据库的学生姓名和学号

SELECTSname,SnoFROMStudent

    WHERE NOTEXISTS(SELECT*FROMSC

                     WHERE Student.Sno=SnoANDCno

IN(SELECTCnoFROMCourse WHERECname='数据库'))

 

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

SELECTSnameFROMStudent

    WHERE EXISTS(SELECT*FROMSC

                     WHERE Student.Sno=SnoANDCno='1')

 

(11)查询没有人选修的课程的课程号和课程名。

SELECTCno,CnameFROMCourse

    WHERE NOTEXISTS(SELECT*FROMSC WHERECourse.Cno=Cno)

 

 

免责声明:文章转载自《数据库 简单查询 Sql Server 学生表 课程表 选课表》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇杂志翻页效果(基于jQuery开源版的修改)Python基础汇总001_txt文件读写、字典使用等下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SqlServer数据库脱机和分离的区别

脱机和分离的区别: 分离和脱机都可以使数据库不能再被使用,但是分离后需要附加才能使用,而脱机后只需联机就可以用了。 附加数据库报错: 无法打开物理文件 XXX.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server,错误:5120) 解决方法: 找到xxx.MDF与xxx_log.LDF文件和所在的文件夹 右键-属性...

SQL server数据库创建代码,filegroup文件组修改,

以下示例在 SQL Server 实例上创建了一个数据库。该数据库包括一个主数据文件、一个用户定义文件组和一个日志文件。主数据文件在主文件组中,而用户定义文件组包含两个次要数据文件。ALTER DATABASE 语句将用户定义文件组指定为默认文件组。然后通过指定用户定义文件组来创建表。 USE master; GO -- Create the data...

一人身兼多个项目时的“课程表”工作模式实践

      作为一名在top500外企工作刚满一年的应届小硕,刚进公司时,先是漫长的培训,然后渐渐地开始成为其他人lead的项目resource,委派的事情也逐渐有分量,从打酱油到打杂到负责设计局部架构,这样日积月累,目前,自己已经在4、5项目上担任着直接影响项目进度的角色,加上自己申请成功的并开始lead的一个项目,现在时间严重不够用了,真是有种被五马...

c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)

1.首先定义数据库操作的标准接口IDBAccess,定义接口的基本功能; 2.通过枚举型参数,动态创建接口的实例(工厂模式) 3.基类实现接口,派生类完成具体功能 4.具体请参见代码; using System;using System.Data;using System.Data.Common;using System.Data.OleDb;u...

数据科学家含金量最高的5个数据科学认证,先马后看!

  数据科学家含金量最高的5个数据科学认证,先马后看!   尽管关于这个话题的文章不计其数,但文本作者想要找寻那种为大部分数据科学家所用而又有特色的工具及其认证。这些认证有的是免费的,有的比较便宜,但都值得尝试。   不过,这还是要取决于你在数据科学领域的关注重点和发展方向。在数据科学从业的道路上,每个人想要获得证书的原因有很多;有的证书可能很直白,例如数...

SqlServer数据库基本用法

1. 利用T-SQL语句,创建数据库(工资管理数据库),要求如下: 数据库初始大小:3MB;文件大小按兆字节3MB自动增长,增长限制为:15MB; 数据库日志文件初始大小:1MB; 文件大小按百分比5%自动增长,增长限制为:10MB; 设定数据库文件保存路径为D:gzgl,其余为默认。 create database工资管理数据库 on(name=工资管...