数据库原理与应用(14)PTA填空题汇编
【01 数据库概述】
1. 数据管理技术的发展经历了人工管理阶段、文件系统阶段和数据库系统阶段。
2. 数据库是长期存储在计算机内有组织、可共享的大量数据的集合。
3. 数据库管理系统的简称是DBMS。
4. 数据库系统由数据库、数据库管理系统、应用系统和数据库管理员组成。

【02 信息与数据模型】
1. 某超市要设计一个管理系统,其中部分应用为:
部门管理,包括部门编号,部门名称;
员工信息管理,包括员工编号,员工姓名,性别,职务,所在部门;
商品信息包括:商品编号,商品名称,类别,数量,单价;
供应商信息包括:供应商编号,供应商名称,地址,电话,联系人。
其中,员工的工作是将商品入库,并登记入库信息;这些商品要销售给各供应商,需要提供每个商品的商品编号,单价 ,数量,供应商编号和业务员编号等。
请根据需求分析情况回答下面的问题。
(1) 对该数据库进行概念结构设计(ER图)时应该有4个实体。
(2) 实体商品对应的属性个数是5。
(3) 部门和员工之间的管理联系是1:n(一对多);员工和商品之间的入库联系是m:n(多对多);商品和供应商之间的销售联系是m:n(多对多)。
*编者注:括号内表示可替换答案,并非说1:n和一对多可以一起写在横线上面,而是指既可以写数字也可以写文字。*
2. 某企业集团有若干工厂,每个工厂生产多种产品,且每一种产品可以在多个工厂生产,每个工厂按照固定的计划数量生产产品;每个工厂聘用多名职工,且每名职工只能在一个工厂工作,工厂聘用职工有聘期和工资。工厂的属性有工厂编号、厂名、地址,产品的属性有产品编号、产品名、规格,职工的属性有职工号、姓名。
请根据需求分析情况回答下面的问题。
(1) 对该数据库进行概念结构设计(ER图)时应该有3个实体,2个联系。
(2) 工厂和职工之间的联系是工作,其联系的2个属性分别是聘期、工资。
3. 分析下面的语义:
有若干班级,每个班级包括: 班级号,班级名,专业,人数 ;
每个班级有若干运动员,运动员只能属于一个班, 运动员属性:运动员编号,姓名,性别,年龄 ;
有若干比赛项目,包括:项目号,名称,比赛地点 ;
每名运动员可参加多项比赛,每个项目可有多名运动员参加 ;
比赛项目有比赛名次和成绩属性。
请根据语义分析情况回答下面的问题。
(1) 对该数据库进行概念结构设计(ER图)时应该有3个实体。
(2) 实体项目对应的属性个数是3个。
(3) 班级和运动员之间的联系是1:n(一对多);运动员和项目之间的参赛联系是 m:n(多对多),该联系属性个数为2个。

【03 关系模型与模型转换】
1. 某医院数据库的部分关系模式为:科室(科室号,科室名,负责人,电话)、病患(病历号、姓名、住址、联系电话)和职工(职工号、职工姓名、科室号、住址,联系电话)。假设每个科室有一名负责人和一部电话,每个科室有若干职工,一名职工只能属于一个科室;一个医生可以为多个病患看病;一个病患可以由多个医生诊治。则科室与职工的所属联系类型是1:n(一对多)。
2. 能唯一标识实体的属性或属性组称为候选码。
3. 使用二维表存储数据的数据库是关系型数据库。
4. 参照完整性维护从表中的外码与主表中的主码的相容关系。
5. 关系完整性包括实体完整性、参照完整性、用户自定义完整性。
6. 实体完整性,它要求表中所有的记录都应该有一个唯一标识,即主键。
7. 1:1关系模式的转换,直接将一个实体的主键插入到另一实体中作为外键产生联系
8. 1:n这种关系模式转换,一般是将1的主键插入到n的表中作为外键,以此产生联系.
9. m:n关系模式转换,一般会因为联系产生新的属性,联系会转化成关系模型,要将两个实体的主键都插入到新的关系模式中。

