数据库语言查询练习题(4-25)

合集下载

数据库练习题

数据库练习题

数据库练习题2.数据库在磁盘上的基本组织形式是[B ] A.DB B.⽂件 C.⼆维表 D.系统⽬录3.在关系模型中,起导航数据作⽤的是[B ] A.指针 B.关键码 C.DD D.索引4.查询优化策略中,正确的策略是[D ] A.尽可能早地执⾏笛卡尔积操作B.尽可能早地执⾏并操作C.尽可能早地执⾏差操作D.尽可能早地执⾏选择操作5.SQL中,“DELETE FROM 表名”表⽰[A ] A.从基本表中删除所有元组B.从基本表中删除所有属性C.从数据库中撤消这个基本表D.从基本表中删除重复元组6.设关系模式R(A,B,C),F是R上成⽴的FD集,F={A→B,C→B},ρ={AB,AC}是R的⼀个分解,那么分解ρ[C ] A.保持函数依赖集F B.丢失了A→BC.丢失了C→B D.丢失了B→C8.在关系数据库设计中,⼦模式设计是在__________阶段进⾏。

[B ] A.物理设计 B.逻辑设计 C.概念设计 D.程序设计10.在DB技术,未提交的随后被撤消了的数据,称为[D ] A.报废的数据 B.过时的数据 C.撤消的数据 D.脏数据1. 关系数据库管理系统都是基于( A )理论。

A. Codd的数据关系模型B. 数据结构C. 计算机操纵系统D. 信息管理2. 元组关系演算表达式{t| R(t)∧S(t)}表达的是(D )A. R∪SB. R∩SC. R-SD. S-R5. 语句 delete from sc 表明( A )A. 删除sc中的全部记录B. 删除基本表scC. 删除基本表sc中的列数据D. 删除基本表sc中的部分⾏7. 关系笛卡尔积运算记号R×S,( D )A. R为关系名,S为属性名B. R和S均为属性名C. R为属性名,S为关系名D. R和S均为关系名9. 下列说法中不正确的是(C )。

A. 任何⼀个包含两个属性的关系模式⼀定满⾜3NFB. 任何⼀个包含两个属性的关系模式⼀定满⾜BCNFC. 任何⼀个包含三个属性的关系模式⼀定满⾜3NFD. 任何⼀个关系模式都⼀定有码10. 在下列基本表的定义中,数值5表⽰( C )CREATE TABLE student (Sno char(5) not null unique,Sname char(2));A. 表中有5条记录B. 表中有5列C. 表中字符串Sno 的长度D. 表格的⼤⼩11. 在视图上不能完成的操作是( C )A. 更新视图B. 查询C. 在视图上定义新的基本表D. 在视图上定义新视图12. 设有关系模式R(A,B,C,D),F是R上成⽴的函数依赖集,F={B→C,C→D},则属性C的闭包C+为( C )A.BCDB.BDC.CDD.BC1. DB、DBMS和DBS三者之间的关系是(B)。

数据库及其操作练习题(培训用)

数据库及其操作练习题(培训用)

数据库及其操作练习题一、选择题1.一个数据表文件中多个备注(MEMO)字段的内容是存放在( B )。

A)这个数据表文件中B)一个备注文件中C)多个备注文件中D)一个文本文件中2.下列文件中,( A )是VFP的备注文件。

A) NOTE.FPT B) NOTE.BAK C) NOTE.DBT D) NOTE.PRG3.以下关于自由表和数据库表操作的叙述中,错误的是( A )。

A)自由表可执行的操作,数据库表不一定能执行B)数据库表的表名可超过8个字符C)当把自由表加入数据库为数据库表时,可改变自由表的名称D)数据库表可执行的操作,自由表不一定能执行4.在下面的叙述中,正确的是( C )。

A)NULL和″ ″均可表示空值 B)″″和″ ″表示相同的意义C)″ ″> ″″ D)0可表示空值NULL5.以下关于Visual FoxPro的数据库操作的叙述中,正确的是( B )。

