【测试开发学习历程】MySQL增删改操作 + 备份与还原 + 索引、视图、存储过程
前言:
SQL内容的连载,到这里就是最后一期啦!
如果有小伙伴要其他内容的话,我会追加内容的。(前提是我有学过,或者能学会)
接下来,我们就要开始python内容的学习了 ~ ~
目录
1 MySQL增删改操作
1.1 数据添加操作
1.1.1 插入完整的行
1.1.2 插入多行
1.2 数据更新操作
1.3 数据删除操作
1.4 清空表操作
1.5 SQL语言的分类
1.5.1 DML
1.5.2 DDL
1.5.3 DCL
2 备份与还原
2.1 备份数据库与表
2.2 还原数据库与表
3 索引、视图、存储过程
3.1 索引
3.1.1 普通索引
3.1.2 唯一索引
3.2 视图
3.2.1 创建视图
3.3.2 删除视图
3.3 存储过程
1 MySQL增删改操作
1.1 数据添加操作
使用insert into语句来完成插入操作,插入操作可以采用下列方式:
- 插入完整的行;
- 插入行的一部分;
- 插入多行;
- 插入某些查询的结果。
1.1.1 插入完整的行
格式为:insert into 表名 (列名) values (各个列的值);
在插入行时,MySQL将用values列表中的相应值填入列表中的对应项。values的第一个值对应于第一个指定的列名。因为提供了列名,values必须以其指定的次序匹配指定的列名,不一定按照各个列出现在实际表中的次序,优点是:即使表的结构改变,此insert语句仍然能正确使用;
插入语句中可以省略列名,直接写成insert into 表名 values (各个列的值);但这种情况下必须确保所有列都插入数据。
1.1.2 插入多行
例中单条insert语句中有多组值,每组值用一对圆括号括起来,用逗号分隔。
insert可以插入由select查询出来的值,该方法由一条insert语句和一条select语句组成。
格式:insert into 表A (表A列1,表A列2) select 表B列1,表B列2 from 表B
1.2 数据更新操作
为了更新表中的数据,可使用update语句;
update语句可以更新表中特定的行,也可以更新表中所有的行;
格式:update 表名 set 列名=XXX where YYY;
注意:update语句如果后面不跟where语句的话,将修改表中所有的行,使用的时候需要小心,以免产生错误的修改。
1.3 数据删除操作
1.4 清空表操作
从一个表中删除数据,使用delete语句,delete的使用方法有以下两种:
- 从表中删除特定的行(通过where子句指定条件);
- 从表中删除所有的行(不带where子句)
格式:delete from 表名 where XXX;
删除表中特定的行,通过使用where子句来指定删除哪一行,比如删除customers表中ID为1006的用户:delete from customers where cust_id=1006;
注意:数据库的删除操作属于高危操作,删除前最好备份相应的表,备份命令 create table products_bak select * from products;
1.5 SQL语言的分类
SQL语言可分为两类:DML(数据库操作语言)和DDL(数据库描述语言)
1.5.1 DML
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE FROM - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据
1.5.2 DDL
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
DROP DATABASE - 删除数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
1.5.3 DCL
GRANT - 授权
REVOKE - 取消授权
2 备份与还原
2.1 备份数据库与表
备份数据库
mysqldump -u root -p 数据库名 >database.sql
备份表
mysqldump -u root -p 数据库名 表名 >table.sql
2.2 还原数据库与表
source进入mysql命令窗口
mysql -u用户名 -p密码;
create database newdb;#创建一个要导入的数据库
use newdb;
source data.sql;
3 索引、视图、存储过程
3.1 索引
索引:创建索引可以提高数据查询的速度,但会降低增删改数据的速度。
3.1.1 普通索引
这是最基本的索引,它没有任何限制。
#创建索引cust_index
CREATE INDEX cust_index on customers(cust_name);
3.1.2 唯一索引
索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
CREATE UNIQUE INDEX cust_name_index ON customers(cust_name);
查看customers表的索引
SHOW INDEX FROM customers;
删除索引cust_index
DROP INDEX cust_index ON customers;
数据库建立索引常用的规则如下:
- 表的主键、外键必须有索引;
- 数据量大的表应该有索引;
- 经常与其他表进行联结的表,在联结字段上应该建立索引;
- 经常出现在Where子句中的字段,应该建立索引;
3.2 视图
视图:视图是虚拟的表。使用视图可以重用SQL语句,简化复杂的SQL操作。
#查询购买了TNT2的客户的姓名、联系人
SELECT cust_name,cust_contact
FROM orderitems
INNER JOIN orders ON orderitems.order_num=orders.order_num
INNER JOIN customers ON orders.cust_id=customers.cust_id AND prod_id='TNT2';
3.2.1 创建视图
CREATE VIEW productcustomers AS SELECT
cust_name,cust_contact,prod_id
FROM orderitems
INNER JOIN orders ON orderitems.order_num=orders.order_num
INNER JOIN customers ON orders.cust_id=customers.cust_id;
查询购买了TNT2的客户的姓名、联系人
SELECT cust_name,cust_contact FROM productcustomers WHERE prod_id='TNT2';
3.3.2 删除视图
DROP VIEW productcustomers;
3.3 存储过程
存储过程:一组为了完成特定功能的SQL 语句集,用户可以通过调用存储过程来实现相应的操作。好处是简化复杂的操作。
#创建存储过程productpricing,这个存储过程不带参数
CREATE PROCEDURE productpricing()
BEGINSELECT AVG(prod_price) as priceaverageFROM products;
END;#调用存储过程productpricing
CALL productpricing();
#创建一个带参数的存储过程,OUT表示参数是从存储过程中传出来的
CREATE PROCEDURE productprice(OUT pricemin DECIMAL(8,2),OUT pricemax DECIMAL(8,2),OUT priceavg DECIMAL(8,2)
)
BEGINSELECT MIN(prod_price) INTO pricemin FROM products;SELECT MAX(prod_price) INTO pricemax FROM products;SELECT AVG(prod_price) INTO priceavg FROM products;
END;#调用存储过程
CALL productprice(@pricemin,@pricemax,@priceavg);
SELECT @pricemin,@pricemax,@priceavg;
#调用存储过程
CALL productprice(@pricemin,@pricemax,@priceavg);
SELECT @pricemin,@pricemax,@priceavg;#查看所有的存储过程
SHOW PROCEDURE STATUS;
相关文章:

