数据库查询练习
mysql 查询100题

mysql查询100题1.如何创建一个新表?2.如何向表中插入数据?3.如何从表中选择所有记录?4.如何更新表中的记录?5.如何删除表中的记录?6.如何使用WHERE子句来过滤结果?7.如何使用ORDER BY子句对结果进行排序?8.如何使用GROUP BY子句对结果进行分组?9.如何使用HAVING子句过滤分组的结果?10.如何使用JOIN连接两个或多个表?11.如何使用INNER JOIN,LEFT JOIN,RIGHT JOIN和FULL JOIN?12.什么是子查询,如何使用它?13.如何使用UNION和UNION ALL操作符合并多个查询的结果?14.如何使用LIMIT子句限制查询的结果数量?15.如何创建和使用索引以提高查询性能?16.如何创建和使用视图?17.如何使用存储过程?18.如何使用触发器?19.如何管理数据库事务?20.如何使用用户定义的变量?21.如何使用CASE表达式?22.如何在查询中使用正则表达式?23.如何使用JSON数据类型和函数?24.如何使用空间数据类型和函数?25.如何优化查询性能?26.如何使用全文搜索?27.如何处理日期和时间数据类型?28.如何管理数据库的安全性?29.如何使用分区表?30.如何备份和恢复数据库?31.如何使用聚合函数(如COUNT、SUM、AVG、MIN、MAX)?32.如何使用GROUP_CONCAT函数?33.如何使用窗口函数(如ROW_NUMBER、RANK、DENSE_RANK、NTILE)?34.如何使用EXISTS和NOT EXISTS子句?35.如何使用IN和NOT IN子句?36.如何使用ALL和ANY操作符?37.如何使用COALESCE函数?38.如何使用IFNULL函数?39.如何使用CASE表达式的ELSE子句?40.如何使用正则表达式进行模糊匹配?41.如何使用全文搜索进行复杂查询?42.如何创建和使用自定义函数?43.如何创建和使用存储过程?44.如何创建和使用触发器?45.如何管理数据库事务?46.如何使用用户定义的变量?47.如何使用JSON数据类型和函数?48.如何使用空间数据类型和函数?49.如何优化查询性能?50.如何使用分区表?51.如何备份和恢复数据库?52.如何使用视图?53.如何使用索引以提高查询性能?54.如何使用子查询?55.如何使用UNION和UNION ALL操作符合并多个查询的结果?56.如何使用LIMIT子句限制查询的结果数量?57.如何使用HAVING子句过滤分组的结果?58.如何使用JOIN连接两个或多个表?59.如何使用INNER JOIN,LEFT JOIN,RIGHT JOIN和FULL JOIN?60.如何使用ORDER BY子句对结果进行排序?61.如何使用GROUP BY子句对结果进行分组?62.如何使用WHERE子句来过滤结果?63.如何使用UPDATE语句更新表中的记录?64.如何使用DELETE语句删除表中的记录?65.如何使用INSERT语句向表中插入数据?66.如何使用SELECT语句从表中选择所有记录?67.如何使用CREATE TABLE语句创建一个新表?68.如何使用ALTER TABLE语句修改表结构?69.如何使用DROP TABLE语句删除表?70.如何使用CREATE INDEX语句创建索引?71.如何使用DROP INDEX语句删除索引?72.如何使用CREATE PROCEDURE语句创建存储过程?73.如何使用DROP PROCEDURE语句删除存储过程?74.如何使用CREATE TRIGGER语句创建触发器?75.如何使用DROP TRIGGER语句删除触发器?76.如何使用CREATE VIEW语句创建视图?77.如何使用DROP VIEW语句删除视图?78.如何使用CREATE SCHEMA语句创建模式?79.如何使用DROP SCHEMA语句删除模式?80.如何使用CREATE DATABASE语句创建数据库?81.如何使用DROP DATABASE语句删除数据库?82.如何使用GRANT语句授予权限?83.如何使用REVOKE语句撤销权限?84.如何使用DECLARE语句声明变量?85.如何使用SET语句设置变量值?86.如何使用IF语句进行条件判断?87.查询所有用户的信息。
2023 SQL 数据库查询练习题及答案

2023 SQL 数据库查询练习题及答案数据库查询是数据管理和处理的重要环节,熟练的SQL查询技巧对于数据库工程师和数据分析师来说至关重要。
为了提升大家的SQL 查询能力,以下是一些2023年的SQL数据库查询练习题及答案,希望能够对大家的学习和实践有所帮助。
练习题1:学生成绩表考虑一个学生成绩表(Students)和课程信息表(Courses),请使用SQL查询语句完成以下操作。
1. 查询所有学生的姓名和学号;2. 查询所有参加了"C3"课程的学生的姓名和学号;3. 查询所有选择了至少两门课程的学生的姓名和学号;答案1:SELECT 学号, 姓名FROM 学生成绩表;答案2:SELECT 学生成绩表.学号, 学生成绩表.姓名FROM 学生成绩表, 课程信息表WHERE 学生成绩表.课程编号 = 课程信息表.课程编号AND 课程信息表.课程名称 = "C3";答案3:SELECT 学号, 姓名FROM 学生成绩表GROUP BY 学号, 姓名HAVING COUNT(*) >= 2;练习题2:库存管理考虑一个库存管理系统的数据库,包含了商品表(Products)、仓库表(Warehouses)和库存表(Inventory)。
请使用SQL查询语句完成以下操作。
1. 查询商品表中单价不低于100元的商品的名称和单价;2. 查询所有位于“北京”仓库中的商品的名称和库存量;3. 查询库存量最多的商品的名称和库存量;答案1:SELECT 名称, 单价FROM 商品表WHERE 单价 >= 100;答案2:SELECT 商品表.名称, 库存表.库存量FROM 商品表, 仓库表, 库存表WHERE 商品表.商品ID = 库存表.商品IDAND 仓库表.仓库ID = 库存表.仓库IDAND 仓库表.所在地 = "北京";答案3:SELECT 商品表.名称, 库存表.库存量FROM 商品表, 库存表WHERE 商品表.商品ID = 库存表.商品IDORDER BY 库存表.库存量 DESCLIMIT 1;练习题3:订单管理考虑一个订单管理系统的数据库,包含了客户表(Customers)、订单表(Orders)和订单详情表(OrderDetails)。
数据库查询练习题

