内容正文:
编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。
本试卷是第19卷,为知识训练卷,按《Access数据库应用操作》中“索引与表间关系”范围和要求编写。具体内容为:(7)掌握记录的索引。(8)掌握表间关系的建立与维护。
山东省春季高考统一考试
软件与应用技术类《考纲百套卷》
第19卷 Access数据库应用操作——索引与表间关系
(考试时间:45分钟 满分:100分)
一、选择题(共25题,每题2分,共50分)
1.在Access数据库中,为数据表建立索引的主要作用是( )
A.改变字段的数据类型
B.提高按索引字段查找和排序的效率
C.自动删除重复记录
D.替代表间关系
2.Enrollment表中经常按照StudentID查找学生的选课记录,较适合建立索引的字段是( )
A.ScoreText
B.CourseName
C.StudentID
D.Remark
3.在Access中,表的主键通常具有的索引属性是( )
A.有索引且不允许重复
B.有索引但允许重复
C.无索引且允许重复
D.只允许空值
4.如果一个普通索引允许同一索引字段出现相同值,则该索引属于( )
A.主键索引
B.唯一索引
C.外键索引
D.非唯一索引
5.复合索引Index_ClassScore包含ClassID和Score两个字段时,数据库通常首先按照( )字段组织索引顺序
A.主键之外的任意字段
B.记录创建时间
C.ClassID
D.Score
6.下面建立Employees表DeptID字段索引的语句正确的是( )
A.INDEX Employees BY DeptID CREATE;
B.ADD INDEX IX_DeptID TO Employees (DeptID);
C.CREATE Employees INDEX DeptID;
D.CREATE INDEX IX_DeptID ON Employees (DeptID);
7.下面语句建立不允许Email重复的索引,正确的是( )
A.CREATE UNIQUE TABLE UX_Email ON Users (Email);
B.CREATE UNIQUE INDEX UX_Email ON Users (Email);
C.ALTER UNIQUE Users BY Email;
D.CREATE INDEX UX_Email ON Users (Email);
8.删除Orders表中索引IX_OrderCustomer的正确语句是( )
A.DROP INDEX IX_OrderCustomer ON Orders;
B.REMOVE INDEX Orders.IX_OrderCustomer;
C.DROP Orders INDEX IX_OrderCustomer;
D.DELETE INDEX IX_OrderCustomer FROM Orders;
9.在已经建立索引的表中新增、修改或删除记录后,索引通常会( )
A.自动转换为主键
B.由数据库自动维护
C.必须手工逐条重建
D.使原记录全部消失
10.关于索引和表间关系的说法,正确的是( )
A.建立索引后不需要主键
B.所有索引都会自动产生新表
C.索引主要改善访问效率,关系用于表达表间联系
D.索引可以代替外键约束
11.在Students表和Enrollment表之间建立学生选课关系时,通常作为父表主键的是( )
A.Students.StudentID
B.Enrollment.Score
C.Enrollment.CourseID
D.Students.StudentName
12.一个Department可以对应多个Employee,而一个Employee只属于一个Department,这种关系通常是( )
A.无关系
B.一对一
C.多对多
D.一对多
13.外键DeptID引用Departments表的主键DeptID时,外键值通常必须( )
A.能够在父表主键中找到对应值或按规则为空
B.只能由系统随机产生
C.大于主键数值
D.全部与父表表名相同
14.启用表间关系的参照完整性后,主要可以防止( )
A.查询结果排序
B.子表出现找不到父记录的外键值
C.索引名称过长
D.字段大小设置
15.如果Enrollment表中存在StudentID='S09',但Students表没有S09记录,这种情况称为( )
A.复合索引
B.唯一索引
C.孤立子记录
D.主键冲突
16.在建立关系时设置“级联更新相关字段”,当父表主键值发生变化时,通常会( )
A.禁止所有查询
B.同步更新子表中对应的外键值
C.取消外键字段
D.删除所有子表记录
17.在建立关系时设置“级联删除相关记录”可能产生的结果是( )
A.所有索引变为唯一索引
B.只改变查询排序
C.子表自动变成父表
D.删除父表记录时,相关子表记录也被删除
18.下面哪条查询语句只返回Students表和Enrollment表中StudentID能够匹配的记录( )
A.SELECT *FROM StudentsORDER BY StudentID;
B.SELECT *FROM Students, Enrollment;
C.SELECT *FROM Students AS sINNER JOIN Enrollment AS eON s.StudentID=e.StudentID;
D.SELECT *FROM Students AS sLEFT JOIN Enrollment AS eON s.StudentID=
e.StudentID;
19.若要求显示所有Department,即使某部门目前没有Employee,也应使用( )连接
A.CROSS JOIN
B.自连接
C.INNER JOIN
D.LEFT JOIN
20.建立Students与Enrollment表间关系时,最合适的连接字段是( )
A.Students.StudentID与Enrollment.StudentID
B.StudentName与StudentID
C.StudentName与CourseID
D.Score与Credit
21.Enrollment表中的StudentID作为Students表StudentID的外键,主要表示( )
A.学生姓名不能重复
B.每条选课记录属于某个已登记的学生
C.课程成绩必须唯一
D.每个学生只能选择一门课程
22.在Access的“关系”窗口中建立表间关系时,通常应将父表的主键字段拖到子表的( )字段上
A.查询结果字段
B.备注字段
C.对应外键字段
D.自动编号显示值
23.启用参照完整性后,若某部门仍有员工记录,直接删除该部门记录通常会( )
A.被系统拒绝或需使用级联删除规则
B.自动取消主键
C.只删除部门名称
D.自动删除所有数据库
24.在Employee表的DeptID字段上建立索引,除了加快按部门筛选外,还常有助于提高( )
A.删除数据库文件的速度
B.修改字段名称的速度
C.改变表名的速度
D.按DeptID进行表连接的效率
25.下面定义Employees表外键关系的语句中,正确的是( )
A.CONSTRAINT FK_Emp_Dept FOREIGN KEY (DeptID) REFERENCES Departments (DeptID)
B.CONSTRAINT DeptID PRIMARY KEY REFERENCES Employees
C.FOREIGN Employees DeptID REFERENCES Departments
D.CREATE RELATION Employees TO Departments BY DeptID
二、简答题(共5题,每题6分,共30分)
1.阅读SQL语句,写出查询结果。
CREATE TABLE Classes (ClassID TEXT(5) PRIMARY KEY, ClassName TEXT(20));
CREATE TABLE Students (StudentID TEXT(10) PRIMARY KEY, StudentName TEXT(20), ClassID TEXT(5));
CREATE INDEX IX_Students_ClassID
ON Students (ClassID);
INSERT INTO Classes
VALUES ('C01', '一班');
INSERT INTO Classes
VALUES ('C02', '二班');
INSERT INTO Students
VALUES ('S01', '张晨', 'C01');
INSERT INTO Students
VALUES ('S02', '李雪', 'C02');
INSERT INTO Students
VALUES ('S03', '王浩', 'C01');
SELECT c.ClassName, s.StudentName
FROM Classes AS c
INNER JOIN Students AS s
ON c.ClassID = s.ClassID
WHERE c.ClassID = 'C01'
ORDER BY s.StudentID ASC;
2.阅读SQL语句,写出查询结果。
CREATE TABLE Books (BookID TEXT(10) PRIMARY KEY, BookName TEXT(30), ISBN TEXT(20));
CREATE UNIQUE INDEX UX_Books_ISBN
ON Books (ISBN);
INSERT INTO Books
VALUES ('B01', '数据库基础', '9787001');
INSERT INTO Books
VALUES ('B02', '程序设计', '9787002');
INSERT INTO Books
VALUES ('B03', '网页制作', '9787003');
SELECT BookID, BookName
FROM Books
WHERE ISBN >= '9787002'
ORDER BY ISBN ASC;
3.阅读SQL语句,写出查询结果。
CREATE TABLE Students (StudentID TEXT(10) PRIMARY KEY, StudentName TEXT(20));
CREATE TABLE Courses (CourseID TEXT(10) PRIMARY KEY, CourseName TEXT(30));
CREATE TABLE Enrollment (StudentID TEXT(10), CourseID TEXT(10));
CREATE INDEX IX_Enrollment_StudentID
ON Enrollment (StudentID);
INSERT INTO Students
VALUES ('S01', '张三');
INSERT INTO Students
VALUES ('S02', '李四');
INSERT INTO Courses
VALUES ('C01', '数据库');
INSERT INTO Courses
VALUES ('C02', 'C语言');
INSERT INTO Enrollment
VALUES ('S01', 'C01');
INSERT INTO Enrollment
VALUES ('S02', 'C02');
SELECT s.StudentName, c.CourseName
FROM (Students AS s
INNER JOIN Enrollment AS e
ON s.StudentID = e.StudentID)
INNER JOIN Courses AS c
ON e.CourseID = c.CourseID
ORDER BY s.StudentID ASC;
4.阅读SQL语句,写出查询结果。
CREATE TABLE Customers (CustomerID TEXT(10) PRIMARY KEY, CustomerName TEXT(20));
CREATE TABLE Orders (OrderID TEXT(10) PRIMARY KEY, CustomerID TEXT(10), Amount INTEGER);
CREATE INDEX IX_Orders_CustomerID
ON Orders (CustomerID);
INSERT INTO Customers
VALUES ('U01', '远航公司');
INSERT INTO Customers
VALUES ('U02', '星河公司');
INSERT INTO Orders
VALUES ('O101', 'U01', 680);
INSERT INTO Orders
VALUES ('O102', 'U01', 420);
INSERT INTO Orders
VALUES ('O103', 'U02', 760);
SELECT c.CustomerName, o.OrderID
FROM Customers AS c
INNER JOIN Orders AS o
ON c.CustomerID = o.CustomerID
WHERE o.Amount >= 500
ORDER BY o.OrderID ASC;
5.阅读SQL语句,写出查询结果。
CREATE TABLE Departments (DeptID TEXT(5) PRIMARY KEY, DeptName TEXT(20));
CREATE TABLE Employees (EmployeeID TEXT(10) PRIMARY KEY, EmployeeName TEXT(20), DeptID TEXT(5));
CREATE INDEX IX_Employees_DeptID
ON Employees (DeptID);
INSERT INTO Departments
VALUES ('D01', '教务处');
INSERT INTO Departments
VALUES ('D02', '实训中心');
INSERT INTO Departments
VALUES ('D03', '招生办');
INSERT INTO Employees
VALUES ('E01', '李晨', 'D01');
INSERT INTO Employees
VALUES ('E02', '周杰', 'D02');
INSERT INTO Employees
VALUES ('E03', '王敏', 'D02');
SELECT d.DeptName, e.EmployeeName
FROM Departments AS d
LEFT JOIN Employees AS e
ON d.DeptID = e.DeptID
ORDER BY d.DeptID ASC, e.EmployeeID ASC;
三、案例分析题(共1题,共10分)
1.下面Access SQL用于建立班级表和学生表、创建班级索引并查询学生信息,但表间关系定义中有一处错误,请指出并改正。
CREATE TABLE Classes (ClassID TEXT(5) PRIMARY KEY, ClassName TEXT(20) NOT NULL);
CREATE TABLE Students (StudentID TEXT(10) PRIMARY KEY, StudentName TEXT(20) NOT NULL, ClassID TEXT(5) NOT NULL, CONSTRAINT FK_Students_Classes FOREIGN KEY (ClassID) REFERENCES Classes (ClassName));
CREATE INDEX IX_Students_ClassID
ON Students (ClassID);
INSERT INTO Classes
VALUES ('C01', '一班');
INSERT INTO Classes
VALUES ('C02', '二班');
INSERT INTO Students
VALUES ('S01', '张晨', 'C01');
INSERT INTO Students
VALUES ('S02', '李雪', 'C02');
SELECT c.ClassName, s.StudentName
FROM Classes AS c
INNER JOIN Students AS s
ON c.ClassID = s.ClassID
ORDER BY c.ClassID ASC, s.StudentID ASC;
四、综合应用题(共1题,共10分)
1.编写Access SQL任务:建立Classes和Students两张表,设置主键,建立Students表ClassID字段的索引;添加两个班级和三名学生;将S03转到C02班;最后查询班级名称、学生姓名和学号,按班级编号、学生学号升序排列。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。
本试卷是第19卷,为知识训练卷,按《Access数据库应用操作》中“索引与表间关系”范围和要求编写。具体内容为:(7)掌握记录的索引。(8)掌握表间关系的建立与维护。
山东省春季高考统一考试
软件与应用技术类《考纲百套卷》
第19卷 Access数据库应用操作——索引与表间关系
(考试时间:45分钟 满分:100分)
一、选择题(共25题,每题2分,共50分)
1.在Access数据库中,为数据表建立索引的主要作用是( )
A.改变字段的数据类型
B.提高按索引字段查找和排序的效率
C.自动删除重复记录
D.替代表间关系
【答案】B
【解析】索引可以帮助数据库更快定位和排序记录,但不会改变字段类型、自动删除记录或替代表间关系。
2.Enrollment表中经常按照StudentID查找学生的选课记录,较适合建立索引的字段是( )
A.ScoreText
B.CourseName
C.StudentID
D.Remark
【答案】C
【解析】经常作为查询条件或连接条件的StudentID适合建立索引,可以提高查找效率。
3.在Access中,表的主键通常具有的索引属性是( )
A.有索引且不允许重复
B.有索引但允许重复
C.无索引且允许重复
D.只允许空值
【答案】A
【解析】主键需要唯一标识记录,因此通常建立不允许重复的索引。
4.如果一个普通索引允许同一索引字段出现相同值,则该索引属于( )
A.主键索引
B.唯一索引
C.外键索引
D.非唯一索引
【答案】D
【解析】允许索引字段出现重复值的索引称为非唯一索引,适合班级编号等可能重复的字段。
5.复合索引Index_ClassScore包含ClassID和Score两个字段时,数据库通常首先按照( )字段组织索引顺序
A.主键之外的任意字段
B.记录创建时间
C.ClassID
D.Score
【答案】C
【解析】复合索引中的字段顺序由定义顺序决定,Index_ClassScore首先使用ClassID。
6.下面建立Employees表DeptID字段索引的语句正确的是( )
A.INDEX Employees BY DeptID CREATE;
B.ADD INDEX IX_DeptID TO Employees (DeptID);
C.CREATE Employees INDEX DeptID;
D.CREATE INDEX IX_DeptID ON Employees (DeptID);
【答案】D
【解析】CREATE INDEX索引名 ON表名(字段名)用于建立普通索引。
7.下面语句建立不允许Email重复的索引,正确的是( )
A.CREATE UNIQUE TABLE UX_Email ON Users (Email);
B.CREATE UNIQUE INDEX UX_Email ON Users (Email);
C.ALTER UNIQUE Users BY Email;
D.CREATE INDEX UX_Email ON Users (Email);
【答案】B
【解析】CREATE UNIQUE INDEX建立唯一索引,可以防止Email字段出现重复值。
8.删除Orders表中索引IX_OrderCustomer的正确语句是( )
A.DROP INDEX IX_OrderCustomer ON Orders;
B.REMOVE INDEX Orders.IX_OrderCustomer;
C.DROP Orders INDEX IX_OrderCustomer;
D.DELETE INDEX IX_OrderCustomer FROM Orders;
【答案】A
【解析】DROP INDEX索引名 ON表名用于删除指定索引。
9.在已经建立索引的表中新增、修改或删除记录后,索引通常会( )
A.自动转换为主键
B.由数据库自动维护
C.必须手工逐条重建
D.使原记录全部消失
【答案】B
【解析】数据库会随着记录操作维护索引内容,使用者通常不需要逐条手工重建。
10.关于索引和表间关系的说法,正确的是( )
A.建立索引后不需要主键
B.所有索引都会自动产生新表
C.索引主要改善访问效率,关系用于表达表间联系
D.索引可以代替外键约束
【答案】C
【解析】索引解决访问效率问题,主键、外键和关系定义用于表达表之间的联系及约束。
11.在Students表和Enrollment表之间建立学生选课关系时,通常作为父表主键的是( )
A.Students.StudentID
B.Enrollment.Score
C.Enrollment.CourseID
D.Students.StudentName
【答案】A
【解析】Students.StudentID能够唯一标识学生,通常作为父表主键并被Enrollment.StudentID引用。
12.一个Department可以对应多个Employee,而一个Employee只属于一个Department,这种关系通常是( )
A.无关系
B.一对一
C.多对多
D.一对多
【答案】D
【解析】一个部门对应多个员工、每个员工对应一个部门,属于一对多关系。
13.外键DeptID引用Departments表的主键DeptID时,外键值通常必须( )
A.能够在父表主键中找到对应值或按规则为空
B.只能由系统随机产生
C.大于主键数值
D.全部与父表表名相同
【答案】A
【解析】外键用于引用父表主键,启用参照完整性时不能随意填写父表不存在的值。
14.启用表间关系的参照完整性后,主要可以防止( )
A.查询结果排序
B.子表出现找不到父记录的外键值
C.索引名称过长
D.字段大小设置
【答案】B
【解析】参照完整性保证外键与父表主键的对应关系,防止产生孤立的子表记录。
15.如果Enrollment表中存在StudentID='S09',但Students表没有S09记录,这种情况称为( )
A.复合索引
B.唯一索引
C.孤立子记录
D.主键冲突
【答案】C
【解析】子表外键找不到父表对应记录时,形成孤立子记录,也称参照完整性问题。
16.在建立关系时设置“级联更新相关字段”,当父表主键值发生变化时,通常会( )
A.禁止所有查询
B.同步更新子表中对应的外键值
C.取消外键字段
D.删除所有子表记录
【答案】B
【解析】级联更新可以使父表主键变化时,相关子表外键同步变化,维持关系有效。
17.在建立关系时设置“级联删除相关记录”可能产生的结果是( )
A.所有索引变为唯一索引
B.只改变查询排序
C.子表自动变成父表
D.删除父表记录时,相关子表记录也被删除
【答案】D
【解析】级联删除会把父表删除操作传递给相关子表,使用时要注意数据安全。
18.下面哪条查询语句只返回Students表和Enrollment表中StudentID能够匹配的记录( )
A.SELECT *FROM StudentsORDER BY StudentID;
B.SELECT *FROM Students, Enrollment;
C.SELECT *FROM Students AS sINNER JOIN Enrollment AS eON s.StudentID=e.StudentID;
D.SELECT *FROM Students AS sLEFT JOIN Enrollment AS eON s.StudentID=
e.StudentID;
【答案】C
【解析】INNER JOIN只返回连接条件匹配成功的记录,适合查询有选课记录的学生。
19.若要求显示所有Department,即使某部门目前没有Employee,也应使用( )连接
A.CROSS JOIN
B.自连接
C.INNER JOIN
D.LEFT JOIN
【答案】D
【解析】以Department为左表使用LEFT JOIN可以保留全部部门,并显示匹配到的员工信息。
20.建立Students与Enrollment表间关系时,最合适的连接字段是( )
A.Students.StudentID与Enrollment.StudentID
B.StudentName与StudentID
C.StudentName与CourseID
D.Score与Credit
【答案】A
【解析】表间关系应使用含义一致且能够唯一标识或引用记录的键字段连接。
21.Enrollment表中的StudentID作为Students表StudentID的外键,主要表示( )
A.学生姓名不能重复
B.每条选课记录属于某个已登记的学生
C.课程成绩必须唯一
D.每个学生只能选择一门课程
【答案】B
【解析】外键表达子表记录与父表记录的归属关系,但不单独限制学生只能选一门课。
22.在Access的“关系”窗口中建立表间关系时,通常应将父表的主键字段拖到子表的( )字段上
A.查询结果字段
B.备注字段
C.对应外键字段
D.自动编号显示值
【答案】C
【解析】建立关系时用父表主键连接子表中含义相同的外键字段。
23.启用参照完整性后,若某部门仍有员工记录,直接删除该部门记录通常会( )
A.被系统拒绝或需使用级联删除规则
B.自动取消主键
C.只删除部门名称
D.自动删除所有数据库
【答案】A
【解析】为避免产生孤立员工记录,系统通常阻止删除仍被子表引用的父记录,除非设置级联删除。
24.在Employee表的DeptID字段上建立索引,除了加快按部门筛选外,还常有助于提高( )
A.删除数据库文件的速度
B.修改字段名称的速度
C.改变表名的速度
D.按DeptID进行表连接的效率
【答案】D
【解析】外键或连接字段上的索引能够提高按该字段匹配、筛选和连接记录的效率。
25.下面定义Employees表外键关系的语句中,正确的是( )
A.CONSTRAINT FK_Emp_Dept FOREIGN KEY (DeptID) REFERENCES Departments (DeptID)
B.CONSTRAINT DeptID PRIMARY KEY REFERENCES Employees
C.FOREIGN Employees DeptID REFERENCES Departments
D.CREATE RELATION Employees TO Departments BY DeptID
【答案】A
【解析】CONSTRAINT配合FOREIGN KEY和REFERENCES可以定义子表外键及其引用的父表字段。
二、简答题(共5题,每题6分,共30分)
1.阅读SQL语句,写出查询结果。
CREATE TABLE Classes (ClassID TEXT(5) PRIMARY KEY, ClassName TEXT(20));
CREATE TABLE Students (StudentID TEXT(10) PRIMARY KEY, StudentName TEXT(20), ClassID TEXT(5));
CREATE INDEX IX_Students_ClassID
ON Students (ClassID);
INSERT INTO Classes
VALUES ('C01', '一班');
INSERT INTO Classes
VALUES ('C02', '二班');
INSERT INTO Students
VALUES ('S01', '张晨', 'C01');
INSERT INTO Students
VALUES ('S02', '李雪', 'C02');
INSERT INTO Students
VALUES ('S03', '王浩', 'C01');
SELECT c.ClassName, s.StudentName
FROM Classes AS c
INNER JOIN Students AS s
ON c.ClassID = s.ClassID
WHERE c.ClassID = 'C01'
ORDER BY s.StudentID ASC;
【答案】查询结果为:一班 张晨;一班 王浩。
【解析】IX_Students_ClassID用于加快按班级编号查找;INNER JOIN连接班级表和学生表,WHERE筛选C01班,ORDER BY按学号升序排列。
2.阅读SQL语句,写出查询结果。
CREATE TABLE Books (BookID TEXT(10) PRIMARY KEY, BookName TEXT(30), ISBN TEXT(20));
CREATE UNIQUE INDEX UX_Books_ISBN
ON Books (ISBN);
INSERT INTO Books
VALUES ('B01', '数据库基础', '9787001');
INSERT INTO Books
VALUES ('B02', '程序设计', '9787002');
INSERT INTO Books
VALUES ('B03', '网页制作', '9787003');
SELECT BookID, BookName
FROM Books
WHERE ISBN >= '9787002'
ORDER BY ISBN ASC;
【答案】查询结果为:B02 程序设计;B03 网页制作。
【解析】UX_Books_ISBN保证ISBN不重复;WHERE筛选ISBN不小于9787002的图书,ORDER BY ISBN ASC按ISBN升序排列。
3.阅读SQL语句,写出查询结果。
CREATE TABLE Students (StudentID TEXT(10) PRIMARY KEY, StudentName TEXT(20));
CREATE TABLE Courses (CourseID TEXT(10) PRIMARY KEY, CourseName TEXT(30));
CREATE TABLE Enrollment (StudentID TEXT(10), CourseID TEXT(10));
CREATE INDEX IX_Enrollment_StudentID
ON Enrollment (StudentID);
INSERT INTO Students
VALUES ('S01', '张三');
INSERT INTO Students
VALUES ('S02', '李四');
INSERT INTO Courses
VALUES ('C01', '数据库');
INSERT INTO Courses
VALUES ('C02', 'C语言');
INSERT INTO Enrollment
VALUES ('S01', 'C01');
INSERT INTO Enrollment
VALUES ('S02', 'C02');
SELECT s.StudentName, c.CourseName
FROM (Students AS s
INNER JOIN Enrollment AS e
ON s.StudentID = e.StudentID)
INNER JOIN Courses AS c
ON e.CourseID = c.CourseID
ORDER BY s.StudentID ASC;
【答案】查询结果为:张三 数据库;李四 C语言。
【解析】索引建立在Enrollment.StudentID上,便于按学生编号查找选课记录;两次INNER JOIN分别连接学生与选课、课程与选课。
4.阅读SQL语句,写出查询结果。
CREATE TABLE Customers (CustomerID TEXT(10) PRIMARY KEY, CustomerName TEXT(20));
CREATE TABLE Orders (OrderID TEXT(10) PRIMARY KEY, CustomerID TEXT(10), Amount INTEGER);
CREATE INDEX IX_Orders_CustomerID
ON Orders (CustomerID);
INSERT INTO Customers
VALUES ('U01', '远航公司');
INSERT INTO Customers
VALUES ('U02', '星河公司');
INSERT INTO Orders
VALUES ('O101', 'U01', 680);
INSERT INTO Orders
VALUES ('O102', 'U01', 420);
INSERT INTO Orders
VALUES ('O103', 'U02', 760);
SELECT c.CustomerName, o.OrderID
FROM Customers AS c
INNER JOIN Orders AS o
ON c.CustomerID = o.CustomerID
WHERE o.Amount >= 500
ORDER BY o.OrderID ASC;
【答案】查询结果为:远航公司 O101;星河公司 O103。
【解析】IX_Orders_CustomerID用于按客户编号连接订单;WHERE筛选金额不低于500,ORDER BY按订单编号升序排列。
5.阅读SQL语句,写出查询结果。
CREATE TABLE Departments (DeptID TEXT(5) PRIMARY KEY, DeptName TEXT(20));
CREATE TABLE Employees (EmployeeID TEXT(10) PRIMARY KEY, EmployeeName TEXT(20), DeptID TEXT(5));
CREATE INDEX IX_Employees_DeptID
ON Employees (DeptID);
INSERT INTO Departments
VALUES ('D01', '教务处');
INSERT INTO Departments
VALUES ('D02', '实训中心');
INSERT INTO Departments
VALUES ('D03', '招生办');
INSERT INTO Employees
VALUES ('E01', '李晨', 'D01');
INSERT INTO Employees
VALUES ('E02', '周杰', 'D02');
INSERT INTO Employees
VALUES ('E03', '王敏', 'D02');
SELECT d.DeptName, e.EmployeeName
FROM Departments AS d
LEFT JOIN Employees AS e
ON d.DeptID = e.DeptID
ORDER BY d.DeptID ASC, e.EmployeeID ASC;
【答案】查询结果为:教务处 李晨;实训中心 周杰;实训中心 王敏;招生办 空。
【解析】LEFT JOIN保留Departments表中的全部部门,招生办没有员工时EmployeeName为空;ORDER BY先按部门编号、再按员工编号升序排列。
三、案例分析题(共1题,共10分)
1.下面Access SQL用于建立班级表和学生表、创建班级索引并查询学生信息,但表间关系定义中有一处错误,请指出并改正。
CREATE TABLE Classes (ClassID TEXT(5) PRIMARY KEY, ClassName TEXT(20) NOT NULL);
CREATE TABLE Students (StudentID TEXT(10) PRIMARY KEY, StudentName TEXT(20) NOT NULL, ClassID TEXT(5) NOT NULL, CONSTRAINT FK_Students_Classes FOREIGN KEY (ClassID) REFERENCES Classes (ClassName));
CREATE INDEX IX_Students_ClassID
ON Students (ClassID);
INSERT INTO Classes
VALUES ('C01', '一班');
INSERT INTO Classes
VALUES ('C02', '二班');
INSERT INTO Students
VALUES ('S01', '张晨', 'C01');
INSERT INTO Students
VALUES ('S02', '李雪', 'C02');
SELECT c.ClassName, s.StudentName
FROM Classes AS c
INNER JOIN Students AS s
ON c.ClassID = s.ClassID
ORDER BY c.ClassID ASC, s.StudentID ASC;
【答案】将REFERENCES Classes (ClassName)改为REFERENCES Classes (ClassID),其余语句保持不变。
【解析】Students.ClassID是引用Classes主键的外键,应引用能够唯一标识班级的Classes.ClassID,不能引用班级名称字段;IX_Students_ClassID用于加快按班级连接和筛选。
四、综合应用题(共1题,共10分)
1.编写Access SQL任务:建立Classes和Students两张表,设置主键,建立Students表ClassID字段的索引;添加两个班级和三名学生;将S03转到C02班;最后查询班级名称、学生姓名和学号,按班级编号、学生学号升序排列。
【答案】
CREATE TABLE Classes (ClassID TEXT(5) PRIMARY KEY, ClassName TEXT(20) NOT NULL);
CREATE TABLE Students (StudentID TEXT(10) PRIMARY KEY, StudentName TEXT(20) NOT NULL, ClassID TEXT(5) NOT NULL);
CREATE INDEX IX_Students_ClassID
ON Students (ClassID);
INSERT INTO Classes
VALUES ('C01', '一班');
INSERT INTO Classes
VALUES ('C02', '二班');
INSERT INTO Students
VALUES ('S01', '张晨', 'C01');
INSERT INTO Students
VALUES ('S02', '李雪', 'C02');
INSERT INTO Students
VALUES ('S03', '王浩', 'C01');
UPDATE Students
SET ClassID = 'C02'
WHERE StudentID = 'S03';
SELECT c.ClassName, s.StudentName, s.StudentID
FROM Classes AS c
INNER JOIN Students AS s
ON c.ClassID = s.ClassID
ORDER BY c.ClassID ASC, s.StudentID ASC;
【解析】先建立Classes和Students表并设置主键;在Students.ClassID字段上建立索引,便于按班级查找学生;INSERT语句添加班级和学生记录,UPDATE维护S03的班级关系;最后用INNER JOIN连接两表,并按班级编号和学生学号升序查询。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$