查询操作练习题
- 格式:doc
- 大小:19.00 KB
- 文档页数:5
Access学习辅导与上机实习—习题(第3章查询)■典型习题一、选择题1、是_________不会在简单查询的设计网络中出现。
A .字段B 条件C更新D排序2、下列叙述不正确的是。
A 删除查询主要用于删除符合条件的记录。
B 更新查询中可以使用计算功能。
C 追加查询时如果两个表的结构不一致,则不能进行。
D生成表查询生成新的表,该表是源表的一个子集。
3、不属于统计函数。
A MAXB COUNTC LASTD Y EAR二、填空题4、在查询表达式中,“/”表示,而“\”表示。
5、总计查询中,必须包含的两种字段是和。
6、在查询设计过程中,有多种方式可以视察查询结果,比如可以进入视图模式或单击按钮。
三、操作题7、对“教学”库建立下列查询:(1)用库中的三张表建立一个由学生姓名、课程名称、成绩组成的新数据表,新表取名为新表1。
(2)用学生表生成一个关于女生情况的新数据表,取名为女生情况表。
(3)用库中的三张表建立一个由学生姓名、成绩组成的数学成绩表,取名为数学成绩表。
(4)用库的三张表建立一个不及格学生的汇总表,表中的字段要求有学生姓名、课程名称、成绩。
(5)用库中的三张表建立一个由课程名称、各科平均分、总分、最高分、最低分组成的新数据表,取名为成绩统计表。
8、查询指定课程名的学生成绩,课程名只要求输入任意的几个字。
9、查询统计指定课程名称的总分和平均分。
■习题一、选择题1、利用对话框提示用户输入参数的查询过程称为_______。
A 选择查询B 参数查询C 操作查询D SQL查询2、以下叙述中,错误的是______。
A 查询是从数据库的表中行筛选出符合条件的记录,构成一个新的数据集合B 查询的种类有:选择查询、参数查询、交叉查询、操作查询和SQL查询C 创建复杂的查询不能使用查询向导。
D 可以使用函数、逻辑运算符、关系运算符创建复杂的查询3、Access共提供了种数据类型。
A 8B 9C 10D 114、用向导创建简单查询的步骤不包括。
1、对class表和student表使用交叉连接
2、查看学生基本信息和所在班级的信息
3、查询学生的选课信息,要求显示学号、姓名、课程编号、课程姓名、志愿号,并按照学号升序排序,当学号相同时则按照志愿号升序排序
4、查询学生报名“计算机应用工程系”开设的选修课程情况,显示信息包括学生姓名、课程名称和教师
5、查询“01电子商务”班学生选修课程的情况,要求显示班级名称、学号、姓名、课程名称和上课时间
6、查询每个班级可以选修的,不是自己所在系部开设的选修课程的信息,显示信息包括班级、课程名、课程类别、学分、老师、上课时间和报名人数
7、课程类别相同但开设系部不同的课程信息,要求显示课程编号、课程名称、课程类别、系部编号,并按课程编号升序排列查询结果
8、查找和SQL Server实用技术同一系部开设的课程名称
9、查询所有学生的基本信息以及选课信息,要求既显示已报名选修课程的学生,也显示未报名的学生信息,结果显示学号、课程编号、课程名称
10、查询被学生选修和未被学生选修的课程信息,结果显示课程编号、课程名称、学号。
数据库查询练习题数据库查询是管理和获取数据库数据的重要技能之一。
通过熟练掌握数据库查询语言,可以高效地检索和操作数据库中的数据。
以下是一些数据库查询练习题,帮助提升你的查询技巧和理解能力。
题目一:假设有一个名为"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"表中查询出每个类别中价格最高的产品名称和价格。
sql连接查询题目
好的,以下是一道SQL连接查询的题目:
假设有两个表,一个是员工表(employees),包含员工ID(employee_id)、姓名(name)和工资(salary)字段;另一个是部门表(departments),包含部门ID(department_id)、部门名称(department_name)和部门负责人ID(manager_id)字段。
其中,部门负责人ID是员工ID的外键。
题目要求查询每个部门的负责人姓名及其工资。
请写出SQL查询语句,并解释其工作原理。
SQL查询语句如下:
sql复制代码
SELECT d.department_name, AS manager_name, e.salary
FROM departments d
JOIN employees e ON d.manager_id = e.employee_id;
工作原理:
1.使用JOIN关键字将部门表(departments)和员工表(employees)连接在一起,连接条件是部门负责人ID等于员工ID。
2.在SELECT语句中,选择部门名称(department_name)、负责人姓名(manager_name)和工资(salary)字段。
其中,负责人姓名使用别名(AS)来表示,以避免与部门名称冲突。
3.使用ON关键字指定连接条件,即部门负责人ID等于员工ID。
4.最终结果将返回每个部门的负责人姓名及其工资。
单表查询: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、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。
第3章查询一、选择题(1)在Access中对表进行"筛选"操作的结果是(A )。
A)从数据中挑选出满足条件的记录但不生成新表B)从数据中挑选出满足条件的记录并生成一个新表C)从数据中挑选出满足条件的记录并输出到一个报表中D)从数据中挑选出满足条件的记录并显示在一个窗体中(2)在Access数据库对象中,体现数据库设计目的的对象是( C)。
A)报表B)模块C)查询D)表(3)在SELECT 语句中使用ORDER BY 是为了指定(B )。
A)查询的表B)查询结果的顺序C)查询的条件D)查询的字段(4)将表A 的记录添加到表B 中,要求保持表B 中原有的记录,可以使用的查询是(C )。
A)选择查询B)生成表查询C)追加查询D)更新查询(5)在Access 中,查询的数据源可以是(C )。
A)表B)查询C)表和查询D)表、查询和报表(6)下列不属于查询操作的是( A)。
题目应为:下列不属于操作查询的是A)参数查询B)生成表查询C)更新查询D)删除查询(7)下列对查询能实现的功能叙述中,正确的是(D )。
A)选择字段、选择记录、编辑记录、实现计算、建立新表、建立数据库B)选择字段、选择记录、编辑记录、实现计算、建立新表、更新关系C)选择字段、选择记录、编辑记录、实现计算、建立新表、设置格式D)选择字段、选择记录、编辑记录、实现计算、建立新表、建立基于查询的报表和窗体(8)在Access的5个最主要的查询中,能从一个或多个表中检索数据,在一定的限制条件下,还可以通过此查询方式来更改相关表中记录的是(A )。
A)选择查询B)参数查询C)操作查询D)SQL查询(9)对"将信息系1999年以前参加工作的教师的职称改为副教授",合适的查询为(B )。
A)生成表查询B)更新查询C)删除查询D)追加查询(10)下面对查询功能的叙述中正确的是(C )。
A)在查询中,选择查询可以只选择表中的部分字段,还可以通过选择一个表中的不同字段生成同一个表B)在查询中,编辑记录主要包括添加记录、修改记录、删除记录和导入、导出记录C)在查询中,查询不仅可以找到满足条件的记录,还可以在建立查询的过程中进行各种统计计算D)以上说法均不对(11)查询"书名"字段中包含"等级考试"字样的记录,应该使用的条件是(D )。
SQL练习训练一1、查询dept表的结构在命令窗口输入:desc dept;2、检索dept表中的所有列信息select * from dept3、检索emp表中的员工姓名、月收入及部门编号select ename "员工姓名",sal "月收入",empno "部门编号" from emp注意查询字段用分号隔开。
4、检索emp表中员工姓名、及雇佣时间日期数据的默认显示格式为“DD-MM-YY",如果希望使用其他显示格式(YYYY-MM-DD),那么必须使用TO_CHAR函数进行转换。
select ename "员工姓名", hiredate "雇用时间1",to_char(hiredate,'YYYY-MM-DD') "雇用时间2" from emp注意:第一个时间是日期类型的,在Oracle的查询界面它的旁边带有一个日历。
第二个时间是字符型的。
易错点:不要将YYYY-MM-DD使用双引号5、使用distinct去掉重复行。
检索emp表中的部门编号及工种,并去掉重复行。
select distinct deptno "部门编号",job "工种" from emp order by deptno注意distinct放的位置为什么不放在from的前面?翻译成汉语就明白了应该是:选择不重复的部门编号和工种从emp表。
而不是:选择部门编号和工种不重复地从emp表。
这还是人话么O(∩_∩)O哈哈~6、使用表达式来显示列检索emp表中的员工姓名及全年的月收入select ename "员工姓名", (sal+nvl(comm,0))*12 "全年收入" from emp 注意:防止提成comm为空的操作,使用nvl函数7、使用列别名用姓名显示员工姓名,用年收入显示全年月收入。
数据库中SQL查询语句习题含答案查询问题:设教学数据库Education 有三个关系:学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT );学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME )(1)检索计算机系的全体学生的学号,姓名和性别;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS ”的学生学号与姓名;(4)检索选修课程号为C2或C4的学生学号;(5)检索至少选修课程号为C2和C4的学生学号;(6)检索不学C2课的学生姓名和年龄;(7)检索学习全部课程的学生姓名;(8)查询所学课程包含学生S3所学课程的学生学号。
(1)检索计算机系的全体学生的学号,姓名和性别; SELECT Sno ,Sname ,Sex FROM SWHERE Sdept =’CS ’;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS ”的学生学号与姓名本查询涉及到学号、姓名和课程名三个属性,分别存放在S 和C 表中,但S 和C 表没有直接联系,必须通过SC 表建立它们二者的联系。
C → SC → S 基本思路:(1)首先在C 表中找出“DS ”课程的课程号Cno ;(2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno ;(3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname 送入结果表列。
SELECT Sno ,Sname FROM SWHERE Sno IN (SELECT Sno FROM SCWHERE Cno IN (SELECT Cno FROM CWHERE Cname=‘DS ’));(4)检索选修课程号为C2或C4的学生学号; SELECT Sno FROM SCWHERE Cno=‘C2’ OR Cno=‘C4’;(5)检索至少选修课程号为C2和C4的学生学号; SELECT SnoFROM SC X ,SC YWHERE X.Sno=Y.Sno AND/doc/d33e82944b7302768e9951e79b89680202d86b33.html o=‘C2’ AND /doc/d33e82944b7302768e9951e79b89680202d86b33.html o=‘C4’;(6)检索不学C2课的学生姓名和年龄;(7)检索学习全部课程的学生姓名;在表S 中找学生,要求这个学生学了全部课程。
单表查询例题1.查询全体学生的学号与姓名。
2.查询全体学生的姓名、学号、所在系。
3.查询全体学生的详细记录。
4.查全体学生的姓名及其出生年份。
5.查询全体学生的姓名、出生年份和所有系6.查询选修了课程的学生学号。
7.查询所有年龄在20岁以下的学生姓名及其年龄。
8.查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。
9.查询年龄不在20~23岁之间的学生姓名、系别和年龄。
10.查询信息系、数学系和计算机系学生的姓名和性别。
11.查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
12.查询学号为200518的学生的详细情况。
13.查询所有姓刘学生的姓名、学号和性别。
14.查询姓“李”且全名为两个汉字的学生的姓名。
15.查询名字中第2个字为“立"字的学生的姓名和学号。
16.查询所有不姓刘的学生姓名。
17.查询学号在200511~200515之间的学生姓名。
18.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
19.查所有有成绩的学生学号和课程号。
20.查询计算机系年龄在20岁以下的学生姓名。
21.查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
22.查询全体学生情况,查询结果按所在系的系名升序排列,同一系中的学生按年龄降序排列。
23.查询学生表中的前2位同学信息。
24.查询成绩最差的4条选课记录。
25.查询学生总人数。
26.查询选修了课程的学生人数。
27.计算1号课程的学生平均成绩。
28.查询选修1号课程的学生最高分数。
29.求各个课程号及相应的选课人数。
30.查询选修了3门以上课程的学生学号。
31.查询有3门以上课程是70分以上的学生的学号及课程数。
简单查询例题【例1】在zgda表中,检索所有字段。
SELECT * FROM zgda【例2】在zggz表中,检索实发工资大于2000元的记录。
SELECT 编号,姓名,实发工资 FROM zggz WHERE 实发工资>2000【例3】在zgda表中,检索所有职称名称。
SELECT DISTINCT 职称 FROM zgda【例4】在zgda表中,检索职称是助教的记录。
SELECT 编号,姓名,职称 FROM zgda WHERE 职称='助教'【例5】在zggz表中,检索实发工资大于1000小于1800元的记录。
SELECT 编号,姓名,实发工资 FROM zggz WHERE 实发工资>1000 AND 实发工资<1800【例6】检索出工资在1220元到1240元范围内的职工信息。
这个查询的条件值是在什么范围之内,显然可以用BETWEEN…AND…,为此有如下查询语句:SELECT * FROM 职工 WHERE 工资 BETWEEN 1220 AND 1240这里BETWEEN…AND…意思是在“…和…之间”,这个查询的条件等价于: (工资>=1220) AND (工资<=1240)显然使用BETWEEN…AND…表达条件更清晰、更简洁。
假如找出工资不在1220元和1240元之间的全部职工信息,可以用命令:SELECT * FROM 职工 WHERE 工资 NOT BETWEEN 1220 AND 1240【例7】在zgda表中,检索所有姓陈和姜的记录。
SELECT 编号,姓名 FROM zgda WHERE 姓名 IN("陈","姜")【例8】在供应商表中,检索出全部公司的信息,不要工厂或其他供应商的信息。
这是一个字符串匹配的查询,显然应该使用LIKE运算符:SELECT * FROM 供应商 WHERE 供应商名 LIKE "%公司"这里的LIKE是字符串匹配运算符,通配符“%”表示0个或多个字符,另外还有一个通配符“_”表示一个字符。
查询命令格式:
SELECT 列名表或表达式 FROM 数据源[WHERE 条件]
[GROUP BY 分组表达式]
[HAVING 分组条件]
[ODERD BY 排序表达式 ASC/DESC]
在查询分析器中使用SQL语言对下列各题进行操作:已知数据库S中含有3张表:
STUDENT(SNO,SNAME,SSEX,SAGE, SDEPT)
COURSE(CNO,CNAME,HOURS)
SC(SNO,CNO,GRADE)
1.分别查询学生表和学生修课表中的全部数据。
select * from student;
select * from sc
2.查询成绩在70到80分之间的学生的学号、课程号和成绩。
select * from sc
where grade between 70and 80 ;
3.查询C01号课程成绩最高的分数
select max(grade)from sc where cno='c01'
4.查询学生都选修了哪些课程,要求列出课程号。
select distinct cno from sc 5.查询Northwind数据库中orders表的OrderID、CustomerID和OrderDate,并将最
新的定购日期(OrderDate)列在前边。
select OrderID,CustomerID ,orderdate from orders 6.查询Northwind数据库中orders表的ShipCountry列以B,C,D,F开始且第三个字符为"a"的OrderID、CustomerID和ShipCountry的信息。
select OrderID,CustomerID ,ShipCountry from orders where ShipCountry like '[BCDF]_a%'
7.查询Northwind数据库中orders表的ShipCountry列不以A,B,C,D,E,F开始且最后一个字母是"a"的OrderID、CustomerID和ShipCountry的信息。
select OrderID,CustomerID ,ShipCountry from orders where ShipCountry like '[^ABCDF]%a'
8.查询修了c02号课程的所有学生的平均成绩、最高成绩和最低成绩。
select 最高分数= max(grade),最低分数=min(grade),平均分数=avg(grade) from sc where cno='c02'
9.统计每个系的学生人数。
select sdept, count(sdept) as '人数' from student group by sdept
10.统计每门课程的修课人数和考试最高分。
select sdept, count(sdept) as '人数' from student group by sdept
11.统计每个学生的选课门数,并按选课门数的递增顺序显
示结果。
12.统计修课的学生总数和考试的平均成绩。
select count(o) as '修课总人数',平均分数
=avg(grade) from sc,course where o=o and o is not null
13.查询选课门数超过2门的学生的平均成绩和选课门数。
select o,count(o)'修课人数',平均分
数=avg(grade) from sc,course where o=o and o>='2' group by o
14.列出总成绩超过200分的学生,要求列出学号、总成绩。
select sno,sum(grade) as '总成绩' from sc where s group by sno having sum(grade)>='200'
15.查询pubs数据库的titles表中每类图书的平均价格超
过12.0元的书的类型(Type)、平均价格和最高价格。
select type,avg(price),max(price) from titles group by type having avg(price)>12.0
16.查询pubs数据库的titles表中每类图书中图书的数目
超过3本的图书的总价格。
select 读书数目=count(type),总价格=sum(price) from titles group by type having count(type)>3
17.查询选修了c02号课程的学生的姓名和所在系。
select cno,sname,sdept from student,course where cno='c02'
18.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。
select sname,cno,grade from student,sc where grade>80 19.查询计算机系男生修了"数据库基础"的学生的姓名、性别、成绩。
select sname,ssex,grade from student,sc ,course where sdept='计算机系'and ssex='男'and cname='数据库基础' and
student.sno=sc.sno and o=o
20.查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年龄。
21.查询哪些课程没有人选,要求列出课程号和课程名。
22.查询有考试成绩的所有学生的姓名、修课名称及考试成绩,要求将查询结果放在一张新的永久表(假设新表名为new-sc)中。
23.分别查询信息系和计算机系的学生的姓名、性别、修课名称、修课成绩,并要求将这两个查询结果合并成一个结果集,并以系名、姓名、性别、修课名称、修课成绩的顺序显示各列。
24.用子查询实现如下查询:
(1)查询选修了c01号课程的学生的姓名和所在系。
(2)查询数学系成绩80分以上的学生的学号、姓名。
(3)查询计算机系学生所选的课程名.
25.将计算机系成绩高于80分的学生的修课情况插入到另一张表中,分两种情况实现:
(1)在插入数据过程中建表。
(2)先建一个新表,然后再插入数据。
26.删除修课成绩小于50分的学生的修课记录
27.将所有选修了"c01"课程的学生的成绩加10分。