数据库查询练习题数据库查询是管理和获取数据库数据的重要技能之一。
通过熟练掌握数据库查询语言,可以高效地检索和操作数据库中的数据。
以下是一些数据库查询练习题,帮助提升你的查询技巧和理解能力。
题目一:假设有一个名为"students"的表,包含以下列:- id: 学生ID,整数类型- name: 学生姓名,字符串类型- age: 学生年龄,整数类型- major: 学生专业,字符串类型请编写SQL查询语句,从"students"表中查询出年龄小于20岁的学生姓名和专业。
解答一:```SELECT name, majorFROM studentsWHERE age < 20;```题目二:假设有一个名为"orders"的表,包含以下列:- order_id: 订单ID,整数类型- customer_name: 客户姓名,字符串类型- order_date: 订单日期,日期类型- total_amount: 订单总金额,浮点数类型请编写SQL查询语句,从"orders"表中查询出客户姓名、订单日期和订单总金额,并按订单日期降序排序。
解答二:```SELECT customer_name, order_date, total_amountFROM ordersORDER BY order_date DESC;```题目三:假设有一个名为"employees"的表,包含以下列:- emp_id: 员工ID,整数类型- emp_name: 员工姓名,字符串类型- department: 员工部门,字符串类型- salary: 员工工资,整数类型请编写SQL查询语句,从"employees"表中查询出部门名称和该部门的平均工资,并按照平均工资降序排序。
解答三:```SELECT department, AVG(salary) AS average_salaryFROM employeesGROUP BY departmentORDER BY average_salary DESC;```题目四:假设有一个名为"products"的表,包含以下列:- product_id: 产品ID,整数类型- product_name: 产品名称,字符串类型- price: 产品价格,浮点数类型- category: 产品类别,字符串类型请编写SQL查询语句,从"products"表中查询出每个类别中价格最高的产品名称和价格。
复杂查询练习题

复杂查询练习题查询是数据库操作中非常重要的一部分,复杂查询尤其如此。
本文将通过一系列练习题,帮助读者提升复杂查询的能力。
1. 查询员工表中所有部门的名称及部门中的员工数量,并按照员工数量降序排列。
```sqlSELECT AS 部门名称, COUNT(e.id) AS 员工数量FROM 部门表 dLEFT JOIN 员工表 e ON d.id = e.dept_idGROUP BY ORDER BY 员工数量 DESC;```在这个查询中,我们使用了LEFT JOIN将部门表和员工表连接起来。
通过COUNT函数,我们可以统计每个部门中的员工数量。
最后,通过ORDER BY子句,我们按照员工数量降序排列结果。
2. 查询员工表中薪水最高的前5名员工的姓名、工资和部门名称。
```sqlSELECT AS 姓名, e.salary AS 工资, AS 部门名称FROM 员工表 eJOIN 部门表 d ON e.dept_id = d.idORDER BY e.salary DESCLIMIT 5;```在这个查询中,我们使用JOIN将员工表和部门表连接起来,以获取员工所在的部门名称。
通过ORDER BY子句,我们按照工资降序排列结果,并使用LIMIT限制结果的数量为5。
3. 查询员工表中每个部门工资最高的员工的姓名、工资和部门名称。
```sqlSELECT AS 姓名, e.salary AS 工资, AS 部门名称FROM 员工表 eJOIN 部门表 d ON e.dept_id = d.idWHERE (e.dept_id, e.salary) IN (SELECT dept_id, MAX(salary)FROM 员工表GROUP BY dept_id);```在这个查询中,我们使用子查询来找到每个部门中工资最高的员工。
通过WHERE子句,我们筛选出满足条件的员工记录,并获取他们的姓名、工资和部门名称。
数据库语言查询练习题(4-25)

