网络安全快速入门(十)MySQL拓展操作

news2025/1/18 3:31:38

10.1.0前言

前面我们已经对用户操作以及库,表操作有了基础的认识,接下来我们来在之前已经学过的一些操作进行进一步拓展,本章我们主要了解以下几个知识点:

  • 数据库设计方法
  • 视图
  • 存储过程
  • 事务

我们开始本章的内容吧

10.2 数据库设计方法

(注意:本小节仅仅带大家做一个了解)

前面我们在第七章的时候曾经提到过,数据库分为两种:

  • 关系型数据库
  • 非关系型数据库

而我们之前也提了一嘴,关系型数据库(是一个结构化数据库,通过关系模型来组织数据的数据库)。而这种关系模型被称为E-R模型(Entity-Relationship Model)实体-联系模型。

(在这里我们对er关系模型进做一个简单的了解,了解目的仅仅为了通过E-R模型将两个表进行主外键关联,因此我们不会过多赘述,希望各位读者见谅!)

E-R模型基本元素:

  • 实体
  • 属性
  • 标识符
  • 联系

这里我们设想做一个设想:

  • 实体就相当于表中的全部数据
  • 属性就相当于表中字段
  • 标识符可以理解为主键外键
  • 联系的话就相当于表与表之间的联系

而表与表之间的联系类型又可以分为下面几种类型:

  • 一对一
  • 一对多
  • 多对多

这里我们只用一对一联系举例,其他联系的话建议点击下面链接

数据库设计之E-R模型

我们只需要知道,我们是通过一个主键和一个外键将表与表进行连接。

这里我们要扩展一个小知识了:

  • 主键:是用于在表中唯一的标识一个字段
  • 外键:外键是另外一个表主键,通过使用外键,可以将两个表关联起来

这里需要注意:

         外键和外键可以进行连接,外键和主键也可以进行连接,主键和主键之间也可以进行连接。但是这里需要注意的是,主键和主键连接过程中,会默认将前表设为主表,两个表的全部内容都显示出来,形成一个自然连接。

这里可能就有同学有疑问了,我们通过链接查询就可以获取连接结果了,为什么还要使用这个联接呢?这离我们要知道的是,链接查询仅仅是我们所认为可以联合的链接,计算机并不会认为可以形成链接。而在该方法中,是数据库通过表与表进行连接,该链接一般来讲不会轻易丢失!!!

我们现在看一下连接格式

foreign key (字段名) references 表名2(字段名)

我们举个例子来看一下具体如何联系

我们先创建一个表tb2,创建格式如下

create table tb2( 
classid int primary key, 
name char(30));

然后创建表tb1,并与tb2通过classid进行链接。使用以下命令

create table tb1( 
id int primary key, 
name char(30), 
classid int, 
foreign key(classid) references tb2(classid)) 

我们来看结果

连接成功

        因为能力有限,笔者也仅仅让各位了解一下这个功能,如果想了解更多关于E-R模型和表结构的知识,可以查看点击下面链接进行进一步学习

关系型数据库与非关系型数据库

MYSQL数据库主键和外键,内连接和外连接,关联子查询

数据库设计之 E-R 模型

10.3 视图

        前面我们在进行用户授权时我们知道,在对用户进行授权时我们会给他们一整张表的所有权限,而在工作中我们可能只需要给这张表的部分权限授权给用户,这个时候我们就要用到视图了。

视图是什么?

  • 视图可以认为是一张表
  • 但是这表表存在内存中的虚表,断电后会消失

视图的作用:

        通过视图,可以让用户只能访问数据库中一部分数据(需要给用户授权查看视图权限!)

说白了,就是让目标用户只能看到给定表中的给定的数据,并且该表存在于内存中,断电就丢失。

我们直接来看格式

创建视图格式:

create view 视图名 as select 语句

还是老规矩,举例演示一下

现有表scores,表中数据如下

我们创建一个视图stuid3,要求只能查看stuid为三的视图

create view stuid3 as select * from scores where stuid=3

我们来看一下创建好的视图

ok,视图没毛病,接下来我们给用户jerry进行授权,让他可以查看该视图

grant all on hellodb.stuid3 to "jerry"@"localhost" identified by "123456"

接下来我们来看一下jerry视角

表中没数据,视图中可以查看,没毛病。下一个

10.4 调用/使用存储过程

这个东西类似于其他计算机语言的函数,通过写一些简单的脚本存放在存储过程命中,使用时进行调用,一般用于想数据库内快速写入大量数据。

我们还是先来看一下格式:

定义存储过程格式:

delimiter // #存储过程的开头,定义一个符号
create procedure 存储过程程() #定义存储过程名字
begin
sql语句
end //

调用/使用存储过程的格式:

call 存储过程名()

接下来我们举例来看理解这个东西

现有表tb1,表结构如下

现在我们通过存储过程向表中插入一千条数据:

命令格式及每行语义如下

delimiter // #定义开头
create procedure m3() #创建存储过程,m3
begin #开始存储过程
declare i int; #declare定义变量i,类型是整型
set i = 0; #设置将i的值为0
while i<1000 do #当i小于1000是执行循环
insert into tb1(id) values(i);
#向表中插入数据
set i = i + 1; #将i的值加1
end while; #循环结束
end // #定义结束
delimiter;

