测试工程师需要掌握的一些常用sql

news/2025/3/16 22:11:02/文章来源:https://www.cnblogs.com/cqx-test/p/18775817

作为一个测试工程师,掌握 SQL 是必不可少的技能,因为测试过程中经常需要验证数据库中的数据是否正确。以下是一些 必须掌握的 SQL 语句,涵盖了数据查询、数据操作、数据验证和性能优化等方面:

 

1. 基础查询语句
【SELECT】
用于从表中查询数据。
示例:
sql
SELECT * FROM users;

常用选项:
- `SELECT column1, column2 FROM users;`:选择特定列。
- `SELECT DISTINCT column FROM users;`:去重查询。

【WHERE】
用于过滤查询结果。
示例:
sql
SELECT * FROM users WHERE age > 18;

【ORDER BY】
用于对查询结果排序。
示例:
sql
SELECT * FROM users ORDER BY age DESC;

【LIMIT】
用于限制查询结果的数量。
示例:
sql
SELECT * FROM users LIMIT 10;

 

2. 数据操作语句
【INSERT】
用于向表中插入数据。
示例:
sql
INSERT INTO users (name, age) VALUES ('John', 25);

【UPDATE】
用于更新表中的数据。
示例:
sql
UPDATE users SET age = 26 WHERE id = 1;

【DELETE】
用于删除表中的数据。
示例:
sql
DELETE FROM users WHERE id = 1;

 

3. 数据验证语句
【COUNT】
用于统计行数。
示例:
sql
SELECT COUNT(*) FROM users;

【SUM】
用于计算某列的总和。
示例:
sql
SELECT SUM(amount) FROM orders;

【AVG】
用于计算某列的平均值。
示例:
sql
SELECT AVG(age) FROM users;

【MIN` / `MAX】
用于查找某列的最小值或最大值。
示例:
sql
SELECT MIN(age), MAX(age) FROM users;

【GROUP BY】
用于分组统计。
示例:
sql
SELECT age, COUNT(*) FROM users GROUP BY age;

【HAVING】
用于过滤分组后的结果。
示例:
sql
SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) > 10;

 

4. 表连接查询
【INNER JOIN】
用于查询两个表中匹配的记录。
示例:
sql
SELECT users.name, orders.amount
FROM users
INNER JOIN orders ON users.id = orders.user_id;

【LEFT JOIN】
用于查询左表中的所有记录,即使右表中没有匹配的记录。
示例:
sql
SELECT users.name, orders.amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id;

【RIGHT JOIN】
用于查询右表中的所有记录,即使左表中没有匹配的记录。
示例:
sql
SELECT users.name, orders.amount
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;

【FULL OUTER JOIN】
用于查询两个表中的所有记录(MySQL 不支持,可用 `UNION` 替代)。
示例:
sql
SELECT users.name, orders.amount
FROM users
FULL OUTER JOIN orders ON users.id = orders.user_id;

 

5. 子查询
用于在查询中嵌套另一个查询。
示例:
sql
SELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 100);

 

6. 数据验证与断言
【EXISTS】
用于检查子查询是否返回结果。
示例:
sql
SELECT name FROM users WHERE EXISTS (SELECT 1 FROM orders WHERE users.id = orders.user_id);

【NOT EXISTS】
用于检查子查询是否没有返回结果。
示例:
sql
SELECT name FROM users WHERE NOT EXISTS (SELECT 1 FROM orders WHERE users.id = orders.user_id);

 

7. 性能优化
【EXPLAIN】
用于分析查询的执行计划。
示例:
sql
EXPLAIN SELECT * FROM users WHERE age > 18;

【INDEX】
用于创建索引以加快查询速度。
示例:
sql
CREATE INDEX idx_age ON users(age);

 

8. 数据备份与恢复
【BACKUP】
用于备份数据库(具体语法因数据库而异)。
示例(MySQL):
sql
mysqldump -u username -p database_name > backup.sql

