实验三 数据更新及视图

实验三 数据更新及视图

1.实验目的

1.加深对数据库相关性质的理解;
2.各种约束性理解;
3.学会数据库中数据的更新的方法;
4.学会视图的创建与查询。

2.实验内容

对已建好的各表输入适当的数据并练习数据的插入、删除和修改,注意检测键码约束、外码约束、非空约束、唯一约束、取值约束等各种约束在输入数据及数据的删除、修改时的作用,结合课堂教学体会其含义。同时练习视图的建立、查询与删除等。

1.    向S表中插入一条新数据

实验过程:
用Sql语句插入数据:'S6','智造',10,'济南'
 

INSERT 
INTO s 
VALUES('S6','智造',10,'济南');

INSERT 
INTO s(SNO,SNAME,STATUS,CITY) 
VALUES('S6','智造',10,'济南');

实验结果:

结果分析:

两种方法,一种是INTO s ,一种是INTO s(SNO,SNAME,STATUS,CITY) ,第二种方法是插入表中指定列中,当括号里面时表的全部列名的时候,这两种方法运行结果是一样的。

2.    供应商S3向J2工程供应零件P2零件350个,将该数据插入相应的表中
实验过程:
 

INSERT 
INTO spj 
VALUES('S3','P2','J2',350);

INSERT 
INTO spj(SNO,PNO,JNO,QTY) 
VALUES('S3','P2','J2',350);

实验结果:

结果分析:

同第一题,两种方法,一种是INTO spj  ,一种是INTO spj(SNO,PNO,JNO,QTY) ,第二种方法是插入表中指定列中,当括号里面时表的全部列名的时候,这两种方法运行结果是一样的。

 

 3.    将J1工程项目名称改为建工集团,城市改为济南
实验过程

UPDATE j
SET JNAME='建工集团',CITY='济南'
WHERE jno='J1';

实验结果

结果分析

数据库更新---插入:update [表名]

set [修改表内的值]

where [限制条件]

 

 4.    把全部红色零件的颜色改成蓝色
实验过程

UPDATE p
SET color='蓝'
WHERE color='红';

实验结果

  

结果分析

同第三题

5.    由S2供给J1的零件P3改为供给P4零件
实验过程
 

UPDATE spj
SET PNO='P4'
WHERE SNO='S2' AND JNO='J1'AND PNO='P3';

实验结果

结果分析

   同第3题,改变表中的值

6.    删除工程项目J3的所有信息
实验过程
(1)    SQL语句直接删除(将外键约束删除时由RESTRICT改为CASCADE,即实现级联删除)
 

DELETE 
FROM j
WHERE JNO='J3'

 (2)    创建表时,创建级联操作

 

(3)    用触发器实现级联删除
创建触发器deletej_spj:
 

CREATE TRIGGER deletej_spj
AFTER
DELETE on spj
for each ROW
BEGIN
DELETE FROM j WHERE JNO=OLD.JNO;
END;

再运行删除语句:

 DELETE from j where JNO='J3';

删除触发器的语句是:

 drop TRIGGER deletej_spj;

(4)    也可以用两个SQL语句进行删除,先删除spj表中的,再删除j表中的

DELETE from spj where JNO='J3';
DELETE from j where JNO='J3';

实验结果

运行结果正确

结果分析

起初只写了一句DELETE from j where JNO='J3';运行结果错误,原因是spj表里引用了j表中的j3。所以用了以上4种方法,都可以实现级联删除。结果经过分析,正确。

7.    从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录
实验过程
(1)    SQL语句直接删除(将外键约束删除时由RESTRICT改为CASCADE,即实现级联删除)
 

DELETE 
FROM s
WHERE SNO='S2';

 

  1. 创建表时,创建级联操作

  1. 用触发器实现级联删除

创建触发器deletes_spj:

CREATE TRIGGER deletes_spj
AFTER
DELETE on spj
for each ROW
BEGIN
DELETE FROM s WHERE SNO=OLD.SNO;
END;

 

再运行删除语句:
	   DELETE from s where SNO='S2';
删除触发器的语句是:
	   drop TRIGGER deletes_spj;

(4)    也可以用两个SQL语句进行删除,先删除spj表中的,再删除j表中的

DELETE from spj where SNO='S2';
DELETE from s where SNO='S2';

实验结果

结果分析

同第6题一样,4种方法都可以实现。

8.    采用SQL命令和图形界面两种方法为建工集团建立一个供应情况视图,包括供应商号(SNO)、零件号(PNO)、供应数量(QTY)。
实验过程
    SQL语句:
 

CREATE VIEW spq
AS
SELECT SNO,PNO,QTY
FROM spj
WHERE JNO in(SELECT JNO FROM j WHERE JNAME='建工集团');

图形界面:
        视图—右键—新建视图
 

 

实验结果

 

 

结果分析

