火爆全网,软件测试数据库常用 SQL 语句总结,你要的我都有......

前言

直接上干货

数据定义语言(DDL)
主要负责数据库、数据表、视图、键、索引等结构化的操作
常用的语句有:CREATE DATABASE、CREATE TABLE、ALTER TABLE等
字段的常用约束有:PRIMARY KEY、FOREIGN KEY、NOT NULL、UNIQUE、AUTO_INCREMENT、DEFAULT
常用的数据定义语言示例如下

-- 【1、数据库操作】
-- 创建数据库
-- 字符集:字符串存储方式;DEFAULT CHARACTER SET定义字符集,mb4就是most bytes 4的意思,兼容Emoji
-- 校对规则:字符串比较方式;COLLATE定义校对规则,general表示遗留的校对规则,不可扩展,但效率高,ci(case insensitive)表示大小写不敏感
-- 字符集和校对规则都有4个级别的设置:服务器级、数据库级、数据表级、字段级CREATE DATABASE IF NOT EXISTS db_demo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 删除数据库
DROP DATABASE db_demo;-- 切换当前数据库
USE db_demo;-- 【2、数据表操作】可以对数据表中的字段加上相应约束,常用的约束有:PRIMARY KEY、FOREIGN KEY、NOT NULL、UNIQUE、AUTO_INCREMENT、DEFAULT-- 示例操作产品表
DROP TABLE IF EXISTS tb_product;
CREATE TABLE tb_product
(id INT  NOT NULL AUTO_INCREMENT,  	-- 设置id列为非空、自增product_code CHAR(200) NOT NULL UNIQUE DEFAULT 'Normal',  -- 设置编码列为非空、唯一、默认值为Normalproduct_name VARCHAR(50) NOT NULL,quantity INT(3) DEFAULT 0,price DECIMAL(6,2),address VARCHAR(50),remark VARCHAR(500),PRIMARY KEY (id),		-- 指定主键列INDEX idx_product_name (product_name)		-- 定义索引
);-- 示例操作产品表
DROP TABLE IF EXISTS tb_order;
CREATE TABLE tb_order
(id INT(10)  NOT NULL AUTO_INCREMENT,  	-- 设置id列为非空、自增order_price DECIMAL(6,2),city VARCHAR(50),remark VARCHAR(500),product_id INT(10),PRIMARY KEY (id),		-- 指定主键列FOREIGN KEY (product_id) REFERENCES tb_product(id)  -- 指定外键id
);-- 修改数据表
ALTER TABLE tb_product
ADD COLUMN description VARCHAR(2000), 	-- 添加列
MODIFY COLUMN product_name VARCHAR(200) NULL,		-- 修改列
DROP COLUMN remark,  -- 删除列
CHANGE address city VARCHAR(20),   -- 重命名字段
ADD INDEX idx_product_code (product_code),	-- 添加索引
DROP INDEX idx_product_name;		-- 移除索引-- 删除数据表
DROP TABLE tb_product;
DROP TABLE tb_order;-- 【3、视图操作】广泛应用于报表操作
-- 创建视图
CREATE VIEW v_product AS
SELECT tb_product.id,tb_product.product_code,tb_product.product_name,tb_order.id as order_id,tb_order.order_price
FROM tb_product LEFT JOIN tb_order ON tb_order.product_id = tb_product.id-- 修改视图
ALTER VIEW v_product AS
SELECT tb_product.id,tb_product.product_code,tb_product.product_name,tb_order.order_price
FROM tb_product LEFT JOIN tb_order ON tb_order.product_id = tb_product.id-- 删除视图
DROP VIEW v_product

数据操作语言(DML)

主要负责数据表数据的新增、修改、删除操作
常用的语句有:INSERT INTO、UPDATE、DELETE等
注意:修改和删除操作时注意添加WHERE条件
常用的数据操作语言示例如下

