SQL练习题
sql 五十题

sql 五十题以下是一些SQL练习题,共50题:1. 什么是SQL?2. 什么是关系型数据库?3. 什么是主键?4. 什么是外键?5. 什么是索引?6. 什么是查询?7. 什么是插入操作?8. 什么是更新操作?9. 什么是删除操作?10. 什么是聚合函数?11. 什么是分组操作?12. 什么是排序操作?13. 什么是联接操作?14. 什么是子查询?15. 什么是视图?16. 什么是存储过程?17. 什么是触发器?18. 如何使用WHERE子句进行过滤?19. 如何使用ORDER BY子句进行排序?20. 如何使用GROUP BY子句进行分组?21. 如何使用HAVING子句进行分组过滤?22. 如何使用JOIN操作联接表?23. 如何使用聚合函数SUM、AVG、MIN、MAX?24. 如何使用聚合函数COUNT、COUNT()和COUNT(列名)的区别?25. 如何使用子查询嵌套查询?26. 如何创建视图并查询视图数据?27. 如何创建存储过程并调用存储过程?28. 如何创建触发器并触发触发器?29. 如何使用INSERT INTO语句插入数据?30. 如何使用UPDATE语句更新数据?31. 如何使用DELETE语句删除数据?32. 如何使用TRUNCATE TABLE语句清空表数据?33. 如何使用UNION操作符合并多个查询结果?34. 如何使用UNION ALL操作符合并多个查询结果(包括重复行)?35. 如何使用IN操作符筛选符合条件的多个值?36. 如何使用LIKE操作符进行模糊查询?37. 如何使用NOT操作符进行否定筛选?38. 如何使用BETWEEN操作符筛选范围值?39. 如何使用EXISTS操作符检查子查询结果是否存在?40. 如何使用NOT EXISTS操作符检查子查询结果是否存在(否定筛选)?41. 如何使用CASE语句进行条件判断和值转换?42. 如何使用DISTINCT关键字去除查询结果的重复行?43. 如何使用LIMIT关键字限制查询结果的行数?44. 如何使用JOIN操作连接多个表并筛选数据?45. 如何使用INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN的区别和用法?46. 如何使用视图提高查询效率和维护数据安全性?47. 如何使用存储过程存储复杂的业务逻辑和重复使用的查询语句?48. 如何使用触发器自动执行特定事件或数据修改操作?49. 如何优化SQL查询性能,提高数据库的响应速度?50. 如何安全地管理和维护数据库,确保数据的完整性和可靠性?。
SQL专项练习题

SQL专项练习题SQL专项练习题一、选择题:1、SQL语言的核心是_____。
A)数据查询B)数据定义C)数据操纵D)数据控制2、下列关于SQL语言特点的叙述错误的是_________。
A)SQL是一种一体化的语言B)SQL是一种高度过程化的语言C)SQL语言非常简洁D)SQL语言可以直接以命令方式交互使用,也可嵌入到程序中使用3、在SQL查询中,HAVING子句的作用是______。
A)指出分组查询的范围B)指出分组查询的值C)指出分组查询的条件人D)指出分组查询的字段4、在SQL中,与集合成员算术比较操作“元组<>ALL”的等价操作符是______。
A)NOT IN B)IN C)<>SOME D)=SOME5、下列利用空值查询的命令中,正确的一项是______。
A)IS NULL B)=NULL C)NULL D)SELECT NULL6、可以将两个SELECT语句的查询结果通过并运算合并成一个查询结果,需要子句_____。
A)WHERE B)UNION C)ORDER BY D)IN7、SQL的查询结果可以存放到多种类型的文件中,下列不能用来存放查询结果的是_________。
A)临时表B)永久性表C)视图D)文本文件8、下列不属于SQL数据操作功能的是_______。
A)新建表B)添加记录C)修改记录D)删除记录9、下列关于INSERT-SQL的叙述正确的是______。
A)在表末尾增加一条记录B)在表头增加一条记录C)在表中任意位置插入一条记录D)在表中可插入若干条记录10、若需统计“选课”表中已经选修了课程的学生人数,下面语句正确的是_____。
A)SELECT COUNT(DISTINCT 学生号)FROM 选课B)SELECT COUNT(学生号)FROM 选课C)SELECT COUNT(*)FROM 选课D)SELECT COUNT (DISTINCT *)FROM 选课11、“学生表”的结构为(学生号N(4),姓名C(8),性别C(2),年龄N(2)),其中学号为主索引,下面可使用SQL_INSERT插入到表中的记录是_______。
sql练习题