A)OPEN DATABASE和MODIFY DATABASE的功能相同B)打开数据库之后,数据库包含的数据表并不一定被打开C)使用DELETE DATABASE命令删除数据库的同时,数据库所包括的所有数据库表均被删除D)当打开数据表时,数据表所属的数据库也同时被打开6.在Visual FoxPro中,可以对字段设置默认值的表( A )。

A)必须是数据库表B)必须是自由表C)自由表或数据库表D)不能设置字段的默认值7.在当前数据库表第3条记录之前插入一条空记录的命令是( A )。

A)GO 3 B)GO 3INSERT BEFORE BLANK INSERT BLANKC)GO 3 D)GO 3APPEND APPEND BLANK8. 在VFP中要修改数据表TEST.DBF的结构,其命令是( A )。

A) MODIFIY STRUCTURE B) MODIFY COMMAND STRUCTUREC) EDIT STRUCTURE D) TYPE TEST9. 要从数据表中真正删除掉一条记录,应使用命令( C )。

数据库 练习题(答案)

数据库  练习题(答案)

第四章练习题一、选择题1、设有两个关系R(A,B)与S(B,C),与下列SELECT语句SELECT A,B FROM RWHERE B NOT IN(SELECT B FROM S WHERE C='C56');等价的关系代数表达式就是 [ C]A.πA,B(σC≠'C56'(R⋈S))B.πA,B(R ⋈ S)C≠'C56'C.R-πA,B(σC= 'C56'(R⋈S))D.R-πA,B(σC≠'C56'(R⋈S))2、嵌入式SQL的预处理方式,就是指[ B]A.识别出SQL语句,加上前缀标识与结束标志B.把嵌入的SQL语句处理成函数调用形式C.对源程序进行格式化处理D.把嵌入的SQL语句编译成目标程序3、SQL中,“DELETE FROM 表名”表示 [ A]A.从基本表中删除所有元组B.从基本表中删除所有属性C.从数据库中撤消这个基本表D.从基本表中删除重复元组4、SQL中,聚合函数COUNT(列名)用于[ C]A.计算元组个数B.计算属性的个数C.对一列中的非空值计算个数D.对一列中的非空值与空值计算个数5、在传统SQL技术中,使用“ORDER BY”子句的SELECT语句查询的结果,实际上为 [B]A.数组B.列表C.包D.集合6、在数据库中,能提高查询速度的就是(C )A、数据依赖B、视图C、索引D、数据压缩7、语句 delete from sc 表明( A )A、删除sc中的全部记录B、删除基本表scC、删除基本表sc中的列数据D、删除基本表sc中的部分行8、在DB应用中,一般一条SQL 语句可产生或处理一组记录,而DB主语言语句一般一次只能处理一条记录,其协调可通过( B )实现。

A、指针B、游标C、数组D、栈9、在下列基本表的定义中,数值5表示( C )CREATE TABLE student (Sno char(5) not null unique,Sname char(2));A、表中有5条记录B、表中有5列C、表中字符串Sno 的长度D、表格的大小10、在视图上不能完成的操作就是( C )A、更新视图B、查询C、在视图上定义新的基本表D、在视图上定义新视图11、下列聚合函数中不忽略空值 (null) 的就是 (C)A、SUM (列名)B、MAX (列名)C、COUNT ( * )D、AVG (列名)12、SQL的查询语句的where子句中,对空值的操作,不正确的就是 ( C )A、where AGE IS NULLB、where AGE IS NOT NULLC、where AGE = NULLD、where NOT (AGE IS NULL)13、Transact-SQL对标准SQL的扩展主要表现为( A )。

VFP数据库练习题4

VFP数据库练习题4

VFP数据库(4)一、填空题1.在报表中通常用来获得当前页码的变量是。

2.表示空值的关键字是。

3.索引文件分为单索引和复合索引,其扩展名分别为idx和。

