数据库语言查询练习题(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的学生学号、姓名和所在系。

DQL-数据查询习题与知识总结

DQL-数据查询习题与知识总结

教材上的例题:1.查询清华大学出版社出版图书的书名和作者。

2.查询Book表中的书名,作者,价格。

3.查询Book表中的全部数据。

4.查询每一本书九折后的价格。

2.加常量:SELECT name,‟birthdate‟,birthdate FROM Reader3.指定列名:SELECT book_ID AS 编号,name AS 姓名,author AS 作者FROM Book4.Where子句:查询价格大于30元的图书的全部信息5.查询所有的女读者的信息6.查询图书价格在30到50元之间的图书7.查询“机械工业出版社”或者“清华大学出版社”出版的图书8.查询图书价格在25到50元之间的图书9.图书价格不在20到30元之间的图书10.查找“机械工业出版社”,“清华大学出版社”,“高等教育出版社”出版的全部图书11.查找不是“机械工业出版社”,“清华大学出版社”,“高等教育出版社”出版的全部图书12.查询姓全部“王”的读者的信息。

13.查询名字是两个字的姓“王”的读者的信息14.查询名字中带有“晓”字的人的信息15.查询所有不姓张的读者的信息16.查询性别为空的读者的信息17.查询出生日期不为空的读者的姓名18.order by子句:查询读者的信息按出生日期的升序显示19.查询读者的信息按出生日期的“降序”显示20.查询图书的信息,查询结果按照出版社的名称升序排序,同一出版社的按照价格的降序排序。

21.统计全部图书的平均价格22.查询最高的图书价格23.统计读者的总人数24.统计“清华大学出版社”出版图书的数目25.分组子句:统计每个出版社的出版图书的数目26.统计每个出版社的出版图书的数目。

27.统计每个人所借图书的数目。

28.统计每个出版社出版图书的平均价格,并显示每个出版社的名称29.查询所借图书的数目多余2本的读者编号,并显示所借图书的数目。

30.查询出版图书多余3本的出版社名称和出版图书数目31.查询查询售价最高的图书的名称32.查询售价比平均售价高的图书的名称33.查询与“数据库原理”在同一出版社的图书信息34.查询王旭所借图书的图书编号35.查询“王旭”所借的图书的名称36.查询价格最低的图书信息37.查询书价最高的图书的信息38.查询已经借阅了图书的读者的姓名39.已经被借出的图书的信息40.查询2005年1月20日所借出的图书的信息41.查询每个读者所借的图书的信息,要求显示读者姓名,图书名称,借出日期42.查询‟王旭‟所借图书的书名43.显示所有读者的借阅情况(包括没借书的读者),显示读者编号,读者姓名,图书编号44.显示所有读者的借阅情况(包括没借书的读者和没被借的图书),显示读者编号、读者姓名、图书编号、书名和借阅日期。

超经典MySQL练习50题,做完这些你的SQL就过关了

超经典MySQL练习50题,做完这些你的SQL就过关了

超经典MySQL练习50题,做完这些你的SQL就过关了出品:Python数据之道作者:Peter编辑:Lemon相信⼤多学习了 Mysql 数据库语⾔的同学都会上⽹找练习来练⼿,⽽⼤部分的⼈肯定知道有⼀篇 Mysql 经典练习题50题的帖⼦,上⾯的题⽬基本上涵盖了 Mysql 查询语句的关键知识点。

笔者近期对⼜将这 50 题进⾏了练习,同时整理了相关的参考答案,有⾃⼰的思路和⽅法,也有参考⼤神们的。

不得不说,这50题对SQL的提升真的很有帮助!笔者使⽤的 MySQL 版本是MySQL 5.7.28。

在⽂末提供获鉴于 50 题篇幅太长,本⽂只展⽰了其中10题及笔者的思考,50 题完整版练习题以及笔者的答案实践已整理在pdf⽂件中,共有100多页,在⽂末提供获取的⽅法。

取的⽅法建表和插⼊数据在开始之前,先建⽴本⽂所需要的数据表格:-- 建表-- 学⽣表CREATE TABLE `Student`(`s_id` VARCHAR(20),`s_name` VARCHAR(20) NOT NULL DEFAULT '',`s_birth` VARCHAR(20) NOT NULL DEFAULT '',`s_sex` VARCHAR(10) NOT NULL DEFAULT '',PRIMARY KEY(`s_id`));-- 课程表CREATE TABLE `Course`(`c_id` VARCHAR(20),`c_name` VARCHAR(20) NOT NULL DEFAULT '',`t_id` VARCHAR(20) NOT NULL,PRIMARY KEY(`c_id`));-- 教师表CREATE TABLE `Teacher`(`t_id` VARCHAR(20),`t_name` VARCHAR(20) NOT NULL DEFAULT '',PRIMARY KEY(`t_id`));-- 成绩表CREATE TABLE `Score`(`s_id` VARCHAR(20),`c_id` VARCHAR(20),`s_score` INT(3),PRIMARY KEY(`s_id`,`c_id`));-- 插⼊学⽣表测试数据insert into Student values('01' , '赵雷' , '1990-01-01' , '男');insert into Student values('02' , '钱电' , '1990-12-21' , '男');insert into Student values('03' , '孙风' , '1990-05-20' , '男');insert into Student values('04' , '李云' , '1990-08-06' , '男');insert into Student values('05' , '周梅' , '1991-12-01' , '⼥');insert into Student values('06' , '吴兰' , '1992-03-01' , '⼥');insert into Student values('07' , '郑⽵' , '1989-07-01' , '⼥');insert into Student values('08' , '王菊' , '1990-01-20' , '⼥');-- 课程表测试数据insert into Course values('01' , '语⽂' , '02');insert into Course values('02' , '数学' , '01');insert into Course values('03' , '英语' , '03');-- 教师表测试数据insert into Teacher values('01' , '张三');insert into Teacher values('02' , '李四');insert into Teacher values('03' , '王五');-- 成绩表测试数据insert into Score values('01' , '01' , 80);insert into Score values('01' , '02' , 90);insert into Score values('01' , '03' , 99);insert into Score values('02' , '01' , 70);insert into Score values('02' , '02' , 60);insert into Score values('02' , '03' , 80);insert into Score values('03' , '01' , 80);insert into Score values('03' , '02' , 80);insert into Score values('03' , '03' , 80);insert into Score values('04' , '01' , 50);insert into Score values('04' , '02' , 30);insert into Score values('04' , '03' , 20);insert into Score values('05' , '01' , 76);insert into Score values('05' , '02' , 87);insert into Score values('06' , '01' , 31);insert into Score values('06' , '03' , 34);insert into Score values('07' , '02' , 89);insert into Score values('07' , '03' , 98);题⽬1题⽬要求成绩⾼的学⽣的信息及课程分数查询'01'课程⽐'02'课程成绩⾼SQL实现-- ⽅法1selecta.*,b.s_score as 1_score,c.s_score as 2_scorefrom Student ajoin Score b on a.s_id = b.s_id and b.c_id = '01' -- 两个表通过学号连接,指定01left join Score c on a.s_id = c.s_id and c.c_id='02' or c.c_id is NULL -- 指定02,或者c中的c_id直接不存在-- 为NULL的条件可以不存在,因为左连接中会直接排除c表中不存在的数据,包含NULLwhere b.s_score > c.s_score; -- 判断条件-- ⽅法2:直接使⽤where语句selecta.*,b.s_score as 1_score,c.s_score as 2_scorefrom Student a, Score b, Score cwhere a.s_id=b.s_id -- 列出全部的条件and a.s_id=c.s_idand b.c_id='01'and c.c_id='02'and b.s_score > c.s_score; -- 前者成绩⾼第⼆种⽅法实现:第⼆种⽅法实现题⽬2题⽬要求查询'01'课程⽐'02'课程成绩低成绩低的学⽣的信息及课程分数(题⽬1是成绩⾼)SQL实现类⽐题⽬1的实现过程-- ⽅法1:通过连接⽅式实现selecta.*,b.s_score as 1_score,c.s_score as 2_scorefrom Student aleft join Score b on a.s_id=b.s_id and b.c_id='01' or b.c_id=NULL -- 包含NULL的数据join score c on a.s_id=c.s_id and c.c_id='02'where b.s_score < c.s_score;-- 通过where⼦句实现selecta.*,b.s_score as 1_score,c.s_score as 2_scorefrom Student a, Score b, Score cwhere a.s_id=b.s_idand a.s_id=c.s_idand a.s_id=c.s_idand b.c_id='01'and c.c_id='02'and b.s_score < c.s_score; -- 前者⽐较⼩题⽬3题⽬需求查询平均成绩⼤于等于60分的同学的学⽣编号和学⽣姓名和平均成绩SQL实现-- 执⾏顺序:先执⾏分组,再执⾏avg平均操作selectb.s_id,b.s_name,round(avg(a.s_score), 2) as avg_scorefrom Student bjoin Score aon b.s_id = a.s_idgroup by b.s_id -- 分组之后查询每个⼈的平均成绩having avg_score >= 60;-- 附加题:总分超过200分的同学selectb.s_id,b.s_name,round(sum(a.s_score),2) as sum_score -- sum求和from Student bjoin Score aon b.s_id=a.s_idgroup by b.s_idhaving sum_score > 200;附加题:总分超过200分的同学题⽬4题⽬要求查询平均成绩⼩于60分的同学的学⽣编号和学⽣姓名和平均成绩(包括有成绩的和⽆成绩的)SQL实现1-两种情况连接平均分⼩于60selectb.s_id,b.s_name,round(avg(a.s_score), 2) as avg_score -- round四舍五⼊函数from Student bjoin Score aon b.s_id = a.s_idgroup by b.s_id -- 分组之后查询每个⼈的平均成绩having avg_score < 60;结果为:没有成绩的同学:selecta.s_id,a.s_name,a.s_name,0 as avg_scorefrom Student awhere a.s_id not in ( -- 学⽣的学号不在给给定表的学号中 select distinct s_id -- 查询出全部的学号from Score);最后将两个部分的结果连起来即可:通过union⽅法SQL实现2-ifnull函数判断使⽤ifnull函数selectS.s_id,S.s_name,round(avg(ifnull(C.s_score,0)), 2) as avg_score -- ifnull 函数:第⼀个参数存在则取它本⾝,不存在取第⼆个值0 from Student Sleft join Score Con S.s_id = C.s_idgroup by s_idhaving avg_score < 60;使⽤null判断selecta.s_id,a.s_name,ROUND(AVG(b.s_score), 2) as avg_scorefrom Student aleft join Score b on a.s_id = b.s_idGROUP BY a.s_idHAVING avg_score < 60 or avg_score is null; -- 最后的NULL判断题⽬5题⽬需求查询所有同学的学⽣编号、学⽣姓名、选课总数、所有课程的总成绩SQL实现selecta.s_id,a.s_name,count(b.c_id) as course_number -- 课程个数,sum(b.s_score) as scores_sum -- 成绩总和from Student aleft join Score bon a.s_id = b.s_idgroup by a.s_id,a.s_name;题⽬6题⽬需求查询“李”姓⽼师的数量SQL实现select count(t_name) from Teacher where t_name like '李%'; -- 通配符这题怕是最简单的吧题⽬7题⽬需求查询学过张三⽼师张三⽼师授课的同学的信息SQL实现-- ⽅法1:通过张三⽼师的课程的学⽣来查找;⾃⼰的⽅法select * -- 3. 通过学号找出全部学⽣信息from Studentwhere s_id in (select s_id -- 2.通过课程找出对应的学号from Score Sjoin Course Con S.c_id = C.c_id -- 课程表和成绩表where C.t_id=(select t_id from Teacher where t_name='张三') -- 1.查询张三⽼师的课程);-- ⽅法2:通过张三⽼师的课程来查询select s1.*from Student s1join Score s2on s1.s_id=s2.s_idwhere s2.c_id in (select c_id from Course c where t_id=( -- 1. 通过⽼师找出其对应的课程select t_id from Teacher t where t_name='张三'))-- ⽅法3select s.* from Teacher tleft join Course c on t.t_id=c.t_id -- 教师表和课程表left join Score sc on c.c_id=sc.c_id -- 课程表和成绩表left join Student s on s.s_id=sc.s_id -- 成绩表和学⽣信息表where t.t_name='张三';⾃⼰的⽅法:⽅法2来实现:⽅法3实现:题⽬8题⽬需求找出没有学过张三⽼师课程的学⽣SQL实现select * -- 3. 通过学号找出全部学⽣信息from Studentwhere s_id not in ( -- 2.通过学号取反:学号不在张三⽼师授课的学⽣的学号中select s_idfrom Score Sjoin Course Con S.c_id = C.c_idwhere C.t_id=(select t_id from Teacher where t_name ='张三') -- 1.查询张三⽼师的课程);-- ⽅法2:select *where s1.s_id not in (select s2.s_id from Student s2 join Score s3 on s2.s_id=s3.s_id where s3.c_id in( select c.c_id from Course c join Teacher t on c.t_id=t.t_id where t_name='张三' ));-- ⽅法3select s1.*from Student s1join Score s2on s1.s_id=s2.s_idwhere s2.c_id not in (select c_id from Course c where t_id=( -- 1. 通过⽼师找出其对应的课程select t_id from Teacher t where t_name='张三'));⽅法2:题⽬9题⽬需求查询学过编号为01,并且学过并且学过编号为02课程的学⽣信息SQL实现-- ⾃⼰的⽅法:通过⾃连接实现select s1.*from Student s1where s_id in (select s2.s_id from Score s2join Score s3on s2.s_id=s3.s_idwhere s2.c_id='01' and s3.c_id='02');-- ⽅法2:直接通过where语句实现select s1.*from Student s1, Score s2, Score s3where s1.s_id=s2.s_idand s1.s_id=s3.s_idand s2.c_id=01 and s3.c_id=02;-- ⽅法3:两个⼦查询select sc1.s_idfrom (select * from Score s1 where s1.c_id='01') sc1,(select * from Score s1 where s1.c_id='02') sc2where sc1.s_id=sc2.s_id;-- 2.找出学⽣信息select *from Studentwhere s_id in (select sc1.s_id -- 指定学号是符合要求的from (select * from Score s1 where s1.c_id='01') sc1,(select * from Score s1 where s1.c_id='02') sc2where sc1.s_id=sc2.s_id);1. 先从Score表中看看哪些⼈是满⾜要求的:01-05同学是满⾜的通过⾃连接查询的语句如下:查询出学号后再匹配出学⽣信息:通过where语句实现:⽅法3的实现:题⽬10题⽬需求但是没有学过02课程的学⽣信息(注意和上⾯ 题⽬的区别)查询学过01课程,但是没有学过SQL实现⾸先看看哪些同学是满⾜要求的:只有06号同学是满⾜的错误思路1直接将上⾯⼀题的结果全部排出,导致那些没有学过01课程的学⽣也出现了:07,08select s1.*from Student s1where s_id not in ( -- 直接将上⾯⼀题的结果全部排出,导致那些没有学过01课程的学⽣也出现了:07,08select s2.s_id from Score s2join Score s3on s2.s_id=s3.s_idwhere s2.c_id='01' and s3.c_id ='02');错误思路2将上⾯题⽬中的02课程直接取反,导致同时修过01,02,03或者只修01,03的同学也会出现select s1.*from Student s1where s_id in (select s2.s_id from Score s2join Score s3on s2.s_id=s3.s_idwhere s2.c_id='01' and s3.c_id !='02' -- 直接取反是不⾏的,因为修改(01,02,03)的同学也会出现);正确思路https:///p/9abffdd334fa-- ⽅法1:根据两种修课情况来判断select s1.*from Student s1where s1.s_id in (select s_id from Score where c_id='01') -- 修过01课程,要保留and s1.s_id not in (select s_id from Score where c_id='02'); -- 哪些⼈修过02,需要排除!!!!!⽅法2:先把06号学⽣找出来select * from Student where s_id in (select s_idfrom Scorewhere c_id='01' -- 修过01课程的学号and s_id not in (select s_id -- 同时学号不能在修过02课程中出现 from Scorewhere c_id='02'));鉴于篇幅,本⽂只展⽰了50题中的10道题的答案以及笔者的实践⼼得。

数据库查询练习152(含参考答案)

数据库查询练习152(含参考答案)

查询练习题第一部分:【1】从fruits表中检索所有字段的数据Select * from fruits;【2】查询fruits表中f_name列所有水果名称Select f_name from fruits;【3】从fruits表中获取f_name和f_price两列Select f_name,f_price from fruits;【4】查询价格为元的水果的名称Select f_name from fruits where f_price=;【5】查找名称为“apple”的水果的价格Select f_price from fruits where f_name=’apple’;【6】查询价格小于10的水果的名称Select f_name from fruits where f_peice<10;【7】s_id为101和102的记录Select * from fruits where s_id=101 or s_id=102;【8】查询所有s_id不等于101也不等于102的记录Select * from fruits where s_id!=101 and s_id!=102;【9】查询价格在元到元之间的水果名称和价格Select f_name,f_price from fruits where f_price> and f_price<;【10】查询价格在元到元之外的水果名称和价格Select f_name,f_price from fruits where f_price< or f_price>;【11】查找所有以’b’字母开头的水果Select f_name from fruits where f_name like ‘b%’;【12】在fruits表中,查询f_name中包含字母’g’的记录Select * from fruits where f_name like “%g%”;【13】查询以’b’开头,并以’y’结尾的水果的名称Select * from fruits where f_name like “b%y”;【14】在fruits表中,查询以字母’y’结尾,且’y’前面只有4个字母的记录Select * from fruits where f_name like “____y”;第二部分:查询表中的记录数目:SELECT COUNT(*) AS cust_num FROM customers;【15】查询customers表中c_email为空的记录的c_id、c_name和c_email字段值Select c_id,c_name,c_email from customers where c_email is null;【16】查询customers表中c_email不为空的记录的c_id、c_name和c_email字段值Select c_id,c_name,c_email from customers where c_email is not null;【17】在fruits表中查询s_id = 101,并且f_price大于等于5的水果价格和名称Select f_name,f_price from fruits where s_id=101 and f_price>=5;【18】在fruits表中查询s_id = 101或者102,且f_price大于5,并且f_name=‘apple’的水果价格和名称Select f_name,f_price from fruits where s_id in (101,102) and f_price>5 and f_name=’apple’;【19】查询s_id=101或者s_id=102的水果供应商的f_price和f_nameSelect f_price,f_name from fruits where s_id=101 or s_id=102;【20】查询s_id=101或者s_id=102的水果供应商的f_price和f_name(用不同的方法)Select f_price,f_name from fruits where s_id in (101,102);【21】查询fruits表中s_id字段的值,返回s_id字段值且不得重复(使用distinct去重复)SELECT DISTINCT s_id FROM fruits;【22】查询fruits表的f_name字段值,并对其进行排序Select f_name from fruits order by f_name;【23】查询fruits表中的f_name和f_price字段,先按f_name排序,再按f_price排序Select f_name,f_price from fruits order by f_name,f_price;【24】查询fruits表中的f_name和f_price字段,对结果按f_price降序方式排序Select f_name,f_price from fruits order by f_price desc;【25】查询fruits表,先按f_price降序排序,再按f_name字段升序排序Select * from fruits order by f_price desc,f_name;【26】根据s_id对fruits表中的数据进行分组,并显示每个分组的总记录数。

数据库练习题库(含答案)

数据库练习题库(含答案)

数据库练习题库(含答案)一、单选题(共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.联机分析处理包括以下()基本分析功能。

数据库练习题(含答案)

数据库练习题(含答案)

数据库练习题(含答案)一、单选题(共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由六大对象组成,因此空数据库必须是没有任何对象的数据库。

sql 查询 练习题

sql 查询 练习题

sql 查询练习题SQL查询练习题SQL是一种用于管理和操作关系型数据库的语言,它可以让我们轻松地从数据库中提取所需的数据。

在实际应用中,熟练掌握SQL查询语句的编写是非常重要的。

为了帮助大家提高SQL查询的能力,下面将给出一些SQL查询练习题。

1. 查询所有员工的姓名和工资。

```sqlSELECT 姓名, 工资 FROM 员工表;```2. 查询所有部门的名称和员工数量。

```sqlSELECT 部门名称, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门名称; ```3. 查询所有工资高于平均工资的员工信息。

```sqlSELECT * FROM 员工表 WHERE 工资 > (SELECT AVG(工资) FROM 员工表);```4. 查询每个部门工资最高的员工信息。

```sqlSELECT * FROM 员工表 WHERE (部门名称, 工资) IN (SELECT 部门名称, MAX(工资) FROM 员工表 GROUP BY 部门名称);```5. 查询没有分配部门的员工信息。

```sqlSELECT * FROM 员工表 WHERE 部门名称 IS NULL;```6. 查询每个部门的平均工资,并按照平均工资降序排列。

```sqlSELECT 部门名称, AVG(工资) AS 平均工资 FROM 员工表 GROUP BY 部门名称ORDER BY 平均工资 DESC;```7. 查询每个部门的员工数量,并按照员工数量升序排列。

```sqlSELECT 部门名称, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门名称ORDER BY 员工数量 ASC;```8. 查询员工表中工资排名前10的员工信息。

```sqlSELECT * FROM 员工表 ORDER BY 工资 DESC LIMIT 10;```9. 查询每个部门的员工工资排名前3的员工信息。

学生选课数据库MySQL语句练习题45道

学生选课数据库MySQL语句练习题45道

学⽣选课数据库MySQL语句练习题45道1、查询Student表中的所有记录的Sname、Ssex和Class列。

select Sname,Ssex,Class from Student;2、查询教师所有的单位即不重复的Depart列。

select distinct Depart from Teacher;3、查询Student表的所有记录。

select * from Student;4、查询Score表中成绩在60到80之间的所有记录。

select * from Score where degree>=60 and degree<=80;5、查询Score表中成绩为85,86或88的记录。

select * from score where degree=85 or degree=86 or degree=88;6、查询Student表中“95031”班或性别为“⼥”的同学记录。

select * from student where class="95031" or ssex="Ů";7、以Class降序查询Student表的所有记录。

select * from student order by class desc;8、以Cno升序、Degree降序查询Score表的所有记录。

select * from score order by cno,degree desc;9、查询“95031”班的学⽣⼈数。

select count(sno) from student where class="95031";10、查询Score表中的最⾼分的学⽣学号和课程号。

(⼦查询或者排序)select sno,cno from score where degree in (select max(degree)from score); //全部课程的最⾼分select sno,cno from score a where degree=(select max(degree) from score b where o=o); //⼀门课的最⾼分11、查询每门课的平均成绩。

结构化查询语言SQL习题与答案

结构化查询语言SQL习题与答案

结构化查询语⾔SQL习题与答案结构化查询语⾔SQL习题与答案 篇⼀:结构化查询语⾔SQL习题与答案 ⼀、选择题 1. 在SQL包含的功能中,最重要的功能是_______。

A) 数据查询 B) 数据操纵 C) 数据定义 D) 数据控制 2. 使⽤SQL语⾔有两种⽅式,它们是_______。