-- 新增数据,字段顺序、数据顺序一定要一致;非空列一定要有;类型也要匹配
INSERT INTO tb_product(product_code,product_name,quantity,price,city,description)
VALUES('tv','电视机',150,43.27,'长沙','这是一台计算机。');
INSERT INTO tb_product(product_code,product_name,quantity,price,city,description)
VALUES('iPhone','苹果手机',100,8999,'北京','这是一台苹果手机。');
INSERT INTO tb_product(product_code,product_name,quantity,price,city,description)
VALUES('xiaomi','小米手机',13,2999,'上海','这是一台小米手机。');
INSERT INTO tb_product(product_code,product_name,quantity,price,city,description)
VALUES('oppo','欧泊手机',70,2499,'广州','这是一台欧泊手机。');
INSERT INTO tb_product(product_code,product_name,quantity,price,city,description)
VALUES('vivo','维沃手机',98,2199,'深圳','这是一台维沃手机。');
INSERT INTO tb_product(product_code,product_name,quantity,price,city,description)
VALUES('tt','锤子手机',NULL,NULL,'上海','这是一台锤子手机。');INSERT INTO tb_order(order_price,city,remark,product_id) VALUES(7999,'天津','一次愉快的购买。',1);
INSERT INTO tb_order(order_price,city,remark,product_id) VALUES(1555,'长沙','一次愉快的购买。',2);
INSERT INTO tb_order(order_price,city,remark,product_id) VALUES(2800,'重庆','一次不愉快的购买。',4);
INSERT INTO tb_order(order_price,city,remark,product_id) VALUES(1200,'杭州','重复购买。',4);
INSERT INTO tb_order(order_price,city,remark,product_id) VALUES(1200,'武汉','下次再买。',5);select * from tb_product;
select * 
-- 修改数据
UPDATE tb_product SET description = CONCAT(description,'特价甩卖...');
UPDATE tb_product SET description = CONCAT(description,'低到1块...') WHERE product_code='xiaomi';-- 删除数据
DELETE FROM tb_product WHERE product_code='xiaomi';-- 删除全表数据
DELETE FROM tb_order;
DELETE FROM tb_product;
TRUNCATE TABLE tb_product;

数据查询语言(DQL)

主要负责数据表数据的查询操作
常用的语句有:SELECT,查询操作在SQL中使用非常多,还有一些复杂的如排序、多表查询、分组等处理
常用的数据查询语言示例如下

-- 【1、查询系统参数】
-- 端口、目录、数据存放目录、服务器id
SELECT @@port,@@basedir,@@datadir,@@server_id;-- 【2、查询常用函数】
SELECT NOW(),USER(),CONCAT('同志们,','大家好!','欢迎光临。') AS welcome;-- 【3、查询条件】
-- 查询所有
SELECT * FROM tb_product;
-- 按条件查询,可以使用运算符进行操作
SELECT * FROM tb_product WHERE product_code ='iPhone';
SELECT * FROM tb_product WHERE product_code like '%i%';
SELECT * FROM tb_product WHERE quantity BETWEEN 50 AND 100;
SELECT * FROM tb_product WHERE quantity IS NOT NULL;
SELECT * FROM tb_product WHERE product_code in ('tt','xiaomi');-- 【4、排序】
SELECT * FROM tb_product ORDER BY price DESC;
SELECT * FROM tb_product ORDER BY product_code DESC;-- 【5、多表联合查询】
-- 左连接
SELECT * FROM tb_product LEFT JOIN tb_order ON tb_order.product_id = tb_product.id;
-- 右连接
SELECT * FROM tb_product RIGHT JOIN tb_order ON tb_order.product_id = tb_product.id;
-- 完全连接
SELECT * FROM tb_product JOIN tb_order ON tb_order.product_id = tb_product.id;
-- 笛卡尔积连接
SELECT * FROM tb_product,tb_order;-- 【6、分组】
SELECT tb_order.product_id,tb_product.product_code,COUNT(1),SUM(tb_order.order_price),AVG(tb_order.order_price)
FROM tb_order LEFT JOIN tb_product on tb_product.id = tb_order.product_id
GROUP BY tb_order.product_id,tb_product.product_code
HAVING COUNT(1)>1-- 【7、分页】
SELECT * FROM tb_product;
SELECT * FROM tb_product LIMIT 2,2;  -- 起始、条数
SELECT * FROM tb_product ORDER BY product_code LIMIT 3 OFFSET 2 ;  -- 条数、偏移量-- 【8、UNION】
-- UNION,会去重
SELECT city FROM tb_product
UNION
SELECT city FROM tb_order;
-- UNION ALL,不会去重
SELECT city FROM tb_product
UNION ALL
SELECT city FROM tb_order;