单表查询:1、查询<学生信息表>,查询学生"张三"的全部基本信息2、查询<学生信息表>,查询学生"张三"和”李四”的基本信息3、查询<学生信息表>,查询姓"张"学生的基本信息4、查询<学生信息表>,查询姓名中含有"四"字的学生的基本信息5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。
6、查询<学生信息表>,查询姓"张"或者姓”李”的学生的基本信息。
7、查询<学生信息表>,查询姓"张"并且"所属省份"是"北京"的学生信息8、查询<学生信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息9、查询<学生信息表>,查询姓"张",但是"所属省份"不是"北京"的学生信息Select *10、查询<学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序11、查询<学生信息表>,查询现有学生都来自于哪些不同的省份12、查询<学生选修信息表>,查询没有填写成绩的学生的学号、课程号和成绩13、查询<学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序聚合查询1、统计<学生信息表>,统计共有多少个学生2、统计<学生信息表>,统计年龄大于20岁的学生有多少个3、统计<学生信息表>,统计入学时间在1980年至1982年的学生人数4、统计<学生选修信息表>,统计学号为"S001"的学生的平均成绩5、统计<学生选修信息表>,统计学号为"S001"的学生的总成绩6、统计<学生选修信息表>,查询课程号为”C001”的课程的最高成绩7、统计<学生信息表>,查询所有学生中的最大年龄是多少分组查询练习1、统计<学生选修信息表>,统计每个课程的选修人数2、统计<学生选修信息表>,统计每个同学的总成绩3、统计<学生信息表>,统计每个班级中每种性别的学生人数,并按照班级排序4、统计<学生选修信息表>,统计每门课程的平均成绩,并按照成绩降序排序5、统计<学生选修信息表>,显示有两门以上课程不及格的学生的学号6、统计<学生信息表>,统计每个班级中的最大年龄是多少嵌套查询练习1、用子查询实现,查询选修“高等数学”课的全部学生的总成绩2、用子查询实现,统计<学生选修信息表>,显示学号为"S001"的学生在其各科成绩中,最高分成绩所对应的课程号和成绩3、用子查询实现,查询2班选修"数据库技术"课的所有学生的成绩之和4、用子查询实现,查询3班"张三"同学的"测试管理"成绩一、单表查询练习1、查询<学生信息表>,查询学生"张三"的全部基本信息Select *from A_studentinfowhere sname='张三'2、查询<学生信息表>,查询学生"张三"和”李四”的基本信息Select *from A_studentinfowhere sname='张三'or sname='李四'3、查询<学生信息表>,查询姓"张"学生的基本信息Select *from A_studentinfowhere sname like '张%'4、查询<学生信息表>,查询姓名中含有"四"字的学生的基本信息Select *from A_studentinfowhere sname like '%四%'5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。
数据库第9章查询练习题目(有答案)

第九章习题9.1分组查询练习a).基于“生源情况”表,统计不同姓的人数,列出:姓、人数,结果按人数降序排序。
(先统计所有学生的人数)SELECT left(姓名,1) as 姓,count(*) as 人数FROM 生源情况group by left(姓名,1)ORDER BY count(*) DESCb).基于“生源情况”表,按地区分类统计入学成绩的平均值、最大值、最小值,并按平均值降序排列。
先统计所有入学成绩的的平均值、最大值、最小值)SELECT 地区,avg(入学成绩) as 平均值,max(入学成绩) as 最大值,min(入学成绩) as 最小值FROM 生源情况group by 地区ORDER BY avg(入学成绩) DESCc).基于“生源情况”表,找出年龄平均值最高的班级。
(提示:先按班级名称统计每个班级的平均年龄,再找年龄的最大值)SELECT TOP 1 班级名称, A VG(year(date())-year(出生日期)) as 平均年龄FROM 生源情况GROUP BY 班级名称ORDER BY A VG(year(date())-year(出生日期)) DESCd).基于“生源情况”表,列出学生人数少于100的地区。
select 地区, count(*) as 学生人数from 生源情况group by 地区having count(*)<1009.2联接查询练习a).列举学号为“200894006”的同学所参加的考试的场次、教室和课程名称。
select 场次,教室,课程名称from 学生考试inner join 课程on 学生考试.课程编号=课程.课程编号where 学号="200894006"或select 场次,教室,课程名称from 学生考试,课程where 学号="200894006" and 学生考试.课程编号=课程.课程编号b).列举学号为“200894006”的同学所参加的每场考试的监考教师的姓名。
数据库应用基础--查询练习

数据库应用基础——Access2010 查询练习班级:________________ 姓名:__________________1.若在“tEmployee”表中查找所有出生日期在“1970-1-1”和“1980-1-1”之间的记录,可以在查询设计视图的准则行中输入( )。
A)Between #1970-1-1# And #1980-1-1#B)Between "1970-1-1" And "1980-1-1"C)"1970-1-1" And "1980-1-1"D)#1970-1-1# And #1980-1-1#2.在SQL查询中“GROUP BY”的含义是( )。
A)选择行条件B)对查询进行排序C)选择列字段D)对查询进行分组3.若要将“产品”表中所有供货商是“ABC”的产品单价下调50,则正确的SQL语句是( )。
A)UPDATE 产品SET 单价=50 WHERE 供货商="ABC"B)UPDATE 产品SET 单价=单价-50 WHERE 供货商="ABC"C)UPDATE FROM 产品SET 单价=50 WHERE 供货商="ABC"D)UPDATE FROM 产品SET 单价=单价-50 WHERE 供货商="ABC"4.下面不是操作查询的是( )。
A)删除查询B)更新查询C)参数查询D)生成表查询5.在SQL语言的SELECT语句中,用于实现选择运算的子句是( )。
A)FORB)IFC)WHILED)WHERE6.在SQL查询中,若要取得“学生”数据表中的所有记录和字段,其SQL语法为( )。
A)SELECT 姓名FROM 学生B)SELECT * FROM 学生C)SELECT 姓名FROM 学生WHILE 学号=02650D)SELECT * FROM 学生WHILE 学号=026507.假设某数据表中有一个出生时间字段,查找1999年出生的学生记录的准则是( )。
(完整版)数据库练习题及答案解析