我们开始调用该存储过程

call m3()

我们开始看结果

id从0到999,插入了一千条数据,证明程序成功

注意:在使用数据存储中,必须将定义存储过程写在调用数据存储过程的上方,否则会运行不起来!!!

10.5 事务

        事务,说白了就是将数据库的多个命令放到一起进行运行,从而能一下子做好多事情。具体特点如下:

  • 将多个sql语句组合成一个整体,这个整体就是一个事物
  • 事物中的所有语句要么都执行,要么都不执行
  • 通过使用事物,可以保证数据的一致性

事务有以下两个操作:

  • 启动事务
  • 提交事物
  • 回滚事物

启动事务

先启动事务才能执行操作,启动事务命令如下:

begin

提交事务

在启动事务之后,我们写完命令就可以通过提交命令对事务进行提交以便进行数据执行。数据执行的命令如下:

commit

在执行提交事务时需要注意以下几点:

  • 让事物中的sql语句,真正的生效
  • 如果使用了事物,那么在事物提交之前,其他用户是看不到事务中的操作的

在使用提交事务之后,我们会发现难免会有一些sql语句没有执行成功,因此,为了保持数据的一致性,我们可能要重新检查命令去执行,因此我们要用到事务的回滚操作

事务回滚:

  • 事务中的语句,如果只有部分执行成功,那么就需要将这个事物进行回滚操作
  • 回滚:将数据恢复到执行之前的状态

说白了,这个命令类似于游戏中的重新开始,丢失全部数据,重新通过事务进行提交,从而保持数据的一致性。

回滚事务格式

rollback

(这里我们专业不是很常用,因此我们仅仅做了解,如需要了解详细内容请查看下面博客)

MySQL事务(transaction) (有这篇就足够了..)

好了,MySQL到这里为止就讲完了,接下来我们将将继续深入Linux,创作过程中难免有些问题,如有不足,请指正。最后感谢各位的观看,我们linux见!!0v0

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

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

相关文章

string类篇超超超详解,40余个成员函数详细解释(图文)!看完包会!!