4.使用locate命令顺序查找,可用found()和函数测试是否找到。

5.打开数据库xs.dbc的命令是。

6.在查询设计器中设置查询条件,应在选项卡中进行。

7.分支语句有简单分支、选择分支和。

8.表单的组合框有两种类型、分别为下拉列表框和。

9.在VFP中,关闭系统菜单的命令是。

10.按变量的作用域可分为和局部变量。

二、单项选择题1.在VFP命令中,各单词间的分隔符是()A.分号B.空格C.逗号D.以上都不对2.X和Y为日期型,H为数值型,不可以进行的运算是()A.X+YB.X-HC.X-YD.X+H3.表达式mod(21,6)的值为()A.0B. 1C. 3D.不确定4.备注型字段的数据宽度是4字节,它用来存放()。

A.指向备注的具体内容B.指向.fpt文件的文件名C.指向.dbf文件的指针D.指向.fpt中文字块的指针5.建立查询时,以下不能作为排序字段的是()A.字符型B.通用型C.逻辑D.日期型6.下列不能作为查询输出目标的是()A.表B.报表C.视图D.标签7.逻辑删除rs表中,所有年龄大于50的SQL语句是()A.Select from rs for 年龄>50B.Delete from rs where 年龄>50C.Delete from rs where 年龄>50D.Select 年龄from rs where 年龄>508.以下关于多分支语句do case…endcase的叙述,正确的是()A.当有多个表达式为真时,执行最后一个表达式值为真之后的程序段B.当有多个表达式为真时,执行第一个表达式值为真之后的程序段C.当有多个表达式为真时,执行多个表达式值为真之后的程序段D.Do case…endcase语句,可以有多个程序段被执行9.在表单控件中,即可用于接收数据,又可作为编辑现有数据的控件是()A.标签B.文本框C.编辑框D.B、C均可10.在表单运行中,如复选框变为选中状态,其value属性值是()A. 1B. 2C.0D.不确定11.下列不能用记事本编辑的文本是()A.abc.dbcB.abc.prgC.abc.qprD.A、B均不能12.下列()选项可以实现使当前的命令按钮不可用。

数据库查询练习题

数据库查询练习题

数据库查询练习题数据库查询是管理和获取数据库数据的重要技能之一。

通过熟练掌握数据库查询语言,可以高效地检索和操作数据库中的数据。

以下是一些数据库查询练习题,帮助提升你的查询技巧和理解能力。

题目一:假设有一个名为"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(含答案)

数据库模拟试题4(含答案)

模拟题4一、填空题(每空1分,共12分)1. 数据库是长期存储在计算机内、有组织的、可_ _的数据集合。

2. 构成数据模型的三大要素是__________、数据操作和数据完整性约束。

3. SQL语言支持关系数据库的三级模式结构,其中外模式对应于和部分基本表,模式对应于基本表,内模式对应于。

4. 分布式数据库是一组数据集,逻辑上它们属于同一系统,而在物理上分散在用计算机网络连接的多个场地上,并统一由一个______________________________管理。

5. 在关系数据库的规范化理论中,在执行“分解”时,必须遵守规范化原则:既要保持_________关系,又要具有________连接性。

6. 在数据库系统中,数据的完整性是指数据的、和。

7. 并发操作带来数据不一致性包括三类:丢失修改、和。

二、单选题(每空1分,共12 分)1. 关系数据库管理系统都是基于()理论。

