测试需要掌握的数据库sql知识(三):十个必须掌握的关键字查询

简介: 测试需要掌握的数据库sql知识(三):十个必须掌握的关键字查询

一、前言


未看过文章(一)的朋友,需要准备测试数据

测试数据sql如下:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for class
-- ----------------------------
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class`  (
  `id` int(11) NOT NULL,
  `class_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `created` datetime(6) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of class
-- ----------------------------
INSERT INTO `class` VALUES (1, '一班', '2021-07-17 13:40:30.000000');
INSERT INTO `class` VALUES (2, '二班', '2021-07-18 13:40:48.000000');
INSERT INTO `class` VALUES (3, '三班', '2021-07-19 13:40:48.000000');
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `id` int(11) NOT NULL,
  `created` datetime(6) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `class_id` int(11) NOT NULL,
  `gender` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `height` int(3) NOT NULL,
  `weight` int(3) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '2021-07-19 13:42:35.000000', '张顺', 1, 'male', 170, 65);
INSERT INTO `student` VALUES (2, '2021-07-19 13:42:35.000000', '张玲', 1, 'female', 170, 65);
INSERT INTO `student` VALUES (3, '2021-07-19 13:42:35.000000', '李广', 2, 'male', 180, 68);
INSERT INTO `student` VALUES (4, '2021-07-19 13:42:35.000000', '李三四', 2, 'female', 170, 65);
INSERT INTO `student` VALUES (5, '2021-07-19 13:42:35.000000', '赵云', 3, 'male', 199, 100);
INSERT INTO `student` VALUES (6, '2021-07-19 13:42:35.000000', '马超', 3, 'female', 171, 66);
INSERT INTO `student` VALUES (7, '2021-07-19 13:42:35.000000', '诸葛亮', 3, 'male', 170, 65);
INSERT INTO `student` VALUES (8, '2021-07-19 13:42:35.000000', '刘备', 3, 'male', 202, 105);
INSERT INTO `student` VALUES (9, '2021-07-19 13:42:35.000000', '曹操', 3, 'male', 181, 80);
INSERT INTO `student` VALUES (10, '2021-07-19 13:42:35.000000', '黄忠', 2, 'female', 166, 50);
SET FOREIGN_KEY_CHECKS = 1;

class表数据

20210720114624730.png

student表数据

20210720114657146.png

二、具体讲解


1.BETWEEN

查询两个值之间的数据

语法:select * from 表名 where 字段名 between 值 and 值;

查询体重在65-70的学生:

select * FROM student WHERE weight BETWEEN 65 AND 70;

018a1cbb55568077deba66de4f40e3d1.png

2.AS

为字段名指定别名

语法:select 字段名1 AS 别名,字段名2 AS 别名,.... from 表名

将字段名name改为别名学生名称显示:

select name AS '学生名称' FROM student


b7efbb5c01deff1d288c130869abaab5.png


3.Distinct


查询时忽略重复值

语法:SELECT DISTINCT 字段名 FROM 表名

查询学生所在的班级有哪些:

select DISTINCT class_id FROM student


4e07b9b4e74c20f564d46c7e70804a09.png


4.SUM


求和

语法:select SUM(字段名) from 表名;

查询学生总身高:

select SUM(height) AS '学生总身高' FROM student;


6479babb9dfe091c14b6e3006bfc7b86.png


5.COUNT


返回匹配指定条件的行数。

语法:select COUNT(字段名) from 表名;

查询有多少学生:

select count(*) FROM student;

6d77f17db6ed941d43e61560119efa0f.png


6…AVG


计算平均值

语法:select AVG(字段名) from 表名;

计算学生平均身高:

select AVG(height) AS '学生平均身高' FROM student;

5c75ce630d5758fb6823de7c53405cc0.png


7.GROUP BY

根据一或多个字段对查询结果集进行分组

语法: select 字段名 关键字(字段名) from 表名 group by 字段名;

查询男生、女生各有多少:

SELECT gender,count(id) FROM student GROUP BY gender


5e4089f61603df49fd4e40266a3f6780.png

8.ORDER BY


对结果集进行排序

语法:select 字段名 from 表名 order by 字段名 升/降序关键字;

对学生身高降序排列(由高到矮):

SELECT * FROM student ORDER BY height desc;


2d951c5531658713146f95581223088f.png

对学生体重升序排列(由轻到重):

SELECT * FROM student ORDER BY weight asc;

484a919fd82ab6282495a30f1bb9f339.png


9.limit


返回查询结果的数目

语法:select 字段名 from 表名 limit 开始条数,结尾条数;

返回前三条学生信息:

SELECT * FROM student LIMIT 1,3;


8e40ad8aa5fd0b98c3c24f401e2a1b54.png

10.having


当我们用到聚合函数(sum、count等),又需要筛选条件时,having就派上用场了,因为WHERE是在聚合前筛选记录的,having和group by是组合一起再聚合后使用

语法:没有固定语法

查班级人数大于等于3的班级:

SELECT count(*) FROM student GROUP BY class_id HAVING COUNT(id)>=3;

560f1bcfe0c3615379067a7f42a585b7.png

目录
相关文章
|
11天前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
44 9
|
1月前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
109 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
17天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
45 11
|
1月前
|
存储 缓存 网络协议
数据库执行查询请求的过程?
客户端发起TCP连接请求,服务端通过连接器验证主机信息、用户名及密码,验证通过后创建专用进程处理交互。服务端进程缓存以减少创建和销毁线程的开销。后续步骤包括缓存查询(8.0版后移除)、语法解析、查询优化及存储引擎调用,最终返回查询结果。
29 6
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
30天前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
2月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
30天前
|
SQL JavaScript 程序员
数据库LIKE查询屡试不爽?揭秘大多数人都忽视的秘密操作符!
本文分析了因数据库中的不可见空白字符导致的数据查询问题,探讨了问题的成因与特性,并提出了使用 SQL 语句修复问题的有效方案。同时,总结了避免类似问题的经验和注意事项。
32 0
|
2月前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
SQL 存储 索引