本篇目标 constructoroperatorElements accessIteratorsCapacityModifiersString operationsmember contants其他函数 一、constructor(对象的创建) void StrTest1() {string s1;//直接构造cout << s1 << endl;//string里内置了流插入、流提取的函数重载&#xf…

C# 在Excel中添加筛选器并执行筛选 (日期筛选、文本筛选、数字筛选)

自动筛选器是 Excel 中的一个基本但极其有用的功能&#xff0c;它可以让你根据特定的条件来自动隐藏和显示你的数据。当有大量的数据需要处理时&#xff0c;这个功能可以帮你快速找到你需要的信息&#xff0c;从未更加有效地分析和处理相关数据。 下面将介绍如何使用免费.NET …

depcheck检查项目中未被使用的依赖

depcheck是一个用于分析项目中依赖项的工具&#xff0c;可以查看&#xff1a;每个依赖项是如何使用的&#xff0c;哪些依赖项是无用的&#xff0c;以及哪些依赖项在package.json 1、安装 npm install -g depcheck # 必须全局安装2、可配置文件.depcheckrc&#xff08;不配置 直…

SCP收容物171~180

注 &#xff1a;此文接SCP收容物161~170,本文只供开玩笑 ,与steve_gqq_MC合作 --------------------------------------------------------------------------------------------------------------------------------- 目录 scp-171 scp-172 scp-173 scp-174 scp-175 …

第五十八节 Java设计模式 - 适配器模式

Java设计模式 - 适配器模式 我们在现实生活中使用适配器很多。例如&#xff0c;我们使用存储卡适配器连接存储卡和计算机&#xff0c;因为计算机仅支持一种类型的存储卡&#xff0c;并且我们的卡与计算机不兼容。 适配器是两个不兼容实体之间的转换器。适配器模式是一种结构模…

MySQL用SQL取三列中最大的数据值

1、有如下数据&#xff1a; ABC000097.0600330.72330.720069.650027.8827.85086.92086.92219.42219.4219.41 需要展示为如下形式&#xff1a; ABC结果列0000097.06097.060330.72330.72330.7200669.65009.6527.8827.85027.8886.92086.9286.92219.42219.4219.41219.42 解决办…

OpenText ETX 助力 SMS 集团提高生产力、降低成本并实现全球协作

OpenText ETX 助力 SMS 集团提高生产力、降低成本并实现全球协作 SMS 集团存在的挑战 需要一个可以在全球范围内轻松访问的解决方案&#xff1b;需要一个系统&#xff0c;能够无缝运行图形要求苛刻的基于服务器的应用程序&#xff1b; 结果 1、通过全球用户访问数据&#x…

x264 帧类型代价计算原理:slicetype_slice_cost 函数分析

x264 x264 是一个开源的视频编码库,它实现了H.264/AVC标准。H.264是一种广泛使用的压缩标准,用于视频流、视频下载、蓝光光盘以及许多其他形式的数字视频分发。x264 以其高压缩效率和良好的视频质量而著称,是许多视频编辑软件和视频播放器的默认编解码器。 以下是关于 x26…

做一个属于自己的软件-pyside6快速上手教程

首先环境需要安装python3和pip&#xff0c;软件使用pycharm&#xff0c;安装也都很简单 首先需要安装pyside6,在终端执行&#xff1a; pip install pyside6 然后进入可视化编辑界面 pyside6-designer 进入后创建即可 可以从左侧点击鼠标拉组件进入到中间的工作区&#xff…

服务器通的远程桌面连接不上,关于服务器通畅但远程桌面连接不上问题的专业分析

在日常的企业IT管理中&#xff0c;服务器远程桌面连接是一个重要的操作功能。然而&#xff0c;有时会出现服务器网络通畅&#xff0c;但远程桌面无法连接的情况。 问题分析 1. 防火墙或安全组设置问题&#xff1a;服务器的防火墙或安全组可能阻止了远程桌面连接的端口&#xf…

人工神经网络(科普)

人工神经网络&#xff08;Artificial Neural Network&#xff0c;即ANN &#xff09;&#xff0c;是20世纪80 年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象&#xff0c; 建立某种简单模型&#xff0c;按不同的连接方式组成不同的网络。在工程…

关于使用git拉取gitlab仓库的步骤(解决公钥问题和pytho版本和repo版本不对应的问题)

先获取权限&#xff0c;提交ssh-key 虚拟机连接 GitLab并提交代码_gitlab提交mr-CSDN博客 配置完成上诉步骤之后&#xff0c;执行下列指令进行拉去仓库的内容 sudo apt install repo export PATHpwd/.repo/repo:$PATH python3 "实际路径"/repo init -u ssh://gitxx…

JVM调优工具命令详解(JVM调优看这一篇就够了)

Jmap 此命令可以用来查看内存信息,实例个数以及占用内存大小 1 jmap ‐histo 14660 #查看历史生成的实例 2 jmap ‐histo:live 14660 #查看当前存活的实例,执行过程中可能会触发一次full gc 打开log.txt,文件内容如下: num:序号 instances:实例数量 bytes:占用空间大小 class…

PostgreSQL源码安装

文章目录 一、先决条件检查二、源码安装1、获取源代码2、编译安装1.运行 configure2.运行make 3、PostgreSQL的配置4、安装contrib目录下的工具 三、初始化数据库1、创建数据库管理员2、创建数据库实例3、启动和停止数据库4、设置数据库密码 四、PostgreSQL的简单配置1、pg_hba…

重新定义社交:Facebook的未来愿景与颠覆力量

在当今数字化社会中&#xff0c;Facebook作为全球最大的社交媒体平台&#xff0c;其未来愿景和颠覆力量备受关注。本文将深入探讨Facebook如何重新定义社交&#xff0c;以及其未来发展中的新趋势和影响。 1. 智能化社交体验 Facebook致力于利用人工智能技术提供更智能、个性化…

智慧公厕的未来价值分析和创新设计

智慧公厕正在逐渐成为现代城市建设的重要组成部分。通过全面的数据云端化和自动化技术&#xff0c;智慧公厕实现了高效的数据分析和协作&#xff0c;提升了运行效率和管理水平。未来&#xff0c;智慧公厕将以“景厕融合”的目标发展&#xff0c;结合前沿科技和创新设计&#xf…

数据仓库作业六:第9章 分类规则挖掘

目录 第9章 分类规则挖掘第一题第二题第三题第四题 第9章 分类规则挖掘 第一题 1、设网球俱乐部有打球与气候条件的历史统计数据如下表1所示。它有“天气”、“气温”、“适度”和“风力”4个描述气候的条件属性&#xff0c;类别属性为“是”与“否”的二元取值&#xff0c;分…

【八大排序算法】插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序

文章目录 一、排序的相关概念二、排序类型三、排序算法实现插入排序1.直接插入排序2.希尔排序 选择排序3.简单选择排序4.堆排序 交换排序5.冒泡排序6.快速排序递归实现非递归实现 7.归并排序递归实现非递归实现 8.计数排序 四、总结 一、排序的相关概念 排序&#xff1a;根据数…

护照OCR识别接口如何对接

护照OCR识别接口也叫护照文字识别OCR,指的是传入护照照片&#xff0c;精准识别静态护照图像上的文字信息&#xff0c;包括姓名、签发地点、签发机关、护照号码、签发日期等信息。那么护照文字识别OCR接口如何对接呢&#xff1f; 首先我们找到一家有护照OCR识别接口的服务商数脉…

618购物狂欢,爆款清单来袭!这些好物你绝对不能错过!

一年一度的618购物狂欢&#xff0c;无疑是每年消费者们翘首以盼的盛大节日。每到618&#xff0c;各大电商平台纷纷推出诱人的优惠活动&#xff0c;琳琅满目的商品让人眼花缭乱。在这个充满惊喜与期待的时刻&#xff0c;我们为您精心挑选了一份爆款清单&#xff0c;这些好物不仅…