数据库讲解---(数据更新、视图、数据控制)【MySQL版本】

目录

前言

一.数据更新

1.1插入数据

1.1.1插入单个元组

1.1.2将一个新学生记录(学号:091530,姓名:夏雨,性别:男,籍:海南,出生年份:1999,学院:计算机)插入到学生表中

1.1.3插入子查询结果

1.1.4有一个表“DEPT”(SDEPT CHAR(20),AVG_AGE SMALLINT)表示每个学院的学生的平均年龄,根据学生表中的数据求得结果后存入表中

1.2删除数据

1.2.1删除语句

1.2.2删除学号为092021的学生记录

1.2.3删除计算机学院所有学生的选课记录

1.3修改数据

1.3.1修改语句

修改语句的一般格式:

1.3.2将091611号学生的籍贯改为江苏

1.3.3将180101号课程的成绩增加一分

1.3.4将计算机学院学生的成绩清零

二.视图

2.1视图介绍

2.2建立视图

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

2.2.2建立计算机学院选修了“数据库原理”这门课的学生的视图

2.2.3建立计算机学院选修“数据库原理”课程且成绩在90分以上的学生视图

2.3删除视图

2.4查询视图

2.4.1查询使用

2.4.2在计算机学院学生的视图中找出年龄小于20岁的学生

2.5更新视图(略过)

三.数据控制

3.1授权

3.1.1把学生表的查询权限授予用户USER1

3.1.2把学生表和课程表的全部权限授予用户USER2和USER3

3.1.3把学习表的查询权限授予全部用户

3.1.4把查询学习表和修改成绩的权限授予用户USER4

3.1.5把学生表的INSERT权限授予USER5用户,并允许他将权限再授予别人

3.2收回权限

3.2.1把用户USER4修改成绩的权限收回

3.2.2把用户USER5对学生表的INSERT权限收

前言

数据库讲解(MySQL版)(超详细)【第一章】-CSDN博客

数据库-ER图教程_er图怎么讲解-CSDN博客

数据库讲解(MySQL版)(超详细)【第二章】【上】-CSDN博客

数据库讲解---(SQL语句--表的使用)【MySQL版本】-CSDN博客

数据库讲解---(数据查询)【MySQL版本】_数据库怎么查询选修课程名称的学号和姓名-CSDN博客

数据库讲解---(SQL语句--练习题讲解)【MySQL版本】-CSDN博客

一.数据更新

1.1插入数据

1.1.1插入单个元组

插入语句的一般格式为:

INSERT
INTO <表名> [(属性列1)、(属性列2).....]
VALUES [(常量1)、(常量2)、(常量3)];

如果某些属性列在INTO字句中没有出现,那么新纪录将在这些列上自动取空值,但如果表定义时某些列规定了“NOT NULL”约束,那么将会出错

1.1.2将一个新学生记录(学号:091530,姓名:夏雨,性别:男,籍:海南,出生年份:1999,学院:计算机)插入到学生表中

INSERT
INTO 学生
VALUES ("091530","夏雨","男","海南","1999","计算机");
或者
INSERT
INTO 学生 (学号,姓名,性别,籍贯,出生年份,学院)
VALUES ("091530","夏雨","男","海南","1999","计算机");

如果全部属性都有值,那么可以“省略属性列”的书写

1.1.3插入子查询结果

我们可以将一个查询的结果作为子句,并将这个子句作为一个记录插入到表中

子查询插入的一般格式:

INSERT
INTO <表名> ([属性列1]、[属性列2])
子查询;

1.1.4有一个表“DEPT”(SDEPT CHAR(20),AVG_AGE SMALLINT)表示每个学院的学生的平均年龄,根据学生表中的数据求得结果后存入表中

INSERT
INTO DEPT
SELECT 学院,AVG(year(now() - 出生年龄))
FROM 学生
GROUP BY 学院;

1.2删除数据

1.2.1删除语句

删除语句的一般格式为:

DELETE
FROM <表名>
(WHERE <条件>);

而删除可以分为下面三种:

  • 删除某个(某些元组)的值,WHERE子句给出删除条件
  • 删除全部元组,忽略WHERE子句
  • 带子查询的删除语句

1.2.2删除学号为092021的学生记录

DELETE
FROM 学生
WHERE 学号 = '092021';

1.2.3删除计算机学院所有学生的选课记录

DELETE
FROM 学习
WHERE '计算机' = (
    SELECT 学院
    FROM 学生
    WHERE 学生.学号 = 学习.学号
);

1.3修改数据

1.3.1修改语句