五、SQL语言及查询视图(一)选择题1. 在命令窗口执行SQL命令时,若命令要占用多行,续行符是______。
A)冒号(:) B)分号(;) C)逗号(,) D)连字符(-)2. 只有满足联接条件的记录才包含在查询结果中,这种联接为______。
A)左联接B)右联接C)内部联接D)完全联接3. SQL语言是______语言。
A)层次数据库B)网络数据库C)关系数据库D)非数据库4. SELECT-SQL语句是______。
A)选择工作区语句B)数据查询语句C)选择标准语句D)据修改语句5.SQL语言是具有______的功能。
A) 关系规范化、数据操纵、数据控制B)数据定义、数据操纵、数据控制C)数据定义、关系规范化、数据控制D)数据定义、关系规范化、数据操纵6.在SQL的计算查询中,用于求平均值的函数是______。
A)A VG B)A VERAGE C)SUM D)A VER7.SQL语句中查询条件短语的关键字是______。
A) WHERE B)FOR C) WHILE D)CONDITION8.SQL的核心是______。
A)数据查询B)数据修改C)数据定义D)数据控制9.SQL中可使用的通配符有______。
A)*(星号)B)%(百分号)C)_(下划线)D)B和C10.在SQL查询时,使用WHERE子句指出的是_____。
A)查询目标B)查询结果C)查询条件D)查询视图11.SQL实现分组查询的短语是______。
A)ORDER BY B)GROUP BY C)HA VING D)ASC12.将查询结果放在数组中应使用______短语。
A)INTO CURSOR B)TO ARRAY C)INTO TABLE D)INTO ARRAY13.SQL是哪几个英文单词的缩写?A)Standard Query Language B)Structured Query LanguageC)Select Query Language D)以上都不是14.SQL语言的数据操纵语句包括SELECT,INSERT,UPDATE和DELETE等。
SQL练习题,非题库

SQL练习题,非题库选择题1. 取出关系中的某些列,并消去重复的元组的关系运算称为(投影运算)。
2. 在学生数据库中,用SQL语句列出所有女生的姓名,应该对学生关系进行(选择和投影)操作。
3. 公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是(多对一)。
4. 在一个关系中,不能有相同的(属性)。
5. (数据库管理系统)是位于用户与操作系统之间的一层数据管理软件。
6. 数据库系统不仅包括数据库本身,还要包括相应的硬件,软件和(各类相关人员)。
7. SQL语言属于(据有关系代数和关系演算双重特点的语言)。
8. SQL Server采用的体系结构是(单进程、多线程)。
9. SQL语言是(结构化查询语言)。
10.SQL语言最主要功能是(数据查询)。
11.SQL Server2005在安装之前,应注意的事项是(SQL Server2005在安装之前,必须在操作系统级启用TCP/IP)。
12.下列关于身份验证模式叙述正确的是(只有Windows的当前用户才可选择Windows身份验证模式)。
13.在连接SQL Server时需要提供用户名和密码的身份验证模式是(SQL Server身份验证)。
14.在连接到数据库引擎时,有两种连接认证方式,其中在(SQL Server身份验证)方式下,需要客户端提供登录时需要的用户名和密码。
15.下列(pubs)不是SQL Server2005的系统数据库。
16.关于数据库事务日志文件叙述错误的是(如果未指定事务日志文件的增长量,则文件大小保持不变)。
17.每个数据库有且只能有一个(主数据文件)。
18.下面(队列、约束)不是SQL Server2005数据库对象。
19.如果数据库中的数据量非常大,除了将数据存储在主数据文件中,还可以将一部分数据存储在(次数据文件)。
20.用以交互地设计和测试T-SQL语句的是(查询命令窗口)。
最全的SQL练习题(做完你就是高手)

