数据库讲解---(数据更新、视图、数据控制)【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.mzph.cn/news/819099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全-自学笔记

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 我在之前的回答中&#xff0c;我都一再强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而…

【力扣TOP100热题图解】T1.两数之和

题目链接点这里—— 力扣&#xff08;LeetCode&#xff09;​​​​​​ 法一&#xff1a;暴力枚举 最容易想到的方法是枚举数组中的每一个数 x&#xff0c;寻找数组中是否存在 target - x。 当我们使用遍历整个数组的方式寻找 target - x 时&#xff0c;需要注意到每一个位…

【Linux】磁盘管理和文件系统

目录 一、硬盘 1.硬盘结构 2.结构类型 二、MBR与磁盘分区 1.MBR主引导记录 2.磁盘分区结构 三、文件系统类型 四、linux系统添加并使用新硬盘的步骤 1.添加新的硬盘 2.刷新识别 3.进行分区 4.格式化&#xff0c;创建文件系统 5.挂载使用 一、硬盘 1.硬盘结构…

SpringBoot整合消息中间件(ActiveMQ,RabbitMQ,RocketMQ,Kafka)

消息中间件 消息消息队列JMS AMQPMQTTKafka Spring整合消息队列模拟消息队列的工作流程Spring整合ActiveMQSpring整合RabbitMQ直连交换机模式主题交换机模式 Spring整合RocketMQSpring整合kafka 消息 消息的发送方&#xff1a;生产者 消息的接收方&#xff1a;消费者 同步消息…

基于SSM项目高校在线请假与审批系统

采用技术 基于SpringBoot框架实现的web的智慧社区系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 简介 本系统实现了管理员&#xff0c;教师&#xff0c;学生三个模…

OSPF动态路由实验(华为)

思科设备参考&#xff1a;OSPF动态路由实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 OSPF&#xff08;Open Shortest Path First&#xff09;是一种内部网关协议&#xff0c;主要用于在单一自治系统内决策路由。它是一种基于链路状态的路由协议&#xff0c;通过…

Linux下SPI设备驱动实验:实现SPI发送/接收数据的函数

一. 简介 前面文章介绍了SPI设备数据收发处理流程&#xff0c;后面几篇文章实现了SPI设备驱动框架&#xff0c;加入了字符设备驱动框架代码。文章如下&#xff1a; SPI 设备驱动编写流程&#xff1a;SPI 设备数据收发处理流程中涉及的结构体与函数-CSDN博客 SPI 设备驱动编写…

【洛谷 P8802】[蓝桥杯 2022 国 B] 出差 题解(带权无向图+单源最短路+Dijkstra算法+链式前向星+最小堆)

[蓝桥杯 2022 国 B] 出差 题目描述 A \mathrm{A} A 国有 N N N 个城市&#xff0c;编号为 1 … N 1 \ldots N 1…N 小明是编号为 1 1 1 的城市中一家公司的员工&#xff0c;今天突然接到了上级通知需要去编号为 N N N 的城市出差。 由于疫情原因&#xff0c;很多直达的交…

MXXE利用XXE漏洞快速获取服务器敏感文件工具

https://github.com/MartinxMax/MXXE 关于 MXXEV1.2升级版,快速获取服务器敏感文件 获取Windows服务器敏感文件 把数据包复制到payload.txt进行自动注入 $ python3 MXXE.py -lh 10.10.16.5 -user Daniel -server windows 幸运的是我们找到了服务器的私匙 获取Linux服务器敏感…

LeetCode-706. 设计哈希映射【设计 数组 哈希表 链表 哈希函数】

LeetCode-706. 设计哈希映射【设计 数组 哈希表 链表 哈希函数】 题目描述&#xff1a;解题思路一&#xff1a;超大数组解题思路二&#xff1a;拉链法解题思路三&#xff1a; 题目描述&#xff1a; 不使用任何内建的哈希表库设计一个哈希映射&#xff08;HashMap&#xff09;。…

数字孪生与企业

数字孪生技术&#xff0c;简而言之&#xff0c;就是创造一个物理实体的数字双胞胎&#xff0c;在虚拟世界中精确模拟现实世界的行为、过程和系统。这种技术的核心在于&#xff0c;它允许我们在数字环境中实时地监控、分析和优化其物理对应物的性能和效率。数字孪生的应用场景极…

【深入理解】width 的默认值,2024年最新面试复盘

先自我介绍一下&#xff0c;小编浙江大学毕业&#xff0c;去过华为、字节跳动等大厂&#xff0c;目前阿里P7 深知大多数程序员&#xff0c;想要提升技能&#xff0c;往往是自己摸索成长&#xff0c;但自己不成体系的自学效果低效又漫长&#xff0c;而且极易碰到天花板技术停滞…

Win 运维 | Windows Server 系统事件日志浅析与日志审计实践

[ 重剑无锋&#xff0c;大巧不工。] 大家好&#xff0c;我是【WeiyiGeek/唯一极客】一个正在向全栈工程师(SecDevOps)前进的技术爱好者 作者微信&#xff1a;WeiyiGeeker 公众号/知识星球&#xff1a;全栈工程师修炼指南 主页博客: 【 https://weiyigeek.top 】- 为者常成&…

leetcode代码记录(Z 字形变换

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&#xff0c;排列如下&#xff1a;…

《QT实用小工具·二十五》日志重定向输出

1、概述 源码放在文章末尾 日志重定向输出&#xff0c;包含如下功能&#xff1a; 支持动态启动和停止。支持日志存储的目录。支持网络发出打印日志。支持输出日志上下文信息比如所在代码文件、行号、函数名等。支持设置日志文件大小限制&#xff0c;超过则自动分文件&#xf…

Unity笔记之下拉刷新列表

这样的效果&#xff1b; 代码&#xff1a; using System; using System.Collections; using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public class ScrollRectUpdateView : Mon…

NLP中的Transformer,一文掌握

Transformer变压器模型的出现 2017 年&#xff0c;Vaswani 等人在关键论文“Attention is All You Need”中介绍了 Transformer 模型&#xff0c;它标志着与以前占主导地位的基于递归神经网络的模型&#xff08;如 LSTM&#xff08;长短期记忆&#xff09;和 GRU&#xff08;门…

北京大学快手发布统一的图文视频生成大模型Video-LaVIT

随着多模态大语言模型&#xff08;LLMs&#xff09;的新发展&#xff0c;人们越来越关注如何将它们从图像-文本数据扩展到更具信息量的真实世界视频。与静态图像相比&#xff0c;视频为有效的大规模预训练带来了独特的挑战&#xff0c;因为需要对其时空动态进行建模。 针对视频…

【JavaEE初阶系列】——网络原理之进一步了解应用层以及传输层的UDP协议

目录 &#x1f6a9;进一步讲应用层 &#x1f388;自定义应用层协议 &#x1f388;用什么格式组织 &#x1f469;&#x1f3fb;‍&#x1f4bb;xml(远古的数据组织格式) &#x1f469;&#x1f3fb;‍&#x1f4bb;json(当下最流行得一种数据组织格式) &#x1f469;&…

[lesson31]完善的复数类

完善的复数类 完善的复数类 复数类应该具有的操作 运算&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/比较&#xff1a;&#xff0c;!赋值&#xff1a;求模&#xff1a;modulus 利用操作符重载 统一复数与实数的运算方式统一复数与实数的比较方式 注意事项 C规定赋…