数据控制语言(DCL)

主要负责用户创建、授权、权限回收操作,一般主要由DBA来操作
常用的语句有:CREATE USER、GRANT、REVOKE等
常用的数据控制语言示例如下

-- 创建用户,localhost:只允许从本地ip访问;%:允许从所有的ip访问
CREATE USER 'a1'@'%' IDENTIFIED BY 'Password^';
-- 用户授权,权限可以包括、insert、update、delete、references、create、alter、drop、create view、execute等,多个用逗号分隔
-- 尾部添加WITH GRANT OPTION,可让被授权者也能将这个权限授予其他人
GRANT ALL PRIVILEGES ON  db_demo.* TO 'a1'@'%' IDENTIFIED BY 'Password^';  -- 所有权限
-- GRANT SELECT ON  db_demo.* TO 'a1'@'%' IDENTIFIED BY 'Password^';   -- 只有查询权限
-- 回收权限
REVOKE INSERT ON db_demo.* from 'a1'@'%';  -- 回收新增权限
-- 删除用户
DROP USER 'a1'@'%';-- 刷新权限,配置完后都要刷新
FLUSH PRIVILEGES;-- 查询表中数据
select * from mysql.user-- 查看用户权限
SHOW GRANTS FOR 'a1'@'%'

事务控制语言(TCL)

主要负责用多条语句形成原子性的事务操作
常用的语句有:SET AUTOCOMMIT、ROLLBACK、COMMIT、SAVEPOINT等
常用的事务控制语言示例如下

-- 【方式1】
-- 开启显式事务
SET AUTOCOMMIT = 0;
-- 查看数据
SELECT * FROM tb_product;
-- 插入一条数据
INSERT INTO  tb_product(product_code,product_name,quantity,price,description) 
VALUES('c10','n10',50,1523.58,'d10'); 
-- DDL,会默认提交事务
-- create table tb_demo
-- (
-- 	id INT,
-- 	name VARCHAR(20)
-- );
-- 查看数据
SELECT * FROM tb_product; 
-- 回滚显示事务
ROLLBACK;
-- 提交事务
COMMIT;
-- 查看数据
SELECT * FROM tb_product;  
-- 关闭显式事务
SET AUTOCOMMIT = 1;-- 【方式2】
-- 开启事务
START TRANSACTION;
-- 查看数据
SELECT * FROM tb_product; 
-- 插入一条数据
INSERT INTO  tb_product(product_code,product_name,quantity,price,description) 
VALUES('z1','z1',40,1223.58,'z1'); 
-- 查看数据
SELECT * FROM tb_product; 
-- 设置回滚点
SAVEPOINT my_point;
-- 插入另一条数据
INSERT INTO  tb_product(product_code,product_name,quantity,price,description) 
VALUES('z9','z9',40,1223.58,'z9');
-- 查看数据
SELECT * FROM tb_product; 
-- 回滚全部
-- ROLLBACK;
-- 回滚到回滚点
ROLLBACK TO my_point;
-- 查看数据
SELECT * FROM tb_product; 
-- 提交结束事务
COMMIT;

指针控制语言(CCL)

主要负责用于数据遍历的操作
常用的语句有:DECLARE…CURSOR…、OPEN、FETCH…INTO…、CLOSE等
常用的指针控制语言示例如下