【04 创建数据库、创建数据表、设置字段】
1. 用户自定义完整性包括非空约束、唯一约束、默认约束、检查约束和自动增长。
2. 主键值不能为空,也不能重复,以此来保证实体的完整性。
3. 创建外键时,设置的字段和关联的字段必须具有相同的数据类型。
4. 外键约束中,主表和从表可以是 1张表,也可以是 2张表。
5. 关系表中不允许存在无主码、主码值相同的记录

【05 简单查询(一)】
1. 在查询操作结果中不出现重复元组,应在SELECT子句中使用distinct保留字。
2. 在字符匹配查询中,通配符“%”代表零个或多个字符;在字符匹配查询中,通配符“ _”代表1个字符。
3. 关系模型的数据操纵即是建立在关系上的数据操纵,一般有删除、添加、查询、修改四种操作。
4. 显示在2000年以后出生的学生基本信息,SQL语句是SELECT * FROM STU WHERE YEAR(BIRTHDAY)>=2000。

【06 简单查询(二)及聚合函数】
1. 如果要计算表中数据的平均值,可以使用的聚集函数是AVG函数。
2. 如果要计算表中数据的总和值,可以使用的聚集函数是SUM函数。
3. 如果要计算表中数据的最大值,可以使用的聚集函数是MAX函数。
4. 如果要计算表中数据的最小值,可以使用的聚集函数是MIN函数。
5. 如果要统计表中元组个数,可以使用COUNT(*)函数。
6. 显示学生信息表中的学生总人数及平均年龄(年龄字段SAGE),在结果集中列标准分别显示为“学生总人数”、“平均年龄”,SQL语句是SELECT COUNT(SNO) AS 学生总人数,AVG(SAGE) AS 平均年龄 from stu。
7. SQL语句可以通过ORDER BY来进行排序,在列名后添加关键字DESC表示降序排序,添加或不添加(默认)关键字ASC表示升序排序。
8. 列出选修了"001"课程的学生,按成绩的降序排列, SQL语句是SELECT SNO,GRADE FROM SC WHERE CNO =’001’ ORDER BY GRADE DESC。

【07 分组查询】
1. HAVING子句可以对分组统计后的结果进行筛选。
2. 表达式year('2021-7-1')+2的结果是2023。
3. 统计每个类型的商品的个数,对应的SQL语句是:SELECT class 种类, COUNT( * ) 个数 FROM goods GROUP BY class。

【08 多表连接查询】
1. 查询每个学生及其选修课程的情况,结果如下:

该查询语句的写法是:
Select * from student,sc where student.sno=sc.sno
或 select * from student join sc on student.sno=sc.sno。
2. 输出结果如下:

该查询语句的写法是:
Select student.Sno,Sname,Ssex,Sbirth,Sclass,Cno,Grade from student,sc where
student.Sno=sc.Sno
或 select student.Sno,sname,Ssex,Sbirth,Sclass,Cno,Grade from student join sc on
student.Sno=sc.Sno。

【09 嵌套子查询】
1. 某公司的员工关系employees(工号,姓名,工资,部门,主管ID,工种ID),现需查询工资比何平高的员工的工号,姓名、工资。那么请完成下面SQL语句:
select 工号,姓名、工资from employeeswhere 工资 >( select 工资 from employees where 姓名='何平')
2. 某公司的员工关系employees(工号,姓名,工资,部门,主管ID,工种ID)。
现需查询工资最低的员工信息,请完成下面SQL语句:
SELECT * FROM employees WHERE 工资= ( SELECT min(工资) FROM employees )
3. 某工程项目的部分关系如下:
职工(职工编号,姓名,性别,居住城市)
项目(项目编号,项目名称,状态,城市,负责人编号)
职工项目(职工编号,项目编号)
其中:职工可以同时参加多个项目,一个项目需要多个职工参加。
那么如何查询职工编号为'000015',参加的项目名称和城市。
select 项目名称,城市 from 项目 where 项目编号 in (select 项目编号 from 职工项目 where 职工编号='000015')

【10 数据操作】
1. students表:

如要向studet表中插入新的学生信息,令 id=5,name='boya',grade=99;
正确的SQL语句是:INSERT INTO student(id ,name,grade ) values (5,'boya',99)
2. 某同学申请转专业,请更新学生信息表(student):把学号(sid)为“20181121”的同学,从班级(sclass)“18物流1”转到班级“18网络1”。
update student set Sclass='18网络1' WHERE sid='20181121';

【11 视图】无