第一章习题一、单项选择题1 •数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS )之间的关系是(A )。
A. DBS 包括DB 和DBMSB. DBMS 包括DB 和DBSC. DB包括DBS和DBMSD. DBS就是DB,也就是DBMS2. 下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是(D )。
I •人工管理阶段II.文件系统阶段III •数据库阶段A. I 和IIB. 只有IIC. II 和IIID. 只有I3. 下列四项中,不属于数据库系统特点的是(C )。
A. 数据共享B. 数据完整性C. 数据冗余度高D. 数据独立性高4. 数据库系统的数据独立性体现在(B )。
A .不会因为数据的变化而影响到应用程序B. 不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序C. 不会因为存储策略的变化而影响存储结构D. 不会因为某些存储结构的变化而影响其他的存储结构5. 要保证数据库的数据独立性,需要修改的是(C )。
A. 模式与外模式B. 模式与内模式C. 三层之间的两种映射D. 三层模式6. 要保证数据库的逻辑数据独立性,需要修改的是(A )。
A. 模式与外模式的映射B. 模式与内模式之间的映射C. 模式D. 三层模式7. 用户或应用程序看到的那部分局部逻辑结构和特征的描述是(C ),它是模式的逻辑子集。
A.模式B.物理模式C. 子模式D. 内模式8. 下述(B )不是DBA 数据库管理员的职责。
A.完整性约束说明B.定义数据库模式C.数据库安全D.数据库管理系统设计9. 常见的数据模型有三种,它们是(B )A 网状、关系和语义B 层次、关系和网状C 环状、层次和关系D 字段名、字段类型和记录10. 在E-R 图中,用来表示属性的图形是(B )A 矩形B 椭圆形C 菱形D 平行四边形二、填空题1. 描述数据库全体数据的全局逻辑结构和特性的是___________ 模式 ______ 。
数据库练习题库(含答案)

数据库练习题库(含答案)一、单选题(共98题,每题1分,共98分)1.在需求分析阶段,结构化分析和建模方法是一种较为有效的需求分析方法,下列不属于结构化分析和建模方法优点的是()。
A、可避免过早陷入具体细节B、从局部或子系统开始分析问题,便于建模人员了解业务模型C、图形对象不涉及太多技术术语,便于用户理解模型D、用图形化的模型能直观表示系统功能正确答案:B2.DBMS通过加锁机制允许用户并发访问数据库,这属于DBMS提供的()。
A、数据定义功能B、数据操纵功能C、数据库运行管理与控制功能D、数据库建立与维护功能正确答案:C3.关于数据划分策略,下述说法错误的是()。
A、散列划分釆用某种散列函数,以数据的划分属性作为函数参数,计算数据应存储的磁盘序号B、范围划分根据某个属性的取值,将数据划分为n个部分,分别存储到不同磁盘上C、范围划分有利于范围查询和点查询,但也可能会引起数据分布不均匀及并行处理能力下降问题D、轮转法划分能保证元组在多个磁盘上的平均分配,并具有较高的点查询和范围查询正确答案:D4.存取方法设计属于数据库设计的()阶段的设计任务。
A、逻辑结构设计B、概念结构设计C、系统需求分析D、物理结构设计正确答案:D5.将新插入的记录存储在文件末尾,并使记录随机地分布在文件物理存储空间中的文件结构是()。
A、散列文件B、堆文件C、索引文件D、聚集文件正确答案:B6.关于"死锁”,下列说法中正确的是()。
A、在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库B、只有出现并发操作时,才有可能出现死锁C、当两个用户竞争相同资源时不会发生死锁D、死锁是操作系统中的问题,数据库操作中不存在正确答案:B7.关于数据库应用系统的需求分析工作,下列说法正确的是()。
A、在需求分析阶段,系统需求分析员要与用户充分沟通,并做出各类用户视图B、通过需求分析过程,需要确定出整个应用系统的目标、任务和系统的范围说明C、数据操作响应时间、系统吞吐量、最大并发用户数都是性能需求分析的重要指标D、数据需求分析的主要工作是要辩识出数据处理中的数据处理流程正确答案:C8.如果一个系统定义为关系系统,则它必须( )oA、支持关系数据库B、支持选择、投影和连接运算C、A和B均成立D、A、B都不需要正确答案:C9.联机分析处理包括以下()基本分析功能。
数据库sql查询语句练习