SQL语句和和可视化界面都可以实现,SQL语句实现更方便,可视化界面相当于往固定创建视图的框架里填充内容。

涉及知识点:创建视图

CREATE VIEW [视图名]

AS

SELECT [指定列名]

FROM [指定表]

WHERE [限制条件];

9.    针对以上视图,查询建工集团项目使用的各种零件代码及其数量
实验过程
 

SELECT PNO,SUM(QTY)
FROM spq
GROUP BY PNO;

实验结果

结果分析

可以看到,结果是正确的。

涉及知识点:查询视图

SELECT PNO,SUM(QTY)

FROM spq

GROUP BY PNO;

与表的查询非常类似,from后面加上视图的名字就可以了。

10.    采用SQL命令和图形界面两种方法为建工集团建立一个供应情况视图,包括供应商名(SName)、零件名(PName)、工程项目名(Jname)、供应数量(QTY)。
实验过程
    SQL语句:
 

CREATE VIEW spjq
AS
SELECT SNAME,PNAME,JNAME,QTY
FROM s,p,j,spj
WHERE s.sno=spj.sno AND p.pno=spj.pno AND j.jno=spj.jno AND jname='建工集团';

 

实验结果

SQL语句的运行结果:

可视化界面的运行结果

结果分析

    与第8题非常类似,只是在第8题的基础上需要将s,p,j,spj  4个表进行连接。SQL语句当中我用的全连接,可视化界面当中使用的是INNER JOIN。

11.    针对以上视图,查询建工集团项目使用的各种零件名称及其数量
实验过程
 

SELECT PNAME,SUM(QTY)
FROM spjq
GROUP BY PNAME;

实验结果

结果分析

与第9题非常类似。

  1. 设有工资表,表结构如下表所示

工资号

岗位工资

薪级工资

职补

考勤

医疗

驻济补

其它补

 房租

水费

电费

公积金

所得税

 建立一个视图,在视图中包括原工资数据并体现应付工资和实发工资的数额。
实验过程
    先建一个工资表,我给它命名为employee,SQL语句如下:

CREATE TABLE `employee`  (
`ID` char(10) COMMENT '工资号',
 		`BASE` double COMMENT '岗位工资',
 		`GRADE` double COMMENT '薪级工资',
`ZB` double  COMMENT '职补',
 		`KQ` double  COMMENT '考勤',
  		`YL` double COMMENT '医疗',
  		`ZJB` double  COMMENT '驻济补',
  		`QTB` double  COMMENT '其它补',
  		`FZ` double COMMENT '房租',
  		`SF` double  COMMENT '水费',
  		`DF` double  COMMENT '电费',
  		`GJJ` double  COMMENT '公积金',
  		`SDS` double  COMMENT '所得税',
  		PRIMARY KEY (`ID`)
)

 

自己编写了5条数据:

用SQL语句创建一个视图:

    CREATE VIEW `员工工资条` (`工资号`,`岗位工资`,`薪级工资`,`职补`,`考勤`,

                           `医疗`,`驻济补`,`其他补`,`房租`,`水费`,`电费`,

                           `公积金`,`所得税`,`应付工资`,`实发工资`)

 

CREATE VIEW `员工工资条` (`工资号`,`岗位工资`,`薪级工资`,`职补`,`考勤`,
							`医疗`,`驻济补`,`其他补`,`房租`,`水费`,`电费`,
							`公积金`,`所得税`,`应付工资`,`实发工资`) 
AS SELECT ID,BASE,GRADE,ZB,KQ,YL,ZJB,QTB,FZ,SF,DF,GJJ,SDS, 
					(BASE+GRADE+ZB+KQ+YL+ZJB+QTB), 
					((BASE+GRADE+ZB+KQ+YL+ZJB+QTB)-(FZ+SF+DF+GJJ+SDS))
FROM employee 
GROUP BY ID;

实验结果

 

结果分析

这道题的难点主要是应发工资和实发工资的计算问题。

使用公式:

应发工资=岗位工资+薪级工资+职补+考勤+医疗+驻济补+其他补

实发工资=应发工资-房租-水费-电费-公积金-所得税

视图创建出来结果如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/4596.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

瑞吉外卖项目Day2———完善登录问题、员工功能

创建过滤器类(filter) package com.study.filter;import com.alibaba.fastjson.JSON; import com.study.common.R; import lombok.extern.slf4j.Slf4j; import org.springframework.util.AntPathMatcher;import javax.servlet.*; import javax.servlet.annotation.WebFilter; …

华为OD机试题,用 Java 解【统计匹配的二元组个数】问题 | 含解题说明

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典本篇题目:统计匹配的二元组个数 题目 给…

串口,IIC,SPI,USB等总线叙述

