数据库讲解---(数据更新、视图、数据控制)【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,一经查实,立即删除!

相关文章

习题4-1 求奇数和

本题要求计算给定的一系列正整数中奇数的和。 输入格式: 输入在一行中给出一系列正整数&#xff0c;其间以空格分隔。当读到零或负整数时&#xff0c;表示输入结束&#xff0c;该数字不要处理。 输出格式: 在一行中输出正整数序列中奇数的和。 输入样例: 8 7 4 3 70 5 6 …

R 格式(蓝桥杯)

文章目录 R 格式【问题描述】高精度乘法高精度加法 R 格式 【问题描述】 小蓝最近在研究一种浮点数的表示方法&#xff1a;R 格式。对于一个大于 0 的浮点数 d&#xff0c;可以用 R 格式的整数来表示。给定一个转换参数 n&#xff0c;将浮点数转换为 R格式整数的做法是&#…

网络安全-自学笔记

一、自学网络安全学习的误区和陷阱 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;通过…

探秘ChatGPT:写作论文的新奇技巧

ChatGPT无限次数:点击直达 探秘ChatGPT&#xff1a;写作论文的新奇技巧 近年来&#xff0c;随着人工智能技术的发展&#xff0c;ChatGPT作为一种强大的自然语言处理工具越来越受到关注。在学术界和工业界&#xff0c;人们开始探索如何利用ChatGPT这样的模型来辅助写作&#xf…

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

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

DevOps(二)Jenkins详细介绍和15天学习计划

Jenkins 是一个开源的自动化服务器&#xff0c;广泛用于持续集成和持续部署&#xff08;CI/CD&#xff09;的自动化过程中。它支持开发者在软件开发的各个阶段自动构建、测试并部署应用程序&#xff0c;从而提高开发效率并减少错误。下面详细介绍Jenkins: 一、核心功能 1、构…

【洛谷 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;很多直达的交…

webpack + ts 搭建 web 应用

初始化 npm init -y一、 依赖下载 typescript相关&#xff1a; ts-loader: ts文件加载器 npm i typescript ts-loader -Dwebpack相关 webpack-cli: 命令行工具 webpack-dev-server&#xff1a;webpack开发服务器 webpack-merge : webpack配置合并 clean-webpack-plugin: we…

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 】- 为者常成&…

mysql 如何查看一条SQL被回滚了

MySQL中查看一条SQL是否被回滚&#xff0c;通常不是一个直接的过程&#xff0c;因为MySQL本身并不提供直接的方式来追踪单个SQL语句的执行和回滚情况。但是&#xff0c;你可以通过一些方法和工具来间接地达到这个目的。下面&#xff0c;我将从多个角度介绍如何分析和判断SQL语句…

OpenCV2之简单处理视频

OpenCV2 https://www.geeksforgeeks.org/opencv-python-tutorial/ 视频采集 import cv2currentframe 0cap cv2.VideoCapture(0)while cap.isOpened():ret, frame cap.read()cv2.imshow(frame, frame)# 隔多少帧保存一张图片if currentframe % 10 0:cv2.imwrite(f{TEMP_PAT…