A) 菜单式和交互式B) 嵌⼊式和程序式 C) 交互式和嵌⼊式D) 命令式和解释式 3. SQL的全部功能可以⽤9个动词概括,其中动词INSERT是属于下列______功能。

A) 数据查询 B) 数据操纵 C) 数据定义 D) 数据控制 4. SQL语⾔⽀持数据库的三级模式结构,其中模式对应于______。

A) 存储⽂件 B) 视图 C) 基本表 D) 视图和基本表 5. 在创建数据表时,可以给字段规定NULL或NOT NULL值,NULL值的含义是______。

A) 0B) 空格 C) NULL D) 不确定 6. 在SQL的ALTER语句中,⽤于删除字段的⼦句是______。

A) ALTER B) DELETE C) DROP D) MODIFY 7. SQL中的INSERT语句可以⽤于______。

A) 插⼊⼀条记录 B) 插⼊⼀个字段 C) 插⼊⼀个索引 D) 插⼊⼀个表 8. 下列描述错误的是______。

A)⽤INSERT-SQL语句可以插⼊⼀条记录 B)⽤INSERT-SQL语句可以插⼊多条记录 C)使⽤INSERT-SQL语句可以插⼊记录的部分数据 D)使⽤INSERT-SQL语句插⼊记录时列名的排列顺序必须与表定义时的顺 序⼀致 9. INSERT-SQL语句中所使⽤的数据不能来⾃于______。