最全的SQL练习题(做完你就是⾼⼿)最全的SQL练习题(做完你就是⾼⼿)补充作业⼀设有三个关系:S(SNO, SNAME, AGE, SEX,Sdept)SC(SNO, CNO, GRADE)C(CNO, CNAME, TEACHER)试⽤关系代数表达式表⽰下列查询:-- 1、查询学号为S3学⽣所学课程的课程名与任课教师名。
SELECT c.`name`, c.teacher FROM student_class sc LEFT JOIN `class` c ON o = c.NO WHERE sc.sno = 's3';-- 2、查询⾄少选修LIU⽼师所教课程中⼀门课的⼥⽣姓名。
select s.sname from student as s where s.sno in(select DISTINCT sc.sno from student_class as sc left join class as c on o=o where c.teacher='LIU')and s.sex=2;-- 3、查询WANG同学不学的课程的课程号。
select o from class as c where o not in(select DISTINCT o from student as s inner join student_class as sc on s.sno=sc.sno where s.sname='WANG');-- 4、查询⾄少选修两门课程的学⽣学号。
select sno, count(*) as cou from student_class group by sno having cou>=2;-- 5、查询选修课程中包含LIU⽼师所教全部课程的学⽣学号。
select sc.sno from student_class as sc INNER JOIN class as c on o=o where c.teacher='LIU';补充作业⼆三个关系同上,试⽤SQL语⾔表⽰下列查询:1、查询门门课程都及格的学⽣的学号⽅法1:提⽰:根据学号分组,就得到每个学⽣所有的课程成绩,在某个学⽣这⼀组成绩⾥,如果他所有的课程成绩都⼤于60分则输出该组学⽣的学号Select sno frome sc group by sno having min(grade)>=60;2、查询既有课程⼤于90分⼜有课程不及格的学⽣的学号⾃⾝连接:Select sno from sc where grade >90 and sno in (select sno from sc where grade<60)3、查询平均分不及格的课程号和平均成绩Select cno , avg(GRADE) from sc group by cno having avg(grade)<60查询平均分及格的课程号和课程名Select o , Cname from SC,C where o=o group by o having avg(grade)>=604、找出⾄少选修了2号学⽣选修过的全部课程的学⽣提⽰:不存在这样的课程y,学⽣2选修了y,⽽学⽣x没有选。
sql练习题

sql练习题SQL练习题在现代信息化社会中,数据的处理和管理变得愈发重要。
而SQL(Structured Query Language)作为一种用于管理和处理关系型数据库的语言,也成为了各行各业从事数据分析和管理的必备技能之一。
为了提高自己的SQL技能,我们可以通过练习题来不断巩固和提升。
练习题一:查询商品信息假设有一个商品表(Product)和一个供应商表(Supplier),其中商品表包含了商品的ID、名称、价格和供应商ID等信息,供应商表包含了供应商的ID和名称等信息。
请写出一条SQL语句,查询出所有商品的名称、价格和供应商名称。
解答一:```sqlSELECT , Product.Price, FROM ProductJOIN Supplier ON Product.SupplierID = Supplier.ID;```练习题二:统计销售额假设有一个订单表(Orders)和一个订单详情表(OrderDetails),其中订单表包含了订单的ID、日期和客户ID等信息,订单详情表包含了订单详情的ID、订单ID、商品ID和数量等信息。
请写出一条SQL语句,统计每个客户的总销售额,并按销售额降序排序。
解答二:```sqlSELECT Orders.CustomerID, SUM(Product.Price * OrderDetails.Quantity) AS TotalSalesFROM OrdersJOIN OrderDetails ON Orders.ID = OrderDetails.OrderIDJOIN Product ON OrderDetails.ProductID = Product.IDGROUP BY Orders.CustomerIDORDER BY TotalSales DESC;```练习题三:查询员工信息假设有一个员工表(Employee)和一个部门表(Department),其中员工表包含了员工的ID、姓名和部门ID等信息,部门表包含了部门的ID和名称等信息。
SQL练习题