A. Codd的数据关系模型B. 数据结构C. 计算机操纵系统D. 信息管理2. 元组关系演算表达式{t| R(t) ∧S(t)}表达的是()A. R∪SB. R∩SC. R-SD. S-R3. 在数据库中,与查询有关的是()A. 数据依赖B. 进程管理C. 索引D. 数据压缩4. 在关系模式R(U,F)中,如果X→U,则X是R的()A. 候选码B. 主码C. 超码D. 外码5. 语句 delete from sc 表明()A. 删除sc中的全部记录B. 删除基本表scC. 删除基本表sc中的列数据D. 删除基本表sc中的部分行6. 数据库设计阶段分为()A. 物理设计阶段、逻辑设计阶段、编程和调试阶段B. 模型设计阶段、程序设计阶段和运行阶段C. 方案设计阶段、总体设计阶段、个别设计和编程阶段D. 概念设计阶段、逻辑设计阶段、物理设计阶段、实施和调试阶段7. 关系笛卡尔积运算记号R×S,( )A. R为关系名,S为属性名B. R和S均为属性名C. R为属性名,S为关系名D. R和S均为关系名8. 在DB应用中,一般一条SQL 语句可产生或处理一组记录,而DB主语言语句一般一次只能处理一条记录,其协调可通过哪种技术实现()A. 指针B. 游标C. 数组D. 栈9. 下列说法中不正确的是()。

MySQL数据库练习题_sql基础题40题

MySQL数据库练习题_sql基础题40题

1、创建数据库和数据表,并完成以下相关题目。

几个基础实体表可以存储学生、班级、课程、教师、系别相关信息写出相关数据表(包括未列出的关系表、其它表)创建语句(表详细属性可参照以下问题进行补全)假定以下所有问题相关表数据都存在2、当查找学生信息的同时,可以列出班主任信息3、查找学生姓名为xxx 的人4、查找学生分数大于80的人5、查找老师年龄小于30岁的人6、查找老师的姓名,年龄,e-mail其中年龄不为xx岁的老师7、查找学生分数80分或者90分8、查找学生分数为88分并且性别为男的学生9、查找出学生分数在90—100之间的所有学生10、查找出姓李的老师11、查找出老师使用的邮箱为lang的12、查找出老师的号码为159开头的13、查询老师年龄从高到低14、查询出每个学生的班主任老师,只列出学生的姓名,年龄,老师的姓名,电话15、查询出学生姓名,性别,e_mail 、老师姓名,年龄,e_mail16、将学生的年龄进行分组显示17、查找出学生中年龄是19岁的人,并且19岁人中找出一个叫汪雪的人18、查询出学生年龄19、列出老师中年龄最大的3个人20、查询所有数学系学生的信息21、查询李老师所教的课程号、课程名22、查询年龄大于20岁的女同学的学号和姓名23、查询学号为‘H0301’学生所选修的全部课程成绩24、查询平均成绩都在80分以上的学生学号及平均成绩25、查询至少有6人选修的课程号26、查询C02号课程得最高分的学生的学号27、查询学号为’J0101’的学生选修的课程号和课程名28、‘李小波’所选修的全部课程名称29、所有成绩都在70分以上的学生姓名及所在系30、英语成绩比数学成绩好的学生31、至少选修了两门课及以上的学生姓名和性别32、选修了李老师所讲课程的学生人数33、“数据结构”课程得最高分的学生的姓名、性别和所在系34、显示所有课程的选修情况35、取出没有选修“数据结构”课程的学生姓名和年龄36、没有选修李老师所讲课程的学生37、没有选修李老师和王老师所讲课程的学生38、检索至少选修课程“数据结构”和“C语言”的学生学号39、检索学习课程号为C02的学生学号、姓名和所在系40、检索选修课程号C01或C02的学生学号、姓名和所在系。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单表查询: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、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。

select *where sname like '李_强'6、查询<学生信息表>,查询姓"张"或者姓”李”的学生的基本信息。