A) 数组 B) 变量 C) 查询 D) 索引 10. SQL中的UPDATE语句可以⽤于______。

A) 更新数据表的结构 B) 更新数据表的值 C) 更新索引D) 更新查询 11. 下列描述错误的是______。

sql数据库练习题参考答案

sql数据库练习题参考答案

第1章数据库基础练习题一、单项选择题1.C 2.A 3.C 4.D 5.D6.B 7.A 8.B 9.B 10.D11.C 12.A 13.C 14.B 15.A16.B 17.A 18.D 19.B 20.B21.A; D 22.A 23.C 24.D 25.B26.B 27.B 28.D 29.B 30.B二、填空题1.概念;数据2.属性3.码4.一对一联系;一对多(或多对一)联系;多对多联系5.候选码6.候选码7.关系名(属性1,属性2,…,属性n)8.关系数据结构;关系操作集合;关系完整性约束9.实体;参照;用户定义的;实体;参照10.空值11.需求分析阶段;概念结构设计阶段;逻辑结构设计阶段;物理结构设计阶段;数据库实施阶段;数据库运行和维护阶段12.准确了解并分析用户对系统的要求,尤其是用户的信息要求、处理要求、安全性与完整性要求,确定所要开发的应用系统的目标,产生用户和设计者都能接受的需求说明书,做为下一步数据库概念结构设计的依据。