-- 创建存储过程
-- 业务逻辑:取给定最小价格以上的产品总数
CREATE PROCEDURE my_proc(IN min_price DECIMAL(7,2),OUT quantity_total INT)
BEGIN-- 设置游标变量DECLARE _id INT;DECLARE _product_code VARCHAR(100);DECLARE _product_name VARCHAR(200);DECLARE _quantity INT;DECLARE _price DECIMAL(7,2);DECLARE _description VARCHAR(2000);-- 设置汇总数量DECLARE total INT DEFAULT 0;-- 标记默认为0DECLARE done INT DEFAULT 0; -- 【1、定义游标】DECLARE cursor_product CURSOR FOR SELECT id,product_code,product_name,quantity,price,description FROM tb_product WHERE price > min_price;-- 	#游标取完后的标志变量设置为1DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1 ;-- 【2、打开游标】OPEN cursor_product;-- 【3、读取游标】取下一行FETCH cursor_product INTO _id,_product_code,_product_name,_quantity,_price,_description;-- 循环WHILE done !=1 DOSET total = total + _quantity;-- 【3、读取游标】取下一行FETCH cursor_product INTO _id,_product_code,_product_name,_quantity,_price,_description;END WHILE;-- 输出汇总-- SELECT total;SET quantity_total = total;-- 【4、关闭游标】CLOSE cursor_product;
END;-- 调用
CALL my_proc(35,@total);
select @total;

SQL语言标准中,定义了很多的语句、关键字、函数等

在日常的测试工作中,并不会都使用,掌握常用的基础语句即可,慢慢再扩展一些组合查询等复杂查询语句

在上述的6种SQL语句分类中,一般只要熟悉并控制数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

onnx模型优化利器onnxoptimizer、onnxsim

ONNX性能优化和调试技巧 - 知乎ONNX模型是一种跨平台、跨框架的模型表示格式,允许用户在不同的深度学习框架之间共享模型和数据,从而加速模型开发和部署。然而,在实际应用中,我们通常需要对ONNX模型进行性能优化和调试,以确保其在不同硬件和…https://zhuanlan.zhihu.com/…

PTA L2-011 玩转二叉树

给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数N&…

CIP通讯介绍(欧姆龙PLC)

什么是CIP CIP通信是Common Industrial Protocl(CIP)的简称,它是一个点到点的面向对象协议,能够实现工业器件(传感器,执行器)之间的连接,和高等级的控制器之间的连接。目前,有3种网络DeviceNet…

MySQL--优化(索引--索引创建原则)