串口,IIC,SPI,USB等总线叙述 文章目录串口,IIC,SPI,USB等总线叙述1 串口2.I2C3.SPI4.USB控制(Control)传输方式同步(Isochronous)传输方式中断(In…

在等GPT-5多模态?试试Genmo!Adobe AI首轮内测报告;ChatGPT三条使用哲学与实践;论文追更与阅读神器 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 『微软 New Bing 引入广告』日活跃用户超1亿,探索广告投放的未来 微软正在尝试在 New Bing 的聊天回复中投放广告。虽然广…

【11】Activity的生命周期

其实Android是使用任务(task)来管理Activity的,一个任务就是一组存放在栈里的Activity 的集合,这个栈也被称作返回栈(back stack)。栈是一种后进先出的数据结构,在默认情况 下,每当我们启动了一个新的Activity,它就会在…

【机器学习】03-转换器和预估器、K-近邻算法、朴素贝叶斯算法、决策树等算法知识

分类算法 一、sklearn转换器和预估器 1 转换器 - 特征工程的父类 fit_transform()fit() 计算 每一列的平均值、标准差transform() (x - mean) / std进行最终的转换 2 估计器(sklearn机器学习算法的实现) 估计器(estimator)–一类实现算法的API 实例化一个estimatorestimat…

剑指offer JZ23 链表中环的入口结点

Java JZ23 链表中环的入口结点 文章目录Java JZ23 链表中环的入口结点一、题目描述二、hash法,记录第一次重复的结点三、快慢指针法使用hash法和快慢指针法解决剑指offer 第JZ23 链表中环的入口结点的问题。 一、题目描述 给一个长度为n链表,若其中包含环…

【新】(2023Q2模拟题JAVA)华为OD机试 - 寻找链表的中间结点

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:寻找链表的中间结点 题目 给…

利用自动化平台可以做的那亿点事 |得物技术

前言 相信大家对接口自动化已经不陌生了,这是几乎我们每个迭代都会投入的事情,但耗费了这么多精力去编写和维护,实际的收益如何呢?如果收益不好,是不是说明我们自动化 case 的实现方式、使用方式还有改进的地方呢&…

第09章_子查询

第09章_子查询 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生,目前在某公…

【ABAP】ME55双击跳转MD04增强

最近收到了一个需求,大致的要求是在标准报表ME55的ALV短文本列双击后跳转到MD04的详情。刚开始没有找到增强点想用间接的办法实现,在ME55上增加一列,展示想看到的内容,最后由于需要展示的内容太多,该方案被舍弃。 经过…

深度学习实战19(进阶版)-SpeakGPT的本地实现部署测试,基于ChatGPT在自己的平台实现SpeakGPT功能

大家好,我是微学AI,今天给大家带来SpeakGPT的本地实现,在自己的网页部署,可随时随地通过语音进行问答,本项目项目是基于ChatGPT的语音版,我称之为SpeakGPT。 ChatGPT最近大火,其实在去年12月份…

SpringBoot @Transactional事务详解

事务用处及作用 事务主要是保证数据统一、一致的一种操作。 详细的一些专用术语在此这里不会说太多,如需了解自行百度了(还不是枯燥乏味),大致就是这意思。 事务用处 比如坤坤,坤坤拿着100元去买鸡,一个…

JAVA ---程序流程

(一)引言 在生活中,我们经常会发现在医院或者官方机构办事是要走流程的,同样的程序必须能操控自己的世界,在执行过程中作出判断与选择。在Java中,通过流程控制语句可实现程序执行流程的随意控制&#xff0…

C#中使用I/O文件流

流,即是二进制数值,文件和流 I/O(输入/输出)是指在存储媒介中传入或传出数据。 在 .NET 中,System.IO 命名空间包含允许以异步方式和同步方式对数据流和文件进行读取和写入操作的类型。 这些命名空间还包含对文件执行压…

Android开发 Intent

1. Intent 在组件之间传递信息,一般需要设置发送方,接收方和数据。 下图是Intent 的常用属性: 2. Intent分类 1)显式Intent:精确匹配发送方和接收方 方法一: startActivity(new Intent(this,MainActiv…

USB抓包分析

1、USB传输协议基本概念 一个传输(控制、批量、中断、等时):由多个事务transaction组成; 一个事务transaction (IN、OUT、SETUP):由一多个包Packet组成。USB数据在主机与usb设备间被传输,之间的关联叫做管道pipe。一个USB设备可以…

图片转字符画

目录一、字符画二、制作方式一、字符画 字符画:用字符填充创作的人物或动物图片,就像下面这样: 二、制作方式 1.使用Ps的文字工具和蒙版工具来实现 可以看下YouTube上这个教程视频:Photoshop CS6 Tutorial: How to Make an Edi…

企业电子招投标采购系统源码之首页设计

功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外部…

详解TCP、HTTP中的保活机制 | Keepalive和Keep-Alive

目录 🌲 HTTP 的 Keep-Alive 🌲 TCP 的 Keepalive 🌲 最后总结 🌲 参考资料 TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗? 这是个好问题,应该有不少人都会搞混,因为这两个东西看上…