13.将需求分析得到的用户需求抽象为信息结构即概念模型。

14.将概念结构进一步转化为某一DBMS支持的数据模型,并对其进行优化。

15.为逻辑数据模型选取一个最适合应用环境的物理结构,包括数据库在物理设备上的存储结构和存取方法。

三、指出以下各缩写的英文意思和中文意思1.DB:Database2.DBMS:Database Management System3.RDBMS:4.DBS:Database System5.DBA:Database Administrator6.NF:Normal Form7.DDL:Data Definition Language 四、按题目要求回答问题3.答:(1)关系R是2NF。

因为R的候选码为课程名,而课程名→教师名,教师名→教师地址,所以课程名→教师地址,即存在非主属性教师地址对候选码课程名的传递函数依赖,因此R不是3NF。

50道数据库练习题

50道数据库练习题

select * from Student;select * from Course;select * from Teacher;select * from SC;create table Student(S# varchar2(10),Sname varchar2(10),Sage date,Ssex varchar2(10)); commit;insert into Student values('01' , '赵雷' , to_date('1990-01-01','yyyy-mm-dd') , '男'); insert into Student values('02' , '钱电' , to_date('1990-12-21','yyyy-mm-dd') , '男'); insert into Student values('03' , '孙风' , to_date('1990-05-20','yyyy-mm-dd') , '男'); insert into Student values('04' , '李云' , to_date('1990-08-06','yyyy-mm-dd') , '男'); insert into Student values('05' , '周梅' , to_date('1991-12-01','yyyy-mm-dd') , '女'); insert into Student values('06' , '吴兰' , to_date('1992-03-01','yyyy-mm-dd') , '女'); insert into Student values('07' , '郑竹' , to_date('1989-07-01','yyyy-mm-dd') , '女'); insert into Student values('08' , '王菊' , to_date('1990-01-20','yyyy-mm-dd') , '女'); commit;create table Course(C# varchar2(10),Cname varchar2(10),T# varchar2(10));insert into Course values('01' , '语文' , '02');insert into Course values('02' , '数学' , '01');insert into Course values('03' , '英语' , '03');create table Teacher(T# varchar2(10),Tname varchar2(10));insert into Teacher values('01' , '张三');insert into Teacher values('02' , '李四');insert into Teacher values('03' , '王五');create table SC(S# varchar2(10),C# varchar2(10),score number(4,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"课程成绩高的学生的信息及课程分数select a.*,b.score,c.score from student a,sc b,sc c where a.s#=b.s# and a.s#=c.s# and b.c#='01'and c.c#='02'and b.score>c.score;commit;--2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数select a.*,b.score,c.score from student a,sc b,sc c where a.s#=b.s# and a.s#=c.s# and b.c#='01'and c.c#='02'and b.score<c.score;commit;--3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩select a.s#,a.sname,avg(b.score) from student a,sc b where a.s#=b.s# group by a.s#,a.sname having avg(b.score)>=60 ;commit;--4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩select a.s#,a.sname,avg(b.score) from student a,sc b where a.s#=b.s# group by a.s#,a.sname having avg(b.score)<60 ;commit;--5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩, 并将结果以每页5组数据的形式分页显示。

  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'。

相关文档
最新文档