二、1.在学生成绩表tblCourseScore中的列Score用来存放某学生学习某课程的考试成绩(0~100分,没有小数), 用下面的哪种类型最节省空间? CA、intB、smallintC、tinyintD、decimal(3,0)2.定单表Orders的列OrderID的类型是小整型(smallint),根据业务的发展需要改为整型(integer),应该使用下面的哪条语句? CA、ALTER COLUMN OrderID integer FROM OrdersB、ALTER TABLE Orders ( OrderID integer )C、ALTER TABLE Orders ALTER COLUMN OrderID integerD、ALTER COLUMN Orders.OrderID integer3.一个数据库中的用户定义数据类型能够用于同一个服务器上的另一个数据库中吗?答:不可以。
4.你正在设计一个要存储数百万种不同产品的信息数据库,而且想以最少的空间存储产品信息。
每一个产品在products表中都有一行描述。
有时候,产品描述需要200个字符,但绝大多数产品描述只需要50个字符。
那么,你应该使用哪一种数据类型?答:nvarchar(200)5.有家企业要用表tblCustomerInfo来存储客户的信息。
客户的信息包括:代号(整型IDENTITY,从100001开始,每次增加5),名称(最长40个汉字),电话(20个字符),传真(20个字符),备注(最长1000个汉字)。
电话号码和传真号码要用同一自定义类型type_TelphoneNum。
(1)请写出创建该表的SQL语句。
Create table tblCustomerInfo( 代号 nvchar(80) not null ,名称 varchar(80),电话 type_TelphoneNum (20),传真 type_TelphoneNum (20),备注 nvarchar(1000) null)(2)后来因手机流行,需要在表tblCustomerInfo中再添加列“手机”,该列的类型也是type_TelphoneNum。
数据库的sql语句练习题