修改语句的一般格式:

UPDATE <表名>
SET <列名> = <表达式> [列名 = <表达式>]
[WHERE <条件>];

功能是修改指定表中满足WHERE子句的元组

SET子句用于指定修改方法,即用表达式的值取代列名中原先的属性值

如果没有WHERE子句默认修改表中所有记录

1.3.2将091611号学生的籍贯改为江苏

UPDATE 学生
SET 籍贯 = '江苏'
WHERE 学号 = '091611';

1.3.3将180101号课程的成绩增加一分

UPDATE 学习
SET 成绩 = 成绩 + 1
WHERE 课程号 = '180101';

1.3.4将计算机学院学生的成绩清零

UPDATE 学习
SET 成绩 = 0
WHERE '计算机' = (
    SELECT 学院
    FROM 学生
    WHERE 学生.学号 = 学习.学号
);
或者
UPDATE 学习
SET 成绩 = 0
WHERE 学号 IN (
    SELECT 学号
    FROM 学生
    WHERE 学院 = '计算机'
);

二.视图

2.1视图介绍

视图是从一个表或几个基本表(视图)中导出的表,因此是一种非标准的子模式概念。

我们修改图上的属性,并不会影响表中的属性,因此可以理解为视图为表的一个副本

使用视图查询的效率远大于使用原表查询的效率

2.2建立视图

建立视图的一般格式为:

CREATE VIEW <视图名> ([列名1][列名2]....)
AS <子查询>
(WITH CHECK OPTION);

 DBMS执行“CREATE VIEW”语句时只是把视图的定义存入数据字典,并不执行其中的子查询语句,所以数据中只存在视图的定义,而不存放对应的数据!!

(PS:构成视图的属性列或者全部省略、或者全部给出,没有其他情况)

(但如果全部省略,那么构成视图的属性就是子查询中的属性)

但是以下三种情况,必须明确指定组成视图的所有列名:

  • 某个目标是集函数或表达式
  • 多表连接时选出了几个同名列作为视图的字段
  • 需要在视图中为某个列启用新的合适的名字

 WITH CHECK OPTION表示对视图进行插入、删除、更新操作时要保证发生变动的行满足视图定义中的谓词条件(即子查询中的条件表达式)

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

CREATE VIEW CS_VIEW
AS SELECT *
FROM 学生
WHERE 学院 = '计算机';

2.2.2建立计算机学院选修了“数据库原理”这门课的学生的视图

CREATE VIEW DB_S1
AS SELECT 学生.学号,姓名,性别,籍贯,学院,成绩
FROM 学生,学习,课程
WHERE 学生.学号 = 学习.学号 AND 学习.课程号 = 课程.课程号 AND 学院 = '计算机';

2.2.3建立计算机学院选修“数据库原理”课程且成绩在90分以上的学生视图

视图可以建立在另一个视图之上

CREATE VIEW DB_S2
AS SELECT *
FROM DB_S1
WHERE 成绩 >= 90;

2.3删除视图

删除视图语句:

DROP VIEW <视图名>;

值得注意的是,如果有其它视图建立在这个视图之上,那么该视图被删除后,其他视图会失效,因此也需要使用DROP将它们一一删除

2.4查询视图

2.4.1查询使用

将对视图的查询转换为对基本表的查询的过程称为“视图的消解

2.4.2在计算机学院学生的视图中找出年龄小于20岁的学生

SELECT *
FROM CS_VIEW
WHERE year(now()) - 出生年份 < 20;

2.5更新视图(略过)

更新视图包括:“INSERT插入”、“DELETE删除”、“UPDATE修改”三种

并非所有的视图都允许更新,允许更新的视图称为“可更新视图

以下七种情况下,视图不允许更新

  • 视图属性来自属性表达式或常数
  • 视图属性来自库函数
  • 视图定义中有GROUP BY子句
  • 视图定义中有DISTINCT选项
  • 视图定义中有嵌套查询且嵌套查询的FROM子句涉及该视图的参照表
  • 视图由两个以上的基本表导出
  • 在一个不允许更新的视图上再定义一个视图

三.数据控制

3.1授权

授权使用“GRANT”语句,格式如下:

GRANT <权限1> [,<权限2>....]
[ON <对象类型> <对象名>]
[TO <对象类型> <对象名>]
[WITH GRANT OPTION];

语义为:“将指定操作对象的指定操作权限授权给某个用户

常见的操作权限如下

64ad43c9419f47c9bb11f3dbfb09bef0.png

如果指定了“WTH GRANT OPTION”子句,则获得权限的用户还可以将这个权限再授予别的用户