【测试开发学习历程】MySQL增删改操作 + 备份与还原 + 索引、视图、存储过程
前言: SQL内容的连载,到这里就是最后一期啦! 如果有小伙伴要其他内容的话,我会追加内容的。(前提是我有学过,或者能学会) 接下来,我们就要开始python内容的学习了 ~ ~ 目录 1 …...

StarRocks 助力金融营销数字化进化之路
作者:平安银行 数据资产中心数据及 AI 平台团队负责人 廖晓格 平安银行五位一体,做零售金融的领先银行,五位一体是由开放银行、AI 银行、远程银行、线下银行、综合化银行协同构建的数据化、智能化的零售客户经营模式,这套模式以数…...

医院预约挂号系统设计与实现|jsp+ Mysql+Java+ Tomcat(可运行源码+数据库+设计文档)
本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,…...

IIS7/iis8/iis10安装II6兼容模块 以windows2022为例
因安全狗的提示 安全狗防护引|擎安装失败 可能原因是: IIS7及以上版本末安装1IS6兼容模块! .所以操作解决 如下. 在开始菜单中,找到服务器管理器.找到下图的IIS,右键添加角色和功能,找到web服务器的管理工具选项,iis6管理兼容性 打钩并安装. 如下图...

Python爬虫-批量爬取星巴克全国门店
前言 本文是该专栏的第22篇,后面会持续分享python爬虫干货知识,记得关注。 本文笔者以星巴克为例,通过Python实现批量爬取目标城市的门店数据以及全国的门店数据。 具体的详细思路以及代码实现逻辑,跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地址:aHR0cHM…...
C/C++ 设置Socket的IP_TOS选项
IP TOS选项是指示IP报文转发的优先级,QOS控制的一种,常规的IP协议TOS都为0,就是普通报文。 设置: IPV4/TOS设置(Socket),IPTOS_LOWDELAY 表示FLASH优先级(一般用在游戏,…...
【tensorflow_gpu】安装合集
tensorflow_gpu与CUDA、cuDNN、Python版本对应关系 版本对应列表 tensorflow的清华源wheel tensorflow的清华源wheel列表 tensorflow_gpu安装指令 使用conda安装指定版本的tensorflow_gpu conda install tensorflow-gpu1.2.0使用wheel安装指定版本的tensorflow_gpu pip …...
Go 实现fsnotify
【官方操作】 package mainimport ("log""github.com/fsnotify/fsnotify" )func main() {watcher, err : fsnotify.NewWatcher()if err ! nil {log.Fatal(err)}defer watcher.Close()done : make(chan bool)go func() {for {select {case event, ok : <…...

Flink GateWay、HiveServer2 和 hive on spark
Flink SQL Gateway简介 从官网的资料可以知道Flink SQL Gateway是一个服务,这个服务支持多个客户端并发的从远程提交任务。Flink SQL Gateway使任务的提交、元数据的查询、在线数据分析变得更简单。 Flink SQL Gateway的架构如下图,它由插件化的Endpoi…...
阿里云国际设置黑白名单(针对高防实例IP)
DDoS高防支持针对高防实例设置黑名单和白名单,以拦截或放行指定IP的访问请求,配置后对该实例所有的业务生效。本文九河云介绍如何配置黑白名单。 功能介绍 黑名单IP的访问流量将被DDoS高防实例直接丢弃。白名单IP的访问流量将被DDoS高防实例直接放行。…...

Docker 入门使用说明
Docker 入门使用说明 Docker 安装 Docker 官网:Docker Docker 安装说明:Docker 安装说明 这里由于 Docker 在实时更新,所以每次安装 Docker 用来导入 key 的链接可能会有变化,这里就参考官方的安装方法即可 Docker 常用命令说…...

UE5 LiveLink 自动连接数据源,以及打包后不能收到udp消息的解决办法
为什么要自动连接数据源,因为方便打包后接收数据,这里我是写在了Game Instance,也可以写在其他地方,自行替换成Beginplay和Endplay 关于编辑器模式下能收到udp消息,打包后不能收到消息的问题有两点需要排查,启动打包后…...

国内ip切换是否合规?
在网络使用中,IP地址切换是一种常见的行为,可以用于实现隐私保护、访问地域限制内容等目的。然而,对于国内用户来说,IP地址切换是否合规一直是一个备受关注的话题。在中国,网络管理严格,一些IP切换行为可能…...

Flutter 3.13 之后如何监听 App 生命周期事件
在 Flutter 中,您可以监听多个生命周期事件来处理应用程序的不同状态,但今天我们将讨论 didChangeAppLifecycleState 事件。每当应用程序的生命周期状态发生变化时,就会触发此事件。可能的状态有 resumed 、 inactive 、 paused 、 detached …...
基于docker创建深度学习开发环境
基于docker创建深度学习开发环境 记录几个链接 第一步:配置docker环境,此处大把教程,不再赘述第二步:拉取nvidia做好的cuda和cudnn镜像: docker pull nvcr.io/nvidia/cuda:12.2.0-devel-ubuntu20.04如果有其他需求&a…...

Linux系统——硬件命令
目录 一.网卡带宽 1.查看网卡速率——ethtool 网卡名 2.查看mac地址——ethtool -P 网卡名 二、内存相关 1.显示系统中内存使用情况——free -h 2.显示内存模块的详细信息——dmidecode -t memory 三、CPU相关 1.查看CPU架构信息——lscpu 2.性能模式 四、其他硬件命…...

R语言Meta分析核心技术:回归诊断与模型验证
R语言作为一种强大的统计分析和绘图语言,在科研领域发挥着日益重要的作用。其中,Meta分析作为一种整合多个独立研究结果的统计方法,在R语言中得到了广泛的应用。通过R语言进行Meta分析,研究者能够更为准确、全面地评估某一研究问题…...

动态规划Dynamic Programming
上篇文章我们简单入门了动态规划(一般都是简单的上楼梯,分析数据等问题)点我跳转,今天给大家带来的是路径问题,相对于上一篇在一维中摸爬滚打,这次就要上升到二维解决问题,但都用的是动态规划思…...

详解机器学习概念、算法
目录 前言 一、常见的机器学习算法 二、监督学习和非监督学习 三、常见的机器学习概念解释 四、深度学习与机器学习的区别 基于Python 和 TensorFlow 深度学习框架实现简单的多层感知机(MLP)神经网络的示例代码: 欢迎三连哦! 前言…...

语音转文字——sherpa ncnn语音识别离线部署C++实现
简介 Sherpa是一个中文语音识别的项目,使用了PyTorch 进行语音识别模型的训练,然后训练好的模型导出成 torchscript 格式,以便在 C 环境中进行推理。尽管 PyTorch 在 CPU 和 GPU 上有良好的支持,但它可能对资源的要求较高&#x…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...

OPENCV图形计算面积、弧长API讲解(1)
一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积,这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能,常用的API…...