数据库的sql语句练习题1. 练习题一:查询语句基础在学生表(students)中,包含以下字段:学号(id)、姓名(name)、年龄(age)、性别(gender)、班级(class)、成绩(score)。
请编写SQL语句实现以下需求:a) 查询学生表中所有学生的信息。
b) 查询学生表中的男性学生信息。
c) 查询学生表中年龄为18岁的学生信息。
d) 查询学生表中成绩大于等于90分的学生信息。
e) 查询学生表中姓“张”的学生信息。
2. 练习题二:修改语句练习在学生表(students)中,某个学生的学号为1001,需要将该学生的年龄修改为20岁,请编写相应的SQL语句实现此操作。
3. 练习题三:插入语句练习在学生表(students)中添加一条新纪录,学号为1002,姓名为李明,年龄为19岁,性别为男,班级为三年级,成绩为87分,请编写相应的SQL语句实现此操作。
4. 练习题四:删除语句练习在学生表(students)中,某个学生的学号为1003,需要将该学生的信息从表中删除,请编写相应的SQL语句实现此操作。
5. 练习题五:使用多表查询存在两张表,学生表(students)和课程表(courses)。
学生表包含字段:学号(id)、姓名(name)、班级(class);课程表包含字段:课程编号(course_id)、课程名称(course_name)。
已知约德尔学院中,学号为1001的学生参加了编号为1的课程,请编写SQL语句查询学号为1001的学生所选的课程及课程名称。
6. 练习题六:排序查询练习在学生表(students)中,查询所有学生的信息,并按照成绩从高到低进行排序。
以上是数据库的SQL语句练习题,请按照上述要求编写相应的SQL语句进行解答。
祝你练习愉快,取得好成绩!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
测试表格--1.学生表Student(S#,Sname,Sage,Ssex)--S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别--2.课程表Course(C#,Cname,T#)--C# --课程编号,Cname 课程名称,T# 教师编号--3.教师表Teacher(T#,Tname)--T# 教师编号,Tname 教师姓名--4.成绩表SC(S#,C#,score)--S# 学生编号,C# 课程编号,score 分数创建测试数据学生表 Studentcreate table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男')insert into Student values('02' , N'钱电' , '1990-12-21' , N'男')insert into Student values('03' , N'孙风' , '1990-05-20' , N'男')insert into Student values('04' , N'李云' , '1990-08-06' , N'男')insert into Student values('05' , N'周梅' , '1991-12-01' , N'女')insert into Student values('06' , N'吴兰' , '1992-03-01' , N'女')insert into Student values('07' , N'郑竹' , '1989-07-01' , N'女')insert into Student values('08' , N'王菊' , '1990-01-20' , N'女')科目表Coursecreate table Course(C# varchar(10),Cname nvarchar(10),T# varchar(10)) insert into Course values('01' , N'语文' , '02')insert into Course values('02' , N'数学' , '01')insert into Course values('03' , N'英语' , '03')教师表Teachercreate table Teacher(T# varchar(10),Tname nvarchar(10))insert into Teacher values('01' , N'张三')insert into Teacher values('02' , N'李四')insert into Teacher values('03' , N'王五')成绩表SCcreate table SC(S# varchar(10),C# varchar(10),score decimal(18,1)) insert into SC values('01' , '01' , 80)insert into SC values('01' , '02' , 90)insert into SC values('01' , '03' , 99)insert into SC values('02' , '01' , 70)insert into SC values('02' , '02' , 60)insert into SC values('02' , '03' , 80)insert into SC values('03' , '01' , 80)insert into SC values('03' , '02' , 80)insert into SC values('03' , '03' , 80)insert into SC values('04' , '01' , 50)insert into SC values('04' , '02' , 30)insert into SC values('04' , '03' , 20)insert into SC values('05' , '01' , 76)insert into SC values('05' , '02' , 87) insert into SC values('06' , '01' , 31) insert into SC values('06' , '03' , 34) insert into SC values('07' , '02' , 89) insert into SC values('07' , '03' , 98)1. 查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数1.1 查询同时存在" 01 "课程和" 02 "课程的情况1.2 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为null )1.3 查询不存在" 01 "课程但存在" 02 "课程的情况2. 查询平均成绩大于等于60 分的同学的学生编号和学生姓名和平均成绩3. 查询在SC 表存在成绩的学生信息4. 查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为null )4.1 查有成绩的学生信息5. 查询「李」姓老师的数量6. 查询学过「张三」老师授课的同学的信息7. 查询没有学全所有课程的同学的信息8. 查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息9. 查询和" 01 "号的同学学习的课程完全相同的其他同学的信息10. 查询没学过"张三"老师讲授的任一门课程的学生姓名11. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩12. 检索" 01 "课程分数小于60,按分数降序排列的学生信息13. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩14. 查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列15. 按各科成绩进行排序,并显示排名,Score 重复时保留名次空缺15.1 按各科成绩进行排序,并显示排名,Score 重复时合并名次16. 查询学生的总成绩,并进行排名,总分重复时保留名次空缺16.1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺17. 统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比18. 查询各科成绩前三名的记录19. 查询每门课程被选修的学生数20. 查询出只选修两门课程的学生学号和姓名21. 查询男生、女生人数22. 查询名字中含有「风」字的学生信息23. 查询同名同性学生名单,并统计同名人数24. 查询1990 年出生的学生名单25. 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列26. 查询平均成绩大于等于85 的所有学生的学号、姓名和平均成绩27. 查询课程名称为「数学」,且分数低于60 的学生姓名和分数28. 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)29. 查询任何一门课程成绩在70 分以上的姓名、课程名称和分数30. 查询不及格的课程31. 查询课程编号为01 且课程成绩在80 分以上的学生的学号和姓名32. 求每门课程的学生人数33. 成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩34. 成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩35. 查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩36. 查询每门功成绩最好的前两名37. 统计每门课程的学生选修人数(超过5 人的课程才统计)。
38. 检索至少选修两门课程的学生学号39. 查询选修了全部课程的学生信息40. 查询各学生的年龄,只按年份来算41. 按照出生日期来算,当前月日< 出生年月的月日则,年龄减一42. 查询本周过生日的学生43. 查询下周过生日的学生44. 查询本月过生日的学生45. 查询下月过生日的学生答案参考,亲测,如有更优解答,有劳各位献上,供大家学习参考[sql]view plain copy1.select A.*,B.C#,B.score from (select * from SC where C#='01')A2.left join(select * from SC where C#='02')B3.on A.S#=B.S#4.where A.score>B.score5.--1 查询“ 01 ”课程比" 02 "课程成绩高的学生的信息及课程分数6.7.select * from (select * from SC where C#='01')A8.left join (select * from SC where C#='02')B on A.S#=B.S#9.where B.S# is not null10.--1.1 查询同时存在" 01 "课程和" 02 "课程的情况11.12.select * from (select * from SC where C#='01')A13.left join (select * from SC where C#='02')B on A.S#=B.S#14.--1.2 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为null)15.16.select * from SC where C#='02'and S# not in(select S# from SC where C#='01')17.--1.3 查询不存在" 01 "课程但存在" 02 "课程的情况18.19.select A.S#,B.Sname,A.dc from(select S#,AVG(score)dc from SC group by S#)A20.left join Student B on A.S#=B.S# where A.dc>=6021.--2. 查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩22.23.select * from Student where S# in (select distinct S# from SC)24.--3. 查询在 SC 表存在成绩的学生信息25.26.select B.S#,B.Sname,A.选课总数,A.总成绩from27.(select S#,COUNT(C#)选课总数,sum(score)总成绩from SC group by S#)A28.right join Student B on A.S#=B.S#29.--4. 查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为null)30.31.select A.S#,B.Sname,A.选课总数,A.总成绩from32.(select S#,COUNT(C#)选课总数,sum(score)总成绩from SC group by S#)A33.left join Student B on A.S#=B.S#34.--4.1 查有成绩的学生信息35.36.select COUNT(*)李姓老师数量from Teacher where Tname like '李%'37.--5.查询「李」姓老师的数量38.39.select * from Student40.where S# in(select distinct S# from SC41.where C#=(select C# from Course42.where T#=(select T# from Teacher where Tname='张三')))43.--6.查询学过「张三」老师授课的同学的信息44.45.select * from Student where S# in(select S# from SC group by S# having COUNT(C#)<3)46.--7.查询没有学全所有课程的同学的信息47.48.select * from Student49.where S# in(select distinct S# from SC where C# in(select C# from SC where S#='01')50.)51.--8. 查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息52.53.select * from Student54.where S# in(select S# from SC where C# in(select distinct C# from SC where S#='01') and S#<>'01'55.group by S#56.having COUNT(C#)>=3)57.--9. 查询和" 01 "号的同学学习的课程完全相同的其他同学的信息58.59.select Sname from Student60.where S# not in(select S# from SC61.where C# in(select C# from Course where T# in(select T# from Teacher where Tname='张三')62.)63.)--10. 查询没学过「张三」老师讲授的任一门课程的学生姓名64.65.select A.S#,A.Sname,B.平均成绩from Student A right join66.(select S#,AVG(score)平均成绩from SC where score<60 group by S# having COUNT(score)>=2)B67.on A.S#=B.S#--11.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩68.69.select S#,score from SC where C#='01' and score<60 order by score desc70.--12.检索" 01 "课程分数小于 60 ,按分数降序排列的学生信息71.72.select S#,max(case C# when'01'then score else 0 end)'01',73.max(case C# when'02'then score else 0 end)'02',74.MAX(case C# when'03'then score else 0 end)'03',AVG(score)平均分from SC75.group by S# order by平均分desc76.--13. (静态写法)按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩77.78.select distinct A.C#,Cname,最高分,最低分,平均分,及格率,中等率,优良率,优秀率from SC A79.left join Course on A.C#=Course.C#80.left join (select C#,MAX(score)最高分,MIN(score)最低分,AVG(score)平均分from SC group by C#)B on A.C#=B.C#81.left join (select C#,(convert(decimal(5,2),(sum(case when score>=60 then 1 else 0 end)*1.00)/COUNT(*))*100)及格率from SC group by C#)C on A.C#=C.C#82.left join (select C#,(convert(decimal(5,2),(sum(case when score >=70 and score<80 then 1 else 0 end)*1.00)/COUNT(*))*100)中等率from SC group by C#)D on A.C#=D.C#83.left join (select C#,(convert(decimal(5,2),(sum(case when score >=80 and score<90 then 1 else 0 end)*1.00)/COUNT(*))*100)优良率from SC group by C#)E on A.C#=E.C#84.left join (select C#,(convert(decimal(5,2),(sum(case when score >=90 then 1 else 0 end)*1.00)/COUNT(*))*100)优秀率85.from SC group by C#)F on A.C#=F.C#86.--14.查询各科成绩最高分、最低分和平均分:87.--以如下形式显示:课程 ID ,课程 name ,最高分,最低分,平均分,及格率,中等率,优良率,优秀率88.--及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=9089.90.select *,RANK()over(order by score desc)排名from SC91.--15. 按各科成绩进行排序,并显示排名,Score 重复时保留名次空缺92.93.select *,DENSE_RANK()over(order by score desc)排名from SC94.--15.1 按各科成绩进行排序,并显示排名,Score 重复时合并名次95.96.select *,RANK()over(order by总成绩desc)排名from(97.select S#,SUM(score)总成绩from SC group by S#)A98.--16. 查询学生的总成绩,并进行排名,总分重复时保留名次空缺99.100.select *,dense_rank()over(order by总成绩desc)排名from(101.select S#,SUM(score)总成绩from SC group by S#)A102.--16.1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺103.104.select distinct A.C#,ame,C.[100-85],C.所占百分比,D.[85-70],D.所占百分比,E.[70-60],E.所占百分比,F.[60-0],F.所占百分比105.from SC A106.left join Course B ON A.C#=B.C#107.left join (select C#,sum(case when score>85 and score<=100 then 1 else nul l end)[100-85],108.convert(decimal(5,2),(sum(case when score>85 and score<100 then 1 else nul l end))*1.00/COUNT(*))*100 所占百分比from SC group by C#)C on A.C#=C.C#109.left join (select C#,sum(case when score>70 and score<=85 then 1 else null e nd)[85-70],110.convert(decimal(5,2),(sum(case when score>70 and score<=85 then 1 else nul l end))*1.00/COUNT(*))*100 所占百分比from SC group by C#)D on A.C#=D.C# 111.left join (select C#,sum(case when score>60 and score<=70 then 1 else null e nd)[70-60],112.convert(decimal(5,2),(sum(case when score>60 and score<=70 then 1 else nul l end))*1.00/COUNT(*))*100 所占百分比from SC group by C#)E on A.C#=E.C# 113.left join (select C#,sum(case when score>0 and score<=60 then 1 else null end)[60-0],114.convert(decimal(5,2),(sum(case when score>0 and score<=60 then 1 else null e nd))*1.00/COUNT(*))*100 所占百分比from SC group by C#)F on A.C#=F.C#115.--17. 统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比116.117.select * from(select *,rank()over (partition by C# order by score desc)A fro m SC)B where B.A<=3118.--18. 查询各科成绩前三名的记录(方法 1)119.120.select a.S#,a.C#,a.score from SC a121.left join SC b on a.C#=b.C# and a.score<b.score122.group by a.S#,a.C#,a.score123.having COUNT(b.S#)<3124.order by a.C#,a.score desc125.--18. 查询各科成绩前三名的记录(取 a 的最高分与本表比较)(方法 2)126.127.select * from SC a where (select COUNT(*)from SC where C#=a.C# and score>a.s core)<3128.order by a.C#,a.score desc129.--18. 查询各科成绩前三名的记录(取 a)(方法 3)130.131.select C#,COUNT(S#)学生数from SC group by C#132.--19. 查询每门课程被选修的学生数133.134.select S#,Sname from Student135.where S# in(select S# from(select S#,COUNT(C#)课程数from SC group by S#)A wh ere A.课程数=2)136.--20. 查询出只选修两门课程的学生学号和姓名137.138.select Ssex,COUNT(Ssex)人数from Student group by Ssex139.--21. 查询男生、女生人数140.141.select * from Student where Sname like '%风%'142.--22. 查询名字中含有「风」字的学生信息143.144.select A.*,B.同名人数from Student A145.left join (select Sname,Ssex,COUNT(*)同名人数from Student group by Sname,Sse x)B146.on A.Sname=B.Sname and A.Ssex=B.Ssex147.where B.同名人数>1148.--23. 查询同名同性学生名单,并统计同名人数149.150.select * from Student where YEAR(Sage)=1990151.--24.查询 1990 年出生的学生名单152.153.select C#,AVG(score)平均成绩from SC group by C# order by平均成绩desc,C# 154.--25. 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列155.156.select A.S#,A.Sname,B.平均成绩from Student A157.left join (select S#,AVG(score)平均成绩from SC group by S#)B on A.S#=B.S# 158.where B.平均成绩>85159.--26. 查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩160.161.select B.Sname,A.score from(select * from SC where score<60 and C#=(select C # from Course where Cname='数学'))A162.left join Student B on A.S#=B.S#163.-- 27. 查询课程名称为「数学」,且分数低于 60 的学生姓名和分数164.165.select A.S#,B.C#,B.score from Student A left join SC B on A.S#=B.S#166.-- 28. 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)167.168.select A.Sname,ame,D.score from169.(select B.*,ame from(select * from SC where score>70)B left join Course C on B.C#=C.C#)D170.left join Student A on D.S#=A.S#171.-- 29. 查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数172.173.select * from SC where score<60174.-- 30. 查询不及格的课程175.176.select A.S#,B.Sname from (select * from SC where score>80 and C#=01)A 177.left join Student B on A.S#=B.S#178.--31. 查询课程编号为01且课程成绩在80分以上的学生的学号和姓名179.180.select C#,COUNT(*)学生人数from SC group by C#181.--32. 求每门课程的学生人数182.183.select top 1* from SC184.where C#=(select C# from Course where T#=(select T# from Teacher where Tname ='张三'))185.order by score desc186.--33. 成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩187.188.select *from(select *,DENSE_RANK()over (order by score desc)A189.from SC190.where C#=(select C# from Course where T#=(select T# from Teacher where Tname ='张三')))B191.where B.A=1192.--34. 成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩193.194.select C.S#,max(C.C#)C#,max(C.score)score from SC C195.left join(select S#,avg(score)A from SC group by S#)B196.on C.S#=B.S#197.where C.score=B.A198.group by C.S#199.having COUNT(0)=(select COUNT(0)from SC where S#=C.S#)200.--35. 查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩201.202.select * from203.(select *,ROW_NUMBER()over(partition by C# order by score desc)A from SC)B 204.where B.A<3205.--36. 查询每门功成绩最好的前两名206.207.select C#,COUNT(S#)选修人数from SC208.group by C#209.having COUNT(S#)>5210.order by选修人数desc,C#211.--37.统计每门课程的学生选修人数(超过5人的课程才统计)。