3.1.1把学生表的查询权限授予用户USER1

GRANT SELECT ON TABLE 学生 TO USER1;

3.1.2把学生表和课程表的全部权限授予用户USER2和USER3

GRANT ALL PRIVILEGES ON TABLE 学生,课程 TO USER2,USER3;

3.1.3把学习表的查询权限授予全部用户

GRANT SELECT ON TABLE 学习 TO PUBLIC;

3.1.4把查询学习表和修改成绩的权限授予用户USER4

GRANT UPDATE(成绩),SELECT ON TABLE 学习 TO USER4;

3.1.5把学生表的INSERT权限授予USER5用户,并允许他将权限再授予别人

GRANT INSERT ON TABLE 学生 TO USER5 WITH GRANT OPTION;

3.2收回权限

收回权限使用“REMOVE”语句收回,格式如下:

REMOVE <权限1> <权限2> ...
[ON <对象类型> <对象名>]
[FROM <用户>];

3.2.1把用户USER4修改成绩的权限收回

REMOVE UPDATE(成绩) ON TBALE FROM USER4;

3.2.2把用户USER5对学生表的INSERT权限收回

REMOVE INSERT ON TABLE 学生 FROM USER5;

收回USER5权限的同时,如果有其他用户从USER5中获得了该权限,那么也会被收回

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

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

相关文章

蓝桥杯2024年第十五届省赛真题-R 格式(高精度乘法 + 加法)

本题链接&#xff1a;蓝桥杯2024年第十五届省赛真题-R 格式 - C语言网 题目&#xff1a;​​​​​​​ 样例&#xff1a; 输入 2 3.14 输出 13 思路&#xff1a; 根据题意&#xff0c;结合数据范围&#xff0c;这是一道模板的高精度乘以低精度问题。 题意是double 类型 d 与…

深度解析 Spark(进阶):架构、集群运行机理与核心组件详解

关联阅读博客文章&#xff1a;深度解析SPARK的基本概念 引言&#xff1a; Apache Spark作为一种快速、通用、可扩展的大数据处理引擎&#xff0c;在大数据领域中备受关注和应用。本文将深入探讨Spark的集群运行原理、核心组件、工作原理以及分布式计算模型&#xff0c;带领读者…

spring webflux 小结

一、WebFlux 简介 WebFlux 是 Spring Framework5.0 中引入的一种新的反应式Web框架。通过Reactor项目实现Reactive Streams规范&#xff0c;完全异步和非阻塞框架。本身不会加快程序执行速度&#xff0c;但在高并发情况下借助异步IO能够以少量而稳定的线程处理更高的吞吐&…

今日arXiv最热NLP大模型论文:一文读懂大模型的prompt技术

引言&#xff1a;探索高效提示方法的重要性 在人工智能领域&#xff0c;大语言模型&#xff08;LLMs&#xff09;已经成为了自然语言处理&#xff08;NLP&#xff09;任务的重要工具。随着模型规模的不断扩大&#xff0c;如何高效地利用这些模型&#xff0c;尤其是在资源有限的…

Redis中的订阅发布和事务(一)

订阅发布 PUBSUB NUMSUB PUBSUB NUMSUB [channel-1 channel-2… channel-n]子命令接受任意多个频道作为输入参数&#xff0c;并返回这些频道的订阅者数量。 这个子命令是通过pubsub_channels字典中找到频道对应的订阅者链表&#xff0c;然后返回订阅者链表的长度来实现的(订阅…

随机游走的艺术-图嵌入表示学习

图嵌入引入 机器学习算法&#xff1a; 厨师 样本集&#xff1a; 食材 只有好的食材才能做出好的饭菜 我们需要把数据变成计算机能够读懂的形式&#xff08;将数据映射成为向量&#xff09; 图嵌入概述 传统图机器学习 图表示学习 自动学习特征&#xff0c;将…

啤酒厂要开发一个SCADA系统,我是这样考虑的

需求分析 在啤酒生产过程中&#xff0c;技术与自动化的应用对确保产品质量的稳定、提高生产效率以及保障生产安全起着至关重要的作用。因此&#xff0c;构建一套全面、高效的SCADA&#xff08;监督控制与数据采集&#xff09;系统总体规划框架对于啤酒厂来说具有重大意义。 SCA…

spring高级篇(一)

1、ApplicationContext与BeanFactory BeanFactory是ApplicationContext的父级接口&#xff1a;&#xff08;citlaltu查看类关系图&#xff09; 在springboot的启动类中&#xff0c;我们通过SpringApplication.run方法拿到的是继承了ApplicationContext的ConfigurableApplicatio…