Select *from A_studentinfowhere sname like '张%'or sname like '李%'7、查询<学生信息表>,查询姓"张"并且"所属省份"是"北京"的学生信息Select *from A_studentinfowhere sname like '张%'and province='北京'8、查询<学生信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息Select *from A_studentinfowhere province in ('北京','上海','新疆','山东')9、查询<学生信息表>,查询姓"张",但是"所属省份"不是"北京"的学生信息Select *from A_studentinfowhere sname like '张%'and province !='北京'10、查询<学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序select *from A_studentinfoorder by sex,province,class11、查询<学生信息表>,查询现有学生都来自于哪些不同的省份select distinct province as 省份12、查询<学生选修信息表>,查询没有填写成绩的学生的学号、课程号和成绩Select *from A_studentcoursewhere score is null13、查询<学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序Select *from A_studentcoursewhere score is not nullorder by score desc二、聚合查询1、统计<学生信息表>,统计共有多少个学生Select count (*) as 学生数量from A_studentinfo2、统计<学生信息表>,统计年龄大于20岁的学生有多少个Select count(*) as 学生数量from A_studentinfowhere (2008-yearofbirth)>203、统计<学生信息表>,统计入学时间在1980年至1982年的学生人数select count(*) as 学生数量from A_studentinfowhere enrollment between '1998-01-01' and '2003-12-30'对比以下查询方式,看看有何不同,为什么?select count(*) as 学生数量where enrollment between '1998' and '2003'4、统计<学生选修信息表>,统计学号为"S001"的学生的平均成绩Select avg(score) as 平均成绩from A_studentcoursewhere sno='S001'5、统计<学生选修信息表>,统计学号为"S001"的学生的总成绩select sum(score) as 总成绩from A_studentcoursewhere sno ='S001'6、统计<学生选修信息表>,查询课程号为”C001”的课程的最高成绩select max(score) as 最高成绩from A_studentcoursewhere cno='C001'7、统计<学生信息表>,查询所有学生中的最大年龄是多少select 2008-min(yearofbirth) as 最大年龄from A_studentinfo三、分组查询练习1、统计<学生选修信息表>,统计每个课程的选修人数select cno,count(*) as 学生数量from A_studentcoursegroup by cno2、统计<学生选修信息表>,统计每个同学的总成绩select sno,sum(score) as 总成绩from A_studentcoursegroup by sno3、统计<学生信息表>,统计每个班级中每种性别的学生人数,并按照班级排序select class as 班级,sex as 性别, count(*) as 人数from A_studentinfogroup by class,sexorder by class4、统计<学生选修信息表>,统计每门课程的平均成绩,并按照成绩降序排序Select cno,avg(score) as 平均成绩from A_studentcoursegroup by cnoorder by avg(score) desc5、统计<学生选修信息表>,显示有两门以上课程不及格的学生的学号Select sno as 不及格学生学号from A_studentcoursewhere score<60group by snohaving count(*)>16、统计<学生信息表>,统计每个班级中的最大年龄是多少select class as 班级, 2008-min(yearofbirth) as 最大年龄from A_studentinfogroup by class四、嵌套查询练习1、用子查询实现,查询选修“高等数学”课的全部学生的总成绩select sum(考试成绩) as 高等数学总成绩from 选课where 课号=(select 课号from 课程where 名称='高等数学')2、用子查询实现,统计<学生选修信息表>,显示学号为"S001"的学生在其各科成绩中,最高分成绩所对应的课程号和成绩select 课号,成绩from 选课where 学号='S001'and 考试成绩=(select max(考试成绩)from 选课where学号='S001')3、用子查询实现,查询2班选修"数据库技术"课的所有学生的成绩之和select sum(score) as 数据库技术总成绩from A_studentcoursewhere cno =(select cnofrom A_courseinfowhere subject='数据库技术')and sno in(select snofrom A_studentinfowhere class='2')4、用子查询实现,查询3班"张三"同学的"测试管理"成绩select scorefrom A_studentcoursewhere cno=(select cnofrom A_courseinfowhere subject='测试管理')and sno in(select snofrom A_studentinfowhere class='3'and sname='张三')五、联接查询练习1、查询"张三"的各科考试成绩,要求显示姓名、课程号和成绩select sname as 姓名,cno as 课程号,score as 成绩from A_studentinfo,A_studentcoursewhere A_studentinfo.sno=A_studentcourse.snoand sname='张三'2、查询"张三"的各科考试成绩中,哪科没有记录考试成绩,要求显示姓名、课程号和成绩select sname as 姓名,cno as 课程号,score as 成绩from A_studentinfo,A_studentcoursewhere A_studentinfo.sno=A_studentcourse.snoand sname='张三'and score is null3、查询"张三"的各门课程成绩,要求显示姓名、课程名称和成绩select sname as 姓名,subject as 课程名称,score as 成绩from A_studentinfo,A_courseinfo,A_studentcoursewhere A_studentcourse.sno=A_studentinfo.snoand A_o=A_oand A_studentinfo.sname='张三'4、查询3班"张三"的"测试管理"成绩,要求显示姓名、成绩select sname as 姓名,score as 成绩from A_studentcourse,A_courseinfo,A_studentinfowhere A_o=A_oand A_studentcourse.sno=A_studentinfo.snoand subject='测试管理'and class='3'and sname='张三'5、查询所有2000年以前入学的,各班男生的各科考试平均成绩select class as 班级,avg(score) as 男生平均成绩from A_studentcourse,A_courseinfo,A_studentinfowhere A_o=A_oand A_studentcourse.sno=A_studentinfo.snoand sex='男'and enrollment<'2000-01-01'group by class六、外联接查询查询李坚强所有课程的成绩,并显示学号、姓名、课程号和成绩,没有成绩记录的学号包括:('S009','S010','S011')1、使用左联接select A_studentinfo.sno as 学生表学号,sname as 姓名,A_studentcourse.sno as成绩表学号, cno as 课程号,score as 成绩from A_studentinfoleft join A_studentcourseon A_studentinfo.sno=A_studentcourse.snowhere sname='李坚强'2、使用右联接select A_studentinfo.sno as 学生表学号,sname as 姓名,A_studentcourse.sno as成绩表学号, cno as 课程号,score as 成绩from A_studentcourseright join A_studentinfoon A_studentinfo.sno=A_studentcourse.snowhere sname='李坚强'3、对比等值连接select sname,scorefrom A_studentinfo,A_studentcoursewhere A_studentinfo.sno=A_studentcourse.snoand sname='李坚强'七、补充提高1、查询“张三”比“王三”入学早几年select A.sname as 姓名,year(A.enrollment) as 入学时间,B.sname as 姓名,year(B.enrollment) as 入学时间,datediff(year,A.enrollment,B.enrollment) as 年差from A_studentinfo A,A_studentinfo Bwhere A.sname='张三'and B.sname='王三'2、查询所在班级和该班内学生的年龄之和,其中每个人的年龄都大于20岁,每个班的年龄之和大于60岁select class as 班级,sum(2008-yearofbirth) as 年龄和from A_studentinfowhere (2008-yearofbirth) >20group by classhaving sum(2008-yearofbirth)>60order by class3、计算每种产品的剩余库存量表1,为产品进货表,产品名称name[char(10)],产品数量amount[int]表2,为产品出货表,产品名称name[char(10)],产品数量amount[int]业务逻辑:表1存储产品的总进货量,表2存储每种产品每次的出货量,如产品A进货为100,出货了3次,每次分别为10、20、30,那么A产品的库存就为40表A1 | 表A2---------------------------------|---------------------------name amount | name amountA 100 | A 10B 100 | A 20| A 30| B 10| B 40--方法1--建立视图create view A2Sumasselect name,sum(amount) as thesumfrom A2group by name--关联查询select ,A1.amount-A2Sum.thesumfrom A1,A2Sumwhere =--方法2select ,A1.amount-A2Table.A2amount as stocksfrom A1,(select name,sum(amount) as A2amount from A2 group by name) as A2Tablewhere =--方法3--定义单个产品变量declare @aa intset @aa=(select sum(amount)from A2where name='A'group by name)--计算单个产品剩余select name,amount-@aa as leave from A1where name='A'。

相关文档
最新文档