【RESTORE】
用于恢复数据库(具体语法因数据库而异)。
示例(MySQL):
sql
mysql -u username -p database_name < backup.sql

 

9. 其他实用语句
【UNION】
用于合并多个查询结果。
示例:
sql
SELECT name FROM users
UNION
SELECT name FROM customers;

【CASE】
用于条件判断。
示例:
sql
SELECT name,
CASE
WHEN age < 18 THEN 'Minor'
ELSE 'Adult'
END AS age_group
FROM users;

 

10. 数据库管理
【SHOW TABLES】
查看数据库中的所有表。
示例:
sql
SHOW TABLES;

【DESCRIBE】
查看表的结构。
示例:
sql
DESCRIBE users;

 

总结
作为测试工程师,掌握这些 SQL 语句可以帮助你:
- 验证数据的正确性。
- 检查数据库的完整性。
- 分析系统性能。
- 快速定位问题。

在实际工作中,根据项目需求灵活运用这些语句,可以极大地提高测试效率和质量。

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

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

相关文章

学嵌入式C语言,看这一篇就够了(5)

C语言的运算符 学习编程语言,应该遵循“字-->词-->句-->段--->章”,对于一条有意义的语句而言,是离不开标点符号的运算符指明要进行的运算和操作,操作数是指运算符的操作对象,根据运算符操作数的数目不同,C语言标准把运算符分为三种:单目运算符(一元运算符…

20242313 2024-2025-2 《Python程序设计》实验一报告

20242313 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级:2423 姓名:曾海鹏 学号:20242313 实验教师:王志强 实验日期:2025年3月16日 必修/选修:公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并…

nn.Embedding()函数详解

nn.Embedding()函数详解 nn.Embedding()函数:随机初始化词向量,词向量在正态分布N(0,1)中随机取值 输入: torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False, _weight=None) num…

htb Authority

端口扫描 nmap -sC -sV -p- -Pn -T4 10.10.11.222 Starting Nmap 7.92 ( https://nmap.org ) at 2024-10-04 19:42 CST Nmap scan report for 10.10.11.222 (10.10.11.222) Host is up (0.40s latency). Not shown: 65506 closed tcp ports (reset) PORT STATE SERVICE …

蓝桥杯14届省B

蓝桥杯14届省赛B组A:int a[105]; int day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};//记录每个月有多少天 set<int> st;//记录不重复的日期void check(int mm,int dd){if (mm>12||mm<1||dd<1||dd>day[mm]) return;else st.insert(mm*100+dd);//st存日期 …

docker 安装 oracle database 问题记录

pre本地docker (WSL)安装运行 Oracle1. 镜像处理参考链接:https://www.cnblogs.com/wuchangsoft/p/18344847 oracle 镜像获取:https://container-registry.oracle.com/ords/f?p=113:10:::::: (Oracle官网,由于部分问题导致直接pull无法拉取) 阿里云,参考链接里有个个人19…

20242103 实验一《Python程序设计》实验报告

20242103 《Python程序设计》实验1报告 课程:《Python程序设计》 班级: 2421 姓名: 李雨虓 学号:20242103 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容: 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行调试…

20241313 2024-2025-2 《Python程序设计》实验一报告

20241313 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2413 姓名: 刘鸣宇 学号:20241313 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序…

mutatingwebhook的简单实例

一. k8s集群准备 这里不再赘述k8s集群搭建。主要注意参数:kubectl get po kube-apiserver-server -n kube-system -o yaml | grep plugin 预期结果为:- --enable-admission-plugins=NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook 至少要拥有两个参数…

Tauri新手向 - 基于LSB隐写的shellcode加载器

此篇是记录自己初次学习tauri开发工具,包含遇到的一些问题以及基本的知识,也给想上手rust tauri的师傅们一些小小的参考。此项目为保持免杀性暂不开源,希望各位师傅多多支持,反响可以的话后续会放出代码大家一起交流学习。ShadowMeld - 基于图像隐写技术的载荷生成框架 通过…