查询语句1、查询“001”课程比“002”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') as a,(selects#,score from SC where C#='002') as bwhere a.score>b.score and a.s#=b.s#2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >603、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%'5、查询没学过“张三”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# andTeacher.Tname='张三')6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S#and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# andSC_2.C#='002')7、查询学过“张三”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C#and Teacher.T#=Course.T# and Teacher.Tname='张三' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher whereTeacher.T#=Course.T# and Tname='张三'))8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Snamefrom (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') as score2from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2<score9、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC where S.S#=SC.S# andscore>60)10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course)11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='1001')12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC whereS#='001')13、把“SC”表中“张三”老师教的课的成绩都更改为此课程的平均成绩;update SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# )from Course,Teacherwhere Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='张三'14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC whereS#='1002')group by S# having count(*)=(select count(*) from SC whereS#='1002')15、删除学习“张三”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='张三'16、向SC表中插入一些记录,这些记录要求符合以下条件:学号是没有上过编号“002”课程的同学学号课程号是002成绩是002号课的平均成绩;Insert into SCvalues(select S# from Student where S# not in (Select S# from SC where C#='002'),'002',(Select avg(score)from SC where C#='002'))17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,数据库,企业管理,英语,有效课程数,有效平均分select S# as 学生ID,(select score from SC where SC.S#=t.S# and C#='004') as 数据库,(select score from SC where SC.S#=t.S# and C#='001') as 企业管理,(select score from SC where SC.S#=t.S# and C#='006') as 英语,count(*) as 有效课程数, avg(t.score) as 平均成绩from SC as tgroup by S#order by avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分select L.C# As 课程ID,L.score as 最高分,R.score as 最低分from SC L ,SC as Rwhere L.C# = R.C# and L.score = (select max(IL.score)from SC as IL,Student as IMwhere L.C# = IL.C# and IM.S#=IL.S# group by IL.C#)and R.Score = (SELECT MIN(IR.score) from SC as IRwhere R.C# = IR.C# group by IR.C# )19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# as 课程号,max(ame) as课程名,isnull(AVG(score),0) as 平均成绩,100 * SUM(case when isnull(score,0)>=60 then 1 else 0 end)/count(*) as 及格百分数from SC T,Coursewhere t.C#=course.C#group by t.C#order by 100 * SUM(case when isnull(score,0)>=60 then 1 else 0 end)/count(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' ANDscore >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END)AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN scoreELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' ANDscore >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END)AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN scoreELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' ANDscore >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END)AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN scoreELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' ANDscore >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END)AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名 ,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) +ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SCAS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SCAS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SCAS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) +ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITHTIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) +ISNULL(T4.score,0)FROM scLEFT JOIN scAS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN scAS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN scAS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN scAS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0)+ ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC)23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND100 THEN 1 ELSE 0 END) AS [100 - 85] ,SUM(CASE WHEN score BETWEEN 70 AND85 THEN 1 ELSE 0 END) AS [85 - 70] ,SUM(CASE WHEN score BETWEEN 60 AND70 THEN 1 ELSE 0 END) AS [70 - 60] ,SUM(CASE WHEN score < 60 THEN 1ELSE 0 END) AS [60 -]FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname24、查询学生平均成绩及其名次25、查询各科成绩前三名的记录:(不考虑成绩并列情况)26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=128、查询男生、女生人数Select count(Ssex) as 男生人数 fromStudent group by Ssex having Ssex='男' Select count(Ssex) as 女生人数 fromStudent group by Ssex having Ssex='女'29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%'30、查询同名同姓学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>131、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)select Snamefrom studentwhere year(Sage)='1981'32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname having avg(score)>8534、查询课程名称为“数据库”,且分数低于60的学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score <6035、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C#36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e <60 order by C#38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;select SC.S#,Student.Snamefrom SC,StudentwhereSC.S#=Student.S# and Score>80 and C#='003'39、求选了课程的学生人数select count(*) from sc40、查询选修“张三”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T#and Teacher.Tname='张三' andSC.score=(select max(score) from SC where C#=C.C# )41、查询各个课程及相应的选修人数select count(*) from sc group by C#42、查询不同课程成绩相同的学生的学号、课程号、学生成绩43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 score FROM SC WHERE t1.C#= C# ORDER BYscore DESC ) ORDER BY t1.C#44、统计每门课程的学生选修人数(超过10人的课程才统计)。
数据库练习题及答案

