【测试开发学习历程】MySQL增删改操作 + 备份与还原 + 索引、视图、存储过程

news2024/12/28 19:18:54

前言:

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()
BEGIN
  SELECT AVG(prod_price) as priceaverage
  FROM products;
END;

#调用存储过程productpricing
CALL productpricing();
#创建一个带参数的存储过程,OUT表示参数是从存储过程中传出来的
CREATE PROCEDURE productprice(
	OUT pricemin DECIMAL(8,2),
	OUT pricemax DECIMAL(8,2),
	OUT priceavg DECIMAL(8,2)
)
BEGIN
	SELECT 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.coloradmin.cn/o/1537834.html

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

相关文章

复旦大学MBA:iLab项目探寻科技创新 助力企业出海

2024年2月底,新一轮复旦MBA iLab商业咨询项目(以下简称iLab项目)正式拉开序幕。      科创大时代,如何于变局中创新突破、绘就商业“蓝图”?怎样把握ESG投资机遇,创造可持续发展的未来?如何…

云计算系统等保测评对象和指标选取

1、云计算服务模式与控制范围关系 参考GBT22239-2019《基本要求》附录D 云计算应用场景说明。简要理解下图,主要是云计算系统安全保护责任分担原则和云服务模式适用性原则,指导后续的测评对象和指标选取。 2、测评对象选择 测评对象 IaaS模式 PaaS模式…

Sphinx + Readthedocs 避坑速通指南

博主在学习使用 Sphinx 和 Read the docs 的过程中, 碰到了许多奇葩的 bug, 使得很简单的任务花费了很长的时间才解决,现在在这里做一个分享,帮助大家用更少的时间高效上线文档的内容。 总的来说, 任务分为两个部分: …

C#、.NET版本、Visual Studio版本对应关系及Visual Studio老版本离线包下载地址

0、写这篇文章的目的 由于电脑的环境不同,对于一个老电脑找到一个适配的vscode环境十分不易。总结一下C#、.NET、Visual Studio版本的对应关系,及各个版本Visual Studio的下载地址供大家参考 1、C#、.NET版本、Visual Studio版本对应关系如下 2、Visua…

C++初阶:string类相关练习题

目录 1. 字符串相加2. 反转字母3. 字符串中唯一字母4. 字符串中最后一个单词5. 验证回文串6. 反转字符II7. 反转字符串中的单词8. 字符串相乘 1. 字符串相加 题目信息: 题目连接: 字符串相加 class Solution { public:string addStrings(string num1, s…

PHP自动获取视频时长的方法

摘要 最近在给客户开发短视频项目模块中遇到自动获取上传视频的时长并用于外部展示的需求。 刚开始想到用比较笨的方法,就是上传之前手动写入视频文件的大小,无奈嫌麻烦,寻求其它方法。 也是一个比较笨的方法—— ffmpeg 通过下载 ffmpeg&am…

vue的优缺点有那些 组件常用的有那些?

优点: 组件化开发,提升效率,方便复用,便于协同开发单页面路由易于结合其他的第三方库丰富的api方法轻量高效,虚拟DOMMVVM,数据驱动视图轻量级的框架 缺点: 缺少高阶教程和文档生态环境不如angular和re…

ChatGPTGPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术教程

原文链接:ChatGPTGPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598506&idx2&sn14f96667bfbeba5f51366a1f019e3d64&chksmfa82004dcdf5895bba2784ba10f6715f6f5e4c59c9b1…

ElasticSearch之数据建模

写在前面 本文看下es数据建模相关的内容。 1:什么是数据建模 数据建模是对真实数据的一种抽象,最终映射为计算机形式的表现。其包括如下三个阶段: 1:概念模型 2:逻辑模型 3:数据模型2:es数据…

此站点正在尝试打开 ,chrome/edge 允许http网站打开url schema

正常https链接会有首次允许选项 但http没有,每次都会弹出,非常烦人。 Chrome / Edge 配置 地址栏输入 chrome://flags/搜索Insecure origins treated as secure, 配置允许网站,需要协议和端口再次跳转会显示始终允许选项

(附源码)基于Spring Boot和Vue的前后端分离考研资料分享平台的设计与实现

前言 💗博主介绍:✌专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2024年Java精品实战案例《100套》 🍅文末获取源码联系🍅 &#x1f31…

【Godot4.2】2D辅助类Geometry2D入门

概述 Godot4.2提供了一个名叫Geometry2D的类。它提供了一些用于2D几何图形如多边形(Polygon)、折线(PolyLine)相关的函数,可以方便实现诸如多边形与多边形或多边形与折线的布尔运算、求交点等。 这是一个非常强大的2…

目标控制器数字孪生系统的研究与设计

文章来源:铁路计算机应用,2023,32(10):36-41. 作者:许婧,杨硕,季志均 摘要:随着目标控制器(OC,Object Controller)系统在轨道交通领域的推广应用,其硬件投入较高、研发…

css background-color属性无效

因为工作需要&#xff0c;最近在帮H5同事开发几个页面&#xff0c;在使用H5进行如下布局的时候&#xff0c;发现设置 background-color为白色无效。 代码如下&#xff1a; <div class "bottomBar"><div style"position: fixed; left: 20px;">…

解决arco-design下拉框回显id的问题

问题描述 下拉框回显选项中没有的选项&#xff0c;就会出现以下情况&#xff0c;只能把uid回显上去 解决方案 使用ui框架自带的属性fallback-option 用法 按以上操作&#xff0c;即可解决选择框回显uid问题

软考91-上午题-【操作系统】-线程

一、线程的定义 传统的进程有两个基本属性: 可拥有资源的独立单位&#xff1b;可独立调度和分配的基本单位。 引入线程的原因是进程在创建、撤销和切换中&#xff0c;系统必须为之付出较大的时空开销&#xff0c;故在系统中设置的进程数目不宜过多&#xff0c;进程切换的频率…

Day43:WEB攻防-PHP应用SQL注入符号拼接请求方法HTTP头JSON编码类

目录 PHP-MYSQL-数据请求类型 PHP-MYSQL-数据请求方法 PHP-MYSQL-数据请求格式 知识点&#xff1a; 1、PHP-MYSQL-SQL注入-数据请求类型 2、PHP-MYSQL-SQL注入-数据请求方法 3、PHP-MYSQL-SQL注入-数据请求格式 PHP-MYSQL-数据请求类型 SQL语句由于在黑盒中是无法预知写法的…

基于python+vue的BBS论坛系统flask-django-nodejs-php

本系统为用户而设计制作BBS论坛系统&#xff0c;旨在实现BBS论坛智能化、现代化管理。本BBS论坛自动化系统的开发和研制的最终目的是将BBS论坛的运作模式从手工记录数据转变为网络信息查询管理&#xff0c;从而为现代管理人员的使用提供更多的便利和条件。使BBS论坛系统数字化、…

使用阿里CICD流水线打包Vue项目到阿里的docker镜像私仓,并自动部署到服务器启动服务

文章目录 使用阿里CICD流水线打包Vue项目到阿里的docker镜像私仓&#xff0c;并自动部署到服务器启动服务1、功能实现原理大家可以看我之前的两篇文章2、打包vue项目和打包咱们的Java项目过程差不多相同&#xff0c;大家可以看着上面的Java打包过程进行实验&#xff0c;下面是v…