实验题目:SQL 数据更新、视图

news/2025/2/23 10:14:44

一、实验环境

实验使用普通PC机一台,MySQL数据库版本8.0.36,使用Navicat Premium 16提供图形化界面。

二、实验内容

1、insert 语句使用方法

2、update 语句使用方法

3、delete 语句使用方法

4、掌握 truncate table 语句使用方法

5、掌握视图的创建方法

三、具体完成情况提供截图和文字说明

1、insert 语句使用方法

将一个新学生元组(学号:200815128;姓名:陈冬;性别:男;所在系:计算机学

院;年龄:18 岁)插入到 Student 表中

INSERT INTO student (sno, sname, ssex, sdept, sage)

VALUES ('200815128', '陈冬', '男', '计算机学院', 18);

对每一个系,求学生的平均年龄,并把结果存入数据库

CREATE TABLE dept_age (

    sdept CHAR(15),

    avg_age FLOAT

);

计算学生的平均年龄,插入上述表中

INSERT INTO dept_age (sdept, avg_age)

SELECT sdept, AVG(sage)

FROM student

GROUP BY sdept;

2、update 语句使用方法

将学生 200815121 的年龄改为 22 岁

UPDATE student

SET sage = 22

WHERE sno = '200815121';

将计算机学院全体学生的成绩置零

UPDATE sc

SET grade = 0

WHERE sno IN (

    SELECT sno

    FROM student

    WHERE sdept = '计算机学院'

);

3、delete 语句使用方法

删除学生 200815121 的学生信息

DELETE FROM student

WHERE sno = '200815121';

删除计算机学院全体学生的选课记录

DELETE FROM sc

WHERE sno IN (

    SELECT sno

    FROM student

    WHERE sdept = '计算机学院'

);

注:受篇幅限制,下述步骤仅供参考,完整操作截图的word版本可见上方本博文免费资源绑定。

4、掌握 truncate table 语句使用方法

TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删

除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志

资源少。DELETE 语句每次 删除一行, 并在事务 日志中为所删 除的每行记 录一项。

TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中

记录页的释放。

TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。

新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如

果要删除表定义及其数据,请使用 DROP TABLE 语句。

对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带

WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能

激活触发器。

删除学生信息表中的所有记录

TRUNCATE TABLE student;

5、掌握视图的创建方法

建立计算机学院学生的视图

CREATE OR REPLACE VIEW cs_student AS

SELECT sno, sname, ssex, sage, sdept

FROM student

WHERE sdept = '计算机学院';

建立计算机学院学生的视图,并要求进行修改和插入操作时仍需保证该视图只有计算机学院的学生

CREATE OR REPLACE VIEW cs_student AS

SELECT sno, sname, ssex, sage, sdept

FROM student

WHERE sdept = '计算机学院'

WITH CHECK OPTION;

建立计算机学院选修了 1 号课程且成绩在 90 分以上的学生的视图

CREATE OR REPLACE VIEW cs_student_view AS

SELECT s.sno, s.sname, s.ssex, s.sage, s.sdept

FROM student s

JOIN sc ON s.sno = sc.sno

WHERE s.sdept = '计算机学院' AND sc.cno = '1' AND sc.grade > 90;

删除视图

DROP VIEW cs_student_view;

四、出现的问题

在使用UPDATE和DELETE语句修改或删除数据时,需要注意数据一致性的问题,确保操作的准确性和完整性。

五、解决方案

可以在事务中执行操作,并使用事务回滚来恢复数据到之前的状态。

六、实验总结

本次实验,我们通过INSERT语句将新学生信息插入到Student表中,并使用TRUNCATE TABLE语句清空表内容。接着,我们使用UPDATE语句更新学生信息和成绩,以及DELETE语句删除学生信息和选课记录。针对学院的需求,我们创建了视图cs_student来过滤计算机学院的学生信息,并用WITH CHECK OPTION保证数据一致性。最后,我们创建了dept_age表,用来存储各系学生的平均年龄,并通过INSERT INTO语句计算并插入了这些数据。这次实验不仅加深了我们对SQL语句的理解,也提高了我们在MySQL数据库中进行数据操作的能力。


http://www.niftyadmin.cn/n/5863303.html

相关文章

分布式锁实现(数据库+Redis+Zookeeper)

1. 数据库分布式锁 实现原理 基于唯一索引: 创建一张锁表,通过唯一索引(如锁名称)保证互斥性。 加锁:插入一条记录,成功则获取锁,失败则重试。 解锁:删除对应记录。 乐观锁&…

Vue3 + Spring WebMVC 验证码案例中的跨域问题与解决方法

最近在基于vue3 SpringWebMVC前后端分离的开发环境中实现一个验证码的案例,在开发过程中遇到了一些复杂的跨域问题,现已解决,故将解决方法分享,希望能帮到有需要的人。 出现的问题: 对于验证码的实现,我选…

deepseek自动化代码生成

使用流程 效果第一步:注册生成各种大模型的API第二步:注册成功后生成API第三步:下载vscode在vscode中下载agent,这里推荐使用cline 第四步:安装完成后,设置模型信息第一步选择API provider: Ope…

Python基于Django的广州、北京、杭州二手房房价可视化分析系统(附源码)

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

4. grafana(7.5.17)功能菜单简介

点击可以返回home页面 搜索Dashboard 新建按钮:用户创建Dashboard、文件夹。以及导入外部(社区)Dashboard 用于查看活管理Dashboard,包括home、Manage、playlists、snapshots功能 explore(探索)&#x…

linux串口通讯

在当今的科技世界中,串口通讯虽然不像一些新兴的高速通信技术那般夺目,但它依然在众多领域有着不可替代的地位,尤其是在嵌入式系统开发、工业自动化控制等场景。而 Linux 系统,凭借其开源、稳定且强大的特性,为串口通讯提供了出色的支持。 一、串口通讯基础 串口通讯,简…

软考高级《系统架构设计师》知识点(八)

信息系统基础知识 信息系统概述 信息系统:是由计算机硬件、网络和通信设备、计算机软件、信息资源、信息用户和规章制度组成的以处理信息流为目的的人机一体化系统。 信息系统的5个基本功能:输入、存储、处理、输出和控制。 信息系统的性质影响着系统开发…

DeepSeek 助力 Vue 开发:打造丝滑的评论系统(Comment System)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…