35 查询所有未讲课的教师的Tname和Depart.
36、查询至少有2名男生的班号。
37、查询Student表中不姓“王”的同学记录。
38、查询Student表中每个学生的姓名和年龄。
39、查询Student表中最大和最小的Sbirthday日期值。
SQL查询练习
找了好久的查询练习, 附有答案
CREATE TABLE STUDENT
(SNO VARCHAR(3) NOT NULL,
SNAME VARCHAR(4) NOT NULL,
SSEX VARCHAR(2) NOT NULL,
SBIRTHDAY DATETIME,
30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
31、查询所有教师和同学的 name、sex和birthday.
32、查询所有“女”教师和“女”同学的name、sex和birthday.
33、查询成绩比该课程平均成绩低的同学的成绩表。
或
select Sno as 学号,Sname as 姓名,Ssex as 性别,Sbirthday as 出生日期,Class as 班号 from student;
4、 select * from score where degree between 60 and 80;
或select * from score where degree>=60 and degree<=80;
40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
41、查询“男”教师及其所上的课程。
数据库查询练习题

第三章查询一、选择题(1)在Access中,主要有以下哪几种查询操作方式①选择查询②参数查询③交叉表查询④操作查询⑤SQL查询A) ①②B) ①②③C) ①②③④D) ①②③④⑤(2)属于操作查询的是①删除查询②更新查询③交叉表查询④追加查询⑤生成表查询(3)在以下各查询中有一种查询除了从表中选择数据外,还对表中数据进行修改的是A) 选择查询B) 交叉表查询C) 操作查询D) 参数查询(4)哪个查询会在执行时弹出对话框,提示用户输入必要信息,再按照这些信息进行查询A) 选择查询B) 参数查询C) 交叉表查询D) 操作查询(5)______是最常见的查询类型,它从一个或多个表中检索数据,在一定的限制条件下,还可以通过此查询方式来更改相关表中的记录A) 选择查询B) 参数查询C) 操作查询D) SQL查询(6)可以在一种紧凑的、类似于电子表格的格式中,显示来源与表中某个字段的合计值、计算值、平均值等的查询方式是A) SQL查询B) 参数查询C) 操作查询D) 交叉表查询(7)在一个操作中更改许多记录的查询是A) 参数查询B) 操作查询C) SQL查询D) 选择查询(8)表中存有学生姓名、性别、班级、成绩等数据,若想统计各个班各个分数段的人数,最好的查询方式是A) 选择查询B) 交叉表查询C) 参数查询D) 操作查询(9)以下类型中不属于SQL查询的是A) 选择查询B) 联合查询C) 子查询D) 数据定义查询(10)利用一个或多个表中的全部或部分数据建立新表的是A) 生成表查询B) 删除查询C) 更新查询D) 追加查询(11)主要应用于创建表的备份、创建从指定时间显示数据的报表、创建包含旧记录的历史表等方面的查询是A) 生成表查询B) 删除查询C) 更新查询D) 追加查询(16)什么查询可以从一个或多个表中选取一组记录添加到一个或多个表的尾部A) 生成表查询B) 更新查询C) 删除查询D) 追加查询(17)每个查询都有3种视图,下列不属于查询的3种视图的是A) 设计视图B) 模板视图C) 数据表视图D)SQL视图(18)检索价格在30万元~60万元之间的产品,可以设置条件为A) “>30 Not<60” B) “>30 Or<60”C) “>30 And<60” D)“>30 Like<60”(19)设置排序可将查询结果按一定的顺序排列,以便于查阅。
数据库练习题(含答案)

数据库练习题(含答案)一、单选题(共80题,每题1分,共80分)l、同一个数据模型的任意两个元组值()A、不能全同B、可全同C、必须全同D、以上都不是正确答案: A2、在创建主/子窗体之前,要确定主窗体与子窗体之间的数据源之间存在着的关系。
A、多对一B、多对多C、一对一D、一对多正确答案: D3、Access不能对数据类型进行排序和索引。
()A、文本B、数字C、备注D、自动编号正确答案: D4、任何一个满足2F但不满足3N F的关系模式都存在()A、非主属性对候选码的传递依赖B、主属性对候选码的部分依赖C、非主属性对候选码的部分依赖D、主属性对候选码的传递依赖正确答案: A5、以下哪一条属千关系数据库的规范化理论要解决的问题?()A、如何构造合适的应用程序界面B、如何构造合适的数据库逻辑结构C、如何控制不同用户的数据操作权限D、如何构造合适的数据库物理结构正确答案: B6、在数据管理技术发展的三个阶段中,数据独立性最好的是()。
A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同正确答案: C答案解析:数据库系统管理阶段的独立性最高,是因为采用了数据库管理系统来管理数据,将应用程序和数据分开存储。
7、在设计表时,若输人掩码属性设置为"LL", 则能接收的输人是()A、abBdB、aBC、AB+CD、AB a9正确答案: B答案解析:在输入掩码的格式符号中,"L"表示在该位置必须输入一个字母。
B送选项中少了一个字母,C选项中不能接受"+"'D选项中不能接受"9"8、在下列SQL语句中,修改表结构的语句是()。
A、AL T ERB、CRE A TEC、UP D ATED、IN SE R T正确答案: A9、空数据库是指()A、没有基本表的数据库B、没有任何数据库对象的数据库C、数据库中数据表记录为空的数据库D、没有窗体和报表的数据库正确答案: B答案解析:Access由六大对象组成,因此空数据库必须是没有任何对象的数据库。
ORACLE数据库 查询50习题(题目+答案)

select * from emp where comm>(sal*0.6)
--5、找出部门10中所有经理和部门20中所有办事员的详细资料
select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK')
select ename from emp where instr(ename,'R')=0
--14、显示所有雇员的姓名的前三个字符
select substr(ename,1,3) from emp
--15、显示所有雇员的姓名,用"a"替换所有的"A"
select replace(ename,'A','a')from emp
--------------------------------------------------------------------------------------------------
--1、列出至少有一个雇员的所有部门信息
select emp.ename,dept.* from emp,dept where emp.deptno=dept.deptno
--2、列出薪金(工资)比'SMITH'多的所有雇员信息
select * from emp where sal>(select sal from emp where ename='SMITH')
--3、列出所有雇员的姓名及其上级的姓名
数据库练习题(打印版)

