数据库原理题型 - 综合应用题

2024-04-20 00:38

本文主要是介绍数据库原理题型 - 综合应用题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

综合应用题


情报

四 综合应用题(30分,共9)2章关系代数表达式 +3SQL

A组

3.设有一个 SPJ 数据库,包括 S、 P, J、 SPJ 4 个关系模式:

  • S(SNO, SNAME, STATUS, CITY);
  • P(PNO, PNAME, COLOR, WEIGHT);
  • J(JNO, JNAME, CITY);
  • SPJ(SNO, PNO, JNO, QTY);

供应商表 S 由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。

零件表 P 由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。

工程项目表 J 由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。

供应情况表 SPJ 由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为 QTY。

试用关系代数完成下列操作:
(1) 求供应工程 J1 零件的供应商代码 SNO;
在这里插入图片描述


(2) 求供应工程 J1 零件 P1 的供应商代码 SNO;

在这里插入图片描述


(3) 求供应工程 J1 红色零件的供应商代码 SNO;
在这里插入图片描述


(4) 求没有使用天津供应商生产的红色零件的工程号 JNO;
在这里插入图片描述


(5) 求至少用了供应商 S1 所供应的全部零件的工程号 JNO。
在这里插入图片描述


4.设某学院要开发一个简单的项目信息管理系统。该系统涉及的实体有: (1)系别,其属性包括系编号、系名;
(2)教师,其属性包括教工号、姓名、性别、年龄;
(3)项目,其属性包括项目编号、项目名称、经费、负责人。
各实体之间的联系见图 3.1 所示。
在这里插入图片描述
在这里插入图片描述
根据题目描述,利用一句 SQL 语句完成以下题目要求(注意: 使用表中列名作为字段名, 自创字段名或使用多条 SQL 语句均为错误)。例如查询所有教师的详细信息, 答案为:SELECT * FROM 教师表。

(1) 假设“教师表”的表结构如表 3.5 所示, 写出创建“教师表”的 SQL 语句, SQL 语句中必须包含该表的所有约束);
在这里插入图片描述

CREATE TABLE 教师表
(
教工号 VARCHAR(4) PRIMARY KEY,
姓名 VARCHAR(10),
性别 VARCHAR(3),
年龄 INT,
系号 VARCHAR(4),
FOREIGN KEY(系号) REFERENCES 系表(系号)
)

(2) 假设今年为 2016 年,查询所有教师的教工号、姓名、 出生年份,并按照教工号的降序进行排序;

SELECT 教工号,姓名,2016-年龄 “出生年份” FROM 教师表 ORDER BY 教工号 DESC

(3) 查询“电子系”中姓“张”的所有教师的姓名;

SELECT 姓名 FROM 教师表,系表 WHERE 教师表.系号=系表.系号 AND 系名=’电子系’ AND 姓名 LIKE ‘张%’;

( 4) 假设项目名称唯一,查询经费超过 100 的项目的项目名称及所有教师为该项目工作的总天数;

SELECT 项目名称, SUM(工作天数) “总天数” FROM 参与表,项目表WHERE 参与表.项目编号=项目表.项目编号 AND 经费>=100 GROUP BY 项目名称;

( 5) 查询教师表中年龄小于同一个系中的所有教师的平均年龄的教师的姓名、性别;

SELECT 姓名, 性别 FROM 教师表 JSB1 WHERE AGE < SELECT AVG(AGE) 
FROM 教师表 JSB2 WHERE JSB2.系号=JSB1.系号

( 6) 修改项目表的结构,为项目表添加列名为“完成时间”的字段,数据类型为DATETIME;

ALTER TABLE 项目表 ADD 完成时间 DATETIME

( 7) 假设教师的姓名唯一, 为教师表的属性“姓名“建立唯一索引, 索引名为 IDX_NAME;

CREATE UNIQUE INDEX IDXNAME ON 教师表(姓名)

( 8) 创建一个视图,名称为 MYVIEW,查询“电子系” 的教师正在参加的项目的名称列表, 列表不允许重复元组。

CREATE VIEW MYVIEW AS SELECT DISTINCT 项目名称 FROM 项目表 WHERE 项目号 IN (SELECT 项目号 FROM 参与表 WHERE 教工号 IN (SELECT 教工号 FROM 教师表 WHERE 系号 IN (SELECT 系号 FROM 系表 WHERE 系名=’电子系’)))

( 9) 给“参加表”添加一条元组,教工号为 T002,项目编号为 P001;

INSERT INTO 参与表(教工号, 项目编号) VALUES(‘T002’, ‘P001’);
或者
INSERT INTO 参与表(教工号, 项目编号, 工作天数) VALUES(‘T002’, ‘P001’, NULL);

( 10) 删除没有参加任何项目的教师的信息;

DELETE FROM 教师表 WHERE 教工号 NOT IN (SELECT 教工号 FROM 参与表)

( 11) 把编号为“P001”的项目负责人名称改为“王五”;

UPDATE 项目表 SET 负责人=’王五’ WHERE 项目编号=’P001’;

这篇关于数据库原理题型 - 综合应用题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918871

相关文章

Java线程池核心参数原理及使用指南

《Java线程池核心参数原理及使用指南》本文详细介绍了Java线程池的基本概念、核心类、核心参数、工作原理、常见类型以及最佳实践,通过理解每个参数的含义和工作原理,可以更好地配置线程池,提高系统性能,... 目录一、线程池概述1.1 什么是线程池1.2 线程池的优势二、线程池核心类三、ThreadPoolE

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

Java 队列Queue从原理到实战指南

《Java队列Queue从原理到实战指南》本文介绍了Java中队列(Queue)的底层实现、常见方法及其区别,通过LinkedList和ArrayDeque的实现,以及循环队列的概念,展示了如何高效... 目录一、队列的认识队列的底层与集合框架常见的队列方法插入元素方法对比(add和offer)移除元素方法

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

Spring IOC核心原理详解与运用实战教程

《SpringIOC核心原理详解与运用实战教程》本文详细解析了SpringIOC容器的核心原理,包括BeanFactory体系、依赖注入机制、循环依赖解决和三级缓存机制,同时,介绍了SpringBo... 目录1. Spring IOC核心原理深度解析1.1 BeanFactory体系与内部结构1.1.1

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

MySQL 批量插入的原理和实战方法(快速提升大数据导入效率)

《MySQL批量插入的原理和实战方法(快速提升大数据导入效率)》在日常开发中,我们经常需要将大量数据批量插入到MySQL数据库中,本文将介绍批量插入的原理、实现方法,并结合Python和PyMySQ... 目录一、批量插入的优势二、mysql 表的创建示例三、python 实现批量插入1. 安装 PyMyS

通过DBeaver连接GaussDB数据库的实战案例

《通过DBeaver连接GaussDB数据库的实战案例》DBeaver是一个通用的数据库客户端,可以通过配置不同驱动连接各种不同的数据库,:本文主要介绍通过DBeaver连接GaussDB数据库的... 目录​一、前置条件​二、连接步骤​三、常见问题与解决方案​1. 驱动未找到​2. 连接超时​3. 权限不