【测试开发学习历程】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;

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

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

相关文章

Github 2024-03-22 开源项目日报Top10

根据Github Trendings的统计,今日(2024-03-22统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3C#项目1Java项目1Rust项目1Go项目1Shell项目1非开发语言项目1TypeScript项目1Colossal-AI:使大型人工智能模型更加实惠和快速训练的…

吴恩达机器学习笔记 二十六 决策树学习过程 独热编码one-hot

决策树的学习过程 1. 所有样本都在根结点 2.计算所有可能的特征的信息增益,选择信息增益最大的那个 3.根据选择的特征分离数据集,创造左右两支子树 4.继续进行分裂直到达到停止标准。停止标准有:一个节点只有一类样本;分裂一…

[ABC206E] Divide Both 解题记录

[ABC206E] Divide Both 解题记录 题意简述 给定整数 L , R L,R L,R,求满足以下条件的数对 ( x , y ) (x,y) (x,y) 的数量。 x , y x,y x,y 不互质 x ∤ y x \nmid y x∤y 且 y ∤ x y \nmid x y∤x 题目分析 正难则反,考虑用所有的满足第一条性质的…

javascript中Date相关方法

Date 对象用于处理日期和时间 序号方法描述1new Date()获取当前时间2parse()返回毫秒数(从 1970-1-1 00:00:00开始)3getDate()返回月中的第几天(从 1 到 31)4getFullYear()返回年份5getMonth()返回月份(从 0-11&#x…

1Panel应用推荐:DataEase开源数据可视化分析工具

1Panel(github.com/1Panel-dev/1Panel)是一款现代化、开源的Linux服务器运维管理面板,它致力于通过开源的方式,帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用,1Panel特别开通应用商店&am…

Django在日志中使用AdminEmailHandler发送邮件(同步),及celery异步发送日志邮件的实现

目录 一、使用AdminEmailHandler实现发送日志通知邮件 1,配置日志项 2,配置邮件项 3,在视图里使用日志 二、继承AdminEmailHandler使用celery实现异步发送邮件 1,安装配置celery 2,继承AdminEmailHandler类&…

【excel】常用的50个函数与基础操作(查询函数)

查询函数 (1)VLOOKUP与MATCH综合 1. VLOOKUP 按列纵向查找,输出单元格内容 VLOOKUP(用谁找,在哪找,在哪列,精确/模糊) 条件用&连接 VLOOKUP(用谁找,在…

网络安全知识核心之TCP与UDP区别

TCP 面向连接(如打电话要先拨号建立连接)提供可靠的服务;UDP 是无连接的,即发送数据之前不需要建立连接,;UDP 尽最大努力交付,即不保证可靠交付。(由于 UDP 无需建立连接,因此 UDP 不会引入建立…

HTML元素语义化(二)及补充

文章目录 HTML5新增元素 - audio**常见属性**代码展示 audio支持的音频格式input元素的扩展内容新增全局属性data–css属性 –white–spacecss属性–text–overflow HTML5新增元素 - audio HTML 元素用于在文档中嵌入音频内容, 和video的用法非常类似 常见属性 常见属性 值…

ts js vue 验证文件 MD5 值 spark-md5

ts js vue 验证文件 MD5 值 spark-md5 如何在前端中验证要上传的文件的 md5 值 一、安装 spark-md5 插件 需要用到 spark-md5 这个插件 官方 github:https://github.com/satazor/js-spark-md5/tree/master yarn add spark-md5 // 或 npm i spark-md5使用的时候引…

基于python+vue文学名著分享系统的设计与实现flask-django-nodejs-php

随着世界经济信息化、全球化的到来和互联网的飞速发展,推动了各行业的改革。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、动态的、交互友好的、高效的文学名著分享系统。当前的信息管理存在工作效率…

编程题:二叉树层次遍历(Java)

有一棵二叉树,每个节点由一个大写字母标识(最多26个节点)。 现有两组字母,分别表示后序遍历(左孩子->右孩子->父节点)和中序遍历(左孩子->父节点->右孩子)的结果,请你输…

有没有适合pr剪辑视频使用的蓝色魔法火焰能量特效素材模板

12个蓝色魔法火焰能量特效VFX元素pr素材模板。 可定制的能量电荷、灰尘等离子体和发光的电火花是游戏电影、电影特效或有影响力的视频内容的理想选择,增添了史诗般的电影质量。无论是神秘的爆炸、闪闪发光的闪电还是旋转的漩涡,每一部动画都是力量的灯塔…

Git版本控制

这是两个学习Git推荐必看的文档,第一个链接是Git的官方权威文档,第二个链接是国内程序员在开发中,总结的Git快速入门教程,掌握这个,也足够应付在工作中的场景。 Git权威书籍《ProGit》中文版https://gitee.com/progit…

让天下没有难学的大模型!我整理一份大模型技术知识图谱!

最近陆续有一些同学反馈,感觉大模型知识点太多了,找不到头绪。 今天我整理一份大模型技术以及应用的知识图谱,让大家轻松学习大模型,喜欢点赞、收藏、关注。 另外,技术交流可以文末加入我们。 大模型的预训练技术 …

Android Studio 编译报错 ( Could not find com.android.tools.build:gradle:4.2.1.)

检查下根目录下的 build.gradle 配置 , 是否只配置了 jcenter 仓库 ,加上 google()mavenCentral() 重新编译试一下

ArrayList的常用方法

ArrayList是Java中常用的动态数组类&#xff0c;它提供了一系列用于操作和管理数组的方法。下面是一些ArrayList常用方法的介绍&#xff1a; add()方法&#xff1a;向ArrayList中添加元素&#xff0c;可以指定位置添加元素或者在末尾添加元素。 ArrayList<String> list …

全网最靠谱的短网址平台,你知道几个?

在当今互联网时代&#xff0c;短网址平台成为了人们分享链接的常用工具。它们不仅可以将冗长的网址压缩为简洁的短链接&#xff0c;还能提供更多的功能和优势。在众多的短网址平台中&#xff0c;有几个平台以其可靠性和出色的性能脱颖而出。今天&#xff0c;我们就来介绍几个全…

跟我学C++中级篇——STL的中的删除

一、介绍 在STL中一般删除的方式有两类&#xff0c;一种是使用全局的std::remove(remove_if类似)&#xff0c;一种是使用容器自带的erase&#xff0c;前者其实并没有真正的删除数据&#xff0c;而后者则是在移动时&#xff0c;会有一些细节的处理&#xff0c;否则要么程序崩溃…

《数字人》三个灵魂拷问 是什么?为什么?怎么用?

数字人的出现和发展是由于人工智能和计算机图形学等技术的进步&#xff0c;使得我们可以更好地模拟和创造人类的外貌、行为和交流能力。 1.数字人是什么&#xff1f; 数字人通常是指利用计算机技术和人工智能技术创建的虚拟人物或角色。这些数字化的人物可以具有各种外貌、行为…