数据库练习题(打印版)# 数据库练习题(打印版)## 一、选择题1. 在关系数据库中,数据表之间的关系可以是以下哪些类型?- A. 一对一- B. 一对多- C. 多对多- D. 所有以上2. SQL语言中,用于查询数据的关键字是:- A. SELECT- B. INSERT- C. UPDATE- D. DELETE3. 以下哪个不是数据库的完整性约束?- A. 主键约束- B. 外键约束- C. 检查约束- D. 索引约束## 二、填空题4. 数据库管理系统(DBMS)是位于用户和_________之间的一层数据管理软件。
5. SQL是_________查询语言,用于与数据库进行交互。
6. 在SQL中,使用_________关键字可以删除表中的数据。
## 三、简答题7. 简述数据库事务的四大特性(ACID)。
## 四、操作题8. 假设有一个学生表(Students),包含字段:学生ID (StudentID),姓名(Name),年龄(Age),专业(Major)。
编写SQL语句完成以下操作:- A. 插入一条新的学生记录。
- B. 更新学生的年龄信息。
- C. 查询所有学生的信息。
- D. 删除一个学生记录。
## 五、综合应用题9. 你是一家电子商务公司的数据库管理员,需要设计一个数据库来存储产品信息。
请列出至少五个字段,并为每个字段提供一个合理的数据类型。
## 参考答案:### 一、选择题1. D2. A3. D### 二、填空题4. 操作系统5. 结构化6. DELETE### 三、简答题7. 事务的四大特性(ACID)包括:- 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个点。
- 一致性(Consistency):事务必须保证数据库从一个一致的状态转移到另一个一致的状态。
- 隔离性(Isolation):并发执行的事务之间不会互相影响。
- 持久性(Durability):一旦事务提交,则其更改永久保存在数据库中。
mysql数据库查询练习45题

mysql数据库查询练习45题#建学⽣信息表studentcreate table student(sno varchar(20) not null primary key,sname varchar(20) not null,ssex varchar(20) not null,sbirthday datetime,class varchar(20));#建⽴教师表create table teacher(tno varchar(20) not null primary key,tname varchar(20) not null,tsex varchar(20) not null,tbirthday datetime,prof varchar(20),depart varchar(20) not null);#建⽴课程表coursecreate table course(cno varchar(20) not null primary key,cname varchar(20) not null,tno varchar(20) not null,foreign key(tno) references teacher(tno));#建⽴成绩表create table score(sno varchar(20) not null primary key,foreign key(sno) references student(sno),cno varchar(20) not null,foreign key(cno) references course(cno),degree decimal);#添加学⽣信息insert into student values('108','曾华','男','1977-09-01','95033');insert into student values('105','匡明','男','1975-10-02','95031');insert into student values('107','王丽','⼥','1976-01-23','95033');insert into student values('101','李军','男','1976-02-#添加教师表insert into teacher values('804','李诚','男','1958-12-02','副教授','计算机系');insert into teacher values('856','张旭','男','1969-03-12','讲师','电⼦⼯程系');insert into teacher values('825','王萍','⼥','1972-05-05','助教','计算机系');insert into teacher values('831','刘冰','⼥','1977-08-14','助教','电⼦⼯程系');#添加课程表insert into course values('3-105','计算机导论','825');insert into course values('3-245','操作系统','804');insert into course values('6-166','数字电路','856');insert into course values('9-888','⾼等数学','831');#添加成绩表insert into score values('103','3-245','86');insert into score values('105','3-245','75');insert into score values('109','3-245','68');insert into score values('103','3-105','92');insert into score values('105','3-105','88');insert into score values('109','3-105','76');insert into score values('103','3-105','64');insert into score values('105','3-105','91');insert into score values('109','3-105','78');insert into score values('103','6-166','85');insert into score values('105','6-166','79');insert into score values('109','6-166','81');题⽬:1、查询Student表中的所有记录的Sname、Ssex和Class列。
数据库查询练习题

数据库查询练习题一、选择题(每题2分,共10分)1. 在SQL中,用于查询数据的关键字是:A. SELECTB. INSERTC. UPDATED. DELETE2. 下列哪个选项不是SQL数据类型?A. INTB. FLOATC. DATED. BOOLEAN3. 在SQL中,使用哪个关键字可以对查询结果进行排序?A. ORDER BYB. SORT BYC. RANK BYD. ARRANGE BY4. 以下哪个不是SQL聚合函数?A. COUNTB. AVGC. SUMD. DISTINCT5. SQL语句中,用于指定查询条件的关键字是:A. WHEREB. IFC. CASED. WHEN二、填空题(每空2分,共20分)6. 在SQL查询中,使用________关键字可以限制查询结果的数量。
7. 要查询员工表中工资最高的员工,可以使用聚合函数________和________。
8. SQL中的________子句允许我们对查询结果进行分组。
9. 使用________函数可以返回查询结果中的唯一值。
10. 在SQL查询中,________关键字用于连接两个或多个表。
三、简答题(每题10分,共30分)11. 解释SQL中的内连接(INNER JOIN)和外连接(OUTER JOIN)的区别。
12. 描述SQL中使用子查询(Subquery)的场景及其优势。
13. 阐述SQL中事务(Transaction)的概念及其重要性。
四、应用题(每题15分,共30分)14. 假设有一个名为“Employees”的表,包含以下列:EmployeeID, FirstName, LastName, DepartmentID, Salary。
编写一个SQL查询,列出每个部门的平均工资。
15. 给定一个名为“Orders”的表,包含以下列:OrderID, CustomerID, OrderDate, TotalAmount。
数据库查询练习题

数据库练习题一、用你的姓名的全拼新建一个数据库,用create语句在数据库中建立以下三张表学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Cpno,Ccredit)二、仿照下面的格式用insert语句给三张表添加数据,要求学生表和选课表的记录至少要达到25条记录以上,课程表至少达到10条以上记录,可用本班级的学生姓名和所学课程为基本4 操作系统 6 35 数据结构7 46 数据处理 27 PASCAL语言 6 4学号Sno 课程号Cno成绩Grade200215121 200215121 200215121 200215122 200215122 123239285889080三、用SQL语句完成下列单表查询1、查询全体学生的学号与姓名.2、查询全体学生的姓名、学号、所在系。
3、查询全体学生的详细记录。
4、查询全体学生的姓名、所在系,要求用小写字母表示所有系名;改变查询结果的列标题:使用列别名“姓名”替换Sname。
Select Sname as 姓名,lower(Sdapt) as 所在系from Student5、查询计算机科学系(CS)全体学生的名单.6、查询所有年龄在20岁以下的学生姓名及其年龄.7、查询考试成绩有不及格的学生的学号。
8、查询年龄在18~22岁(包括18岁和22岁)之间的学生的姓名、系别和年龄9、查询年龄不在20~23岁之间的学生姓名、系别和年龄10、查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
11、查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
12、查询学号为0910*******的学生的详细情况。
13、查询所有姓“张”学生的姓名、学号和性别。
14、查询名字中第2个字为“丽”字的学生的姓名和学号。
15、查询所有不姓“陈"的学生姓名.16、查询全体学生情况,查询结果按所在系号升序排列,同一系中的学生按年龄降序排列.17、查询学生总人数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 SQL的复杂查询功能
实验目的
学会使用MS SQL SERVER 2000的查询分析器完成SQL的复杂查询功能,主要包括连接查询、嵌套查询、集合查询及多表查询。
知识点拨:
1.复杂查询
2.连接查询:
3.嵌套查询
4.集合查询
5.多表查询
实验内容
1.连接查询:
2.嵌套查询
3.集合查询
4.多表查询
实验步骤
1.选择数据库JX;
注意:以下查询请尽量多使用不同的SQL语句实现!
2.查询选修了‘3’号课程且成绩在70分以上的学生信息。
SELECT Student.*
FROM Student,SC
WHERE Student.Sno=SC.Sno AND
o='3' AND SC.Grade>70;
3.查询教‘3’号课程的任课教师的信息
SELECT *
FROM Teacher
WHERE Tno IN
(SELECT Tno
FROM SC
WHERE Cno='3');
4.查询选修了‘3’课程的学生姓名,成绩及任课教师姓名。
SELECT Sname,Tname,Grade
FROM Student,Teacher,SC
WHERE Student.Sno=SC.Sno AND Teacher.Tno=SC.Tno AND Cno='3';
5.查询开设的课程中选课人数不足20人的课程信息。
SELECT *
FROM Course
WHERE o IN (SELECT o
FROM SC
GROUP BY o
HA VING COUNT(*)<20);
6.查询选修课程数低于3门的学生信息。
SELECT *
FROM Student
WHERE Student.Sno IN (SELECT SC.Sno
FROM SC
GROUP BY SC.Sno
HA VING COUNT(*)<3);
7.查询没有选修课程的同学的基本信息。
SELECT Student.*
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno IS NULL)
8.查询既选修课‘3’号又选修了‘4’号课程的同学姓名、课程名及成绩。
SELECT Sname,Cname,Grade
FROM Student,Course,SC
WHERE Student.Sno=SC.Sno AND
o=o AND o='3' AND SC.Sno IN
(SELECT Sno
FROM SC
WHERE Cno='4');
9.查询同时选修了‘操作系统’课程和‘数据库原理’课程的学生名单。
SELECT Student.Sno,Sname
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND
o=o AND ame='操作系统' AND o IN
(SELECT Cno
FROM Course
WHERE Cname='数据库原理');
10.查询所有同学的基本信息及选课情况(包含未选课同学的信息)。
SELECT Student.Sno,Sname,Ssex,Sdept,Cno,Grade
FROM Student LEFT JOIN SC ON (Student.Sno=SC.Sno);
11.列出所有参加了数据库课程考试的学生姓名和成绩。
SELECT Sname,Grade
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND o=o AND o IN (SELECT Cno
FROM Course
WHERE Cname='数据库');
12.查询没有选修“3”号课程的学生姓名和所在系。
SELECT Sname,Sdept
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno='3');
13.查询每一课程的间接先修课,以“课程名”、“先修课名”作列名。
SELECT o '课程名',SECOND.Cpno '先修课程'
FROM Course FRIST,Course SECONDWHERE FRIST.Cpno=o 14.列出所有没有选修“数据结构”课程的学生的学号、姓名、所在院系。
SELECT Sno,Sname,Sdept
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND NOT EXISTS
(SELECT *
FROM Course
WHERE Cno=o AND Cname='数据结构'));
15.查询至少选修了“06002”号同学选修的所有课程的同学信息。
SELECT *
FROM Student
WHERE Sno IN
(SELECT DISTINCT Sno
FROM SC SCX
WHERE NOT EXISTS
(SELECT *
FROM SC SCY
WHERE SCY.Sno='06002' AND
NOT EXISTS
(SELECT *
FROM SC SCZ
WHERE SCZ.Sno=SCX.Sno and o=o)));。