【C++】unordered_set和unordered_map

底层哈希结构 namespace hash_bucket {template<class T>struct HashData{T _data;struct HashData* next nullptr;HashData(const T& data):_data(data){}};//仿函数:这里直接用开散列仿函数template <class K>struct HashFunc{size_t operator()(const K&a…

13个Java基础面试题

Hi&#xff0c;大家好&#xff0c;我是王二蛋。 金三银四求职季&#xff0c;特地为大家整理出13个 Java 基础面试题&#xff0c;希望能为正在准备或即将参与面试的小伙伴们提供些许帮助。 后续还会整理关于线程、IO、JUC等Java相关面试题&#xff0c;敬请各位持续关注。 这1…

【Redis】主从复制

文章目录 一、主从复制之一主二仆二、主从复制之薪火相传三、主从复制之反客为主四、总结4.1、复制原理和工作流程4.2、复制的缺点 主从复制指的是当主机数据变化时&#xff0c;自动将新的数据异步同步到其他备用机。主从复制的功能主要有 读写分离容灾恢复数据备份水平扩容支…

YOLO算法改进Backbone系列之:HorNet

在基于点积自注意的新空间建模机制的推动下&#xff0c;视觉变形器的最新进展在各种任务中取得了巨大成功。在本文中&#xff0c;我们展示了视觉变形器背后的关键要素&#xff0c;即输入自适应、长距离和高阶空间交互&#xff0c;也可以通过基于卷积的框架有效实现。我们提出了…

2024Spring> HNU-计算机系统-实验3-Bomblab-导引/答疑

前言 BombLab一定要花时间完成哦&#xff0c;对于期末卷面的提升和计算机系统的理解都非常重要。 导引 ①文件目录概览 助教下发一个文件包&#xff0c;打开之后是这样的几个文件。 这几个文件解释如下 bomb&#xff1a;可执行文件&#xff0c;无法打开&#xff0c;我们主要…

MySQL中的存储过程详解(下篇)

使用语言 MySQL 使用工具 Navicat Premium 16 代码能力快速提升小方法&#xff0c;看完代码自己敲一遍&#xff0c;十分有用 拖动表名到查询文件中就可以直接把名字拉进来中括号&#xff0c;就代表可写可不写 目录 1. 查看存储过程 1.1 查看存储过程的状态 1.1.1 基础…

数据结构学习之路--深入探索栈的核心要点(附C源码)

哈喽~大家&#xff01;今天我们来学习栈的特别节目&#xff0c;精彩马上开始~ 目录 前言 一、栈 1 栈的概念 2 栈的结构 3 栈的实现 3.1 栈的定义 3.2 栈的初始化 3.3 入栈 3.4 出栈 3.5 取栈顶元素 3.6 判断栈是否为空 3.7 栈的大小 3.8 栈的销毁 二、源代…

InnoDB架构:磁盘篇

InnoDB架构&#xff1a;磁盘篇 InnoDB是MySQL数据库中默认的存储引擎&#xff0c;它为数据库提供了事务安全型&#xff08;ACID兼容&#xff09;、行级锁定和外键支持等功能。InnoDB的架构设计优化了对于读取密集和写入密集型应用的性能表现&#xff0c;是一个高度优化的存储系…

ctf.show_web13

上传一句话木马 1.php文件&#xff0c;显示 再改后缀为.jpg&#xff0c;显示错误文件大小 用dirsearch扫一下 备份文件.bak 下载文件源码 <?php header("content-type:text/html;charsetutf-8");$filename $_FILES[file][name];$temp_name $_FILES[file][tm…

C++项目 -- 负载均衡OJ(一)comm

C项目 – 负载均衡OJ&#xff08;一&#xff09;comm 文章目录 C项目 -- 负载均衡OJ&#xff08;一&#xff09;comm一、项目宏观结构1.项目功能2.项目结构 二、comm公共模块1.util.hpp2.log.hpp 一、项目宏观结构 1.项目功能 本项目的功能为一个在线的OJ&#xff0c;实现类似…

普通人做抖音小店真的能赚钱吗?可以,但更取决于个人

大家好&#xff0c;我是电商花花。 现在做抖音小店的基本上都是一些新商家&#xff0c;对于我们众多零基础的朋友来说&#xff0c;是期待也是一份挑战。 抖音小店作为一个充满机会的新兴平台&#xff0c;许多人都欣喜的投入其中&#xff0c;期望能够借此来改变自己的命运&…
最新文章