MySQL–优化(索引–索引创建原则) 定位慢查询SQL执行计划索引 存储引擎索引底层数据结构聚簇和非聚簇索引索引创建原则索引失效场景 SQL优化经验 一、索引创建原则 我们使用的索引种类: 主键索引唯一索引根据业务创建的索引(复…

怎么给视频活码加入时间设置?限时扫码看视频的制作方法

视频二维码是常见的一种二维码类型,很多人会通过这种方式来分享视频内容,可能某些情况下需要对制作的二维码图片加入扫码限制,比如有效期、填写密码、限制预览时间等设置,那么这些需求怎么在生成二维码时实现呢? 对于…

JAVA 用二分法查找数组中是否存在某个值

二分法查找的概念 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成…

spring-security 项目实战(一)个人健康档案

spring-security 项目实战(一)个人健康档案 项目说明项目地址框架信息 代码分析配置类解析默认登录页登录接口执行逻辑登录认证成功之后重定向到main页面过程未登录之前访问 /main生成默认登录页点击登录 登录之后访问 /main执行流程清空认证信息 项目来…

低空经济20人|卓翼智能任雪峰:以技术驱动市场,引领无人机细分领域创新

作为国内系留无人机领域的领头羊企业,卓翼智能致力于提供智能无人系统解决方案。本期“低空经济20人”请到卓翼智能CEO任雪峰分享他对系留无人机研发应用的经验以及未来无人机行业生态发展的观点。 如今,无人机的应用场景逐渐广泛,在社会发展…

18个惊艳的可视化大屏(第20辑):物联网场景

实时监控和管理 物联网系统通常涉及大量的传感器、设备和数据,通过将这些数据可视化展示在大屏上,可以实时监控和管理物联网系统的运行状态。这有助于及时发现问题、快速响应,并提高系统的可靠性和稳定性。 数据分析和决策支持 可视化大屏可…

软件测试--性能测试实战篇

软件测试--性能测试实战篇 项目介绍和部署1. 轻商城项目介绍1.1 背景1.2 简介2. 项目功能架构3. 项目技术架构4. 熟悉数据库设计5. 轻商城项目搭建5.1 准备工作5.2 项目搭建步骤性能测试需求分析1. 性能测试需求分析1.1 如何获取有效的需求2. 性能测试点的提取2.1 性能测试点的…

第五十二回 戴宗二取公孙胜 李逵独劈罗真人-飞桨AI框架安装和使用示例

吴用说只有公孙胜可以破法术,于是宋江请戴宗和李逵去蓟州。两人听说公孙胜的师傅罗真人在九宫县二仙山讲经,于是到了二仙山,并在山下找到了公孙胜的家。 两人请公孙胜去帮助打高唐州,公孙胜说听师傅的。罗真人说出家人不管闲事&a…

SpringMVC 中的常用注解和用法

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:JavaEE 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 注解 1. MVC定义2. 注解2.1 RequestMappin…

leetcode:LCR 006. 两数之和 II - 输入有序数组(python3解法)

难度&#xff1a;简单 给定一个已按照 升序排列 的整数数组 numbers &#xff0c;请你从数组中找出两个数满足相加之和等于目标数 target 。 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 0 开始计数 &#xff0c;所以答案数组应当满足 0 <…

el-dialog封装组件

父页面 <template><div><el-button type"primary" click"visible true">展示弹窗</el-button><!-- 弹窗组件 --><PlayVideo v-if"visible" :visible.syncvisible /></div> </template><sc…

谷粒学院--在线教育实战项目【一】

谷粒学院--在线教育实战项目【一】 一、项目概述1.1.项目来源1.2.功能简介1.3.技术架构 二、Mybatis-Plus概述2.1.简介2.2.特性 三、Mybatis-Plus入门3.1.创建数据库3.2.创建 User 表3.3.初始化一个SpringBoot工程3.4.在Pom文件中引入SpringBoot和Mybatis-Plus相关依赖3.5.第一…

融资项目——OpenFeign的降级与熔断

当一个微服务调用其他微服务时&#xff0c;如果被调用的微服务因各种原因无法在规定时间内提供服务&#xff0c;则可以直接使用本地的服务作为备选&#xff0c;即进行降级熔断。 如之前所提到的微服务为例&#xff1a; 如果希望实现降级熔断&#xff0c;可以在本地创建一个实现…

AI改变游戏规则:内容创作的新时代!

AI技术&#xff0c;尤其是人工智能&#xff08;AI&#xff09;在内容创作领域的应用&#xff0c;正开启了一个全新的时代。这一时代的核心在于利用AI的能力&#xff0c;不仅提高内容创作的效率&#xff0c;还能引入前所未有的创新元素&#xff0c;从而彻底改变游戏规则。 AI在…

OpenCV与AI深度学习 | 基于OpenCV实现模糊检测 / 自动对焦

本文来源公众号“OpenCV与AI深度学习”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;基于OpenCV实现模糊检测 / 自动对焦 导 读 本文主要介绍使用OpenCV实现图像模糊检测/相机自动对焦功能。 前 言 为了检测图片是否对焦&…

coqui-ai/TTS 案例model文件

GitHub - coqui-ai/TTS: &#x1f438;&#x1f4ac; - a deep learning toolkit for Text-to-Speech, battle-tested in research and production Coqui AI的TTS是一款开源深度学习文本转语音工具&#xff0c;以高质量、多语言合成著称。它提供超过1100种语言的预训练模型库&…

C#,哈夫曼编码(Huffman Code)压缩(Compress )与解压缩(Decompress)算法与源代码

David A. Huffman 1 哈夫曼编码简史&#xff08;Huffman code&#xff09; 1951年&#xff0c;哈夫曼和他在MIT信息论的同学需要选择是完成学期报告还是期末考试。导师Robert M. Fano给他们的学期报告的题目是&#xff0c;寻找最有效的二进制编码。由于无法证明哪个已有编码是…