小工具知识网

当前位置: 首页 > 行业知识 > 【JaveWeb教程】(20) MySQL数据库开发之 基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询 详细代码示例讲解

行业知识

【JaveWeb教程】(20) MySQL数据库开发之 基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询 详细代码示例讲解

2026-10-19 09:34:34 来源:互联网转载

目录

    • 1. 数据库操作-DQL
      • 1.1 介绍
      • 1.2 语法
      • 1.3 基本查询
      • 1.4 条件查询
      • 1.5 聚合函数
      • 1.6 分组查询
      • 1.7 排序查询
      • 1.8 分页查询
      • 1.9 案例
        • 1.9.1 案例一
        • 1.9.2 ���例二

          在上次学习的内容中,我们讲解了:

          • 使用DDL语句来操作数据库以及表结构(数据库设计)
          • 使用DML语句来完成数据库中数据的增、删、改操作(数据库操作)

            我们今天还是继续学习数据库操作方面的内容:查询(DQL语句)。

            查询操作我们分为两部分学习:

            • DQL语句-单表操作
            • DQL语句-多表操作

              1. 数据库操作-DQL

              1.1 介绍

              DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。

              查询关键字:SELECT

              查询操作是所有SQL语句当中最为常见,也是最为重要的操作。在一个正常的业务系统中,查询操作的使用频次是要远高于增删改操作的。当我们打开某个网站或APP所看到的展示信息,都是通过从数据库中查询得到的,而在这个查询过程中,还会涉及到条件、排序、分页等操作。

              1.2 语法

              DQL查询语句,语法结构如下:

              SELECT字段列表FROM表名列表WHERE条件列表GROUP  BY分组字段列表HAVING分组后条件列表ORDER BY排序字段列表LIMIT分页参数

              我们今天会将上面的完整语法拆分为以下几个部分学习:

              • 基本查询(不带任何条件)
              • 条件查询(where)
              • 分组查询(group by)
              • 排序查询(order by)
              • 分页查询(limit)

                准备一些测试数据用于查询操作:

                create database db02; -- 创建数据库use db02; -- 切换数据库-- 员工管理(带约束)create table tb_emp (    id int unsigned primary key auto_increment comment 'ID',    username varchar(20) not null unique comment '用户名',    password varchar(32) default '123456' comment '密码',    name varchar(10) not null comment '姓名',    gender tinyint unsigned not null comment '性别, 说明: 1 男, 2 女',    image varchar(300) comment '图像',    job tinyint unsigned comment '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管',    entrydate date comment '入职时间',    create_time datetime not null comment '创建时间',    update_time datetime not null comment '修改时间') comment '员工表';-- 准备测试数据INSERT INTO tb_emp (id, username, password, name, gender, image, job, entrydate, create_time, update_time) VALUES    (1, 'jinyong', '123456', '金庸', 1, '1.jpg', 4, '2000-01-01', '2022-10-27 16:35:33', '2022-10-27 16:35:35'),    (2, 'zhangwuji', '123456', '张无忌', 1, '2.jpg', 2, '2015-01-01', '2022-10-27 16:35:33', '2022-10-27 16:35:37'),    (3, 'yangxiao', '123456', '杨逍', 1, '3.jpg', 2, '2008-05-01', '2022-10-27 16:35:33', '2022-10-27 16:35:39'),    (4, 'weiyixiao', '123456', '韦一笑', 1, '4.jpg', 2, '2007-01-01', '2022-10-27 16:35:33', '2022-10-27 16:35:41'),    (5, 'changyuchun', '123456', '常遇春', 1, '5.jpg', 2, '2012-12-05', '2022-10-27 16:35:33', '2022-10-27 16:35:43'),    (6, 'xiaozhao', '123456', '小昭', 2, '6.jpg', 3, '2013-09-05', '2022-10-27 16:35:33', '2022-10-27 16:35:45'),    (7, 'jixiaofu', '123456', '纪晓芙', 2, '7.jpg', 1, '2005-08-01', '2022-10-27 16:35:33', '2022-10-27 16:35:47'),    (8, 'zhouzhiruo', '123456', '周芷若', 2, '8.jpg', 1, '2014-11-09', '2022-10-27 16:35:33', '2022-10-27 16:35:49'),    (9, 'dingminjun', '123456', '丁敏君', 2, '9.jpg', 1, '2011-03-11', '2022-10-27 16:35:33', '2022-10-27 16:35:51'),    (10, 'zhaomin', '123456', '赵敏', 2, '10.jpg', 1, '2013-09-05', '2022-10-27 16:35:33', '2022-10-27 16:35:53'),    (11, 'luzhangke', '123456', '鹿杖客', 1, '11.jpg', 2, '2007-02-01', '2022-10-27 16:35:33', '2022-10-27 16:35:55'),    (12, 'hebiweng', '123456', '鹤笔翁', 1, '12.jpg', 2, '2008-08-18', '2022-10-27 16:35:33', '2022-10-27 16:35:57'),    (13, 'fangdongbai', '123456', '方东白', 1, '13.jpg', 1, '2012-11-01', '2022-10-27 16:35:33', '2022-10-27 16:35:59'),    (14, 'zhangsanfeng', '123456', '张三丰', 1, '14.jpg', 2, '2002-08-01', '2022-10-27 16:35:33', '2022-10-27 16:36:01'),    (15, 'yulianzhou', '123456', '俞莲舟', 1, '15.jpg', 2, '2011-05-01', '2022-10-27 16:35:33', '2022-10-27 16:36:03'),    (16, 'songyuanqiao', '123456', '宋远桥', 1, '16.jpg', 2, '2010-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:05'),    (17, 'chenyouliang', '12345678', '陈友谅', 1, '17.jpg', null, '2015-03-21', '2022-10-27 16:35:33', '2022-10-27 16:36:07'),    (18, 'zhang1', '123456', '张一', 1, '2.jpg', 2, '2015-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:09'),    (19, 'zhang2', '123456', '张二', 1, '2.jpg', 2, '2012-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:11'),    (20, 'zhang3', '123456', '张三', 1, '2.jpg', 2, '2018-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:13'),    (21, 'zhang4', '123456', '张四', 1, '2.jpg', 2, '2015-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:15'),    (22, 'zhang5', '123456', '张五', 1, '2.jpg', 2, '2016-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:17'),    (23, 'zhang6', '123456', '张六', 1, '2.jpg', 2, '2012-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:19'),    (24, 'zhang7', '123456', '张七', 1, '2.jpg', 2, '2006-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:21'),    (25, 'zhang8', '123456', '张八', 1, '2.jpg', 2, '2002-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:23'),    (26, 'zhang9', '123456', '张九', 1, '2.jpg', 2, '2011-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:25'),    (27, 'zhang10', '123456', '张十', 1, '2.jpg', 2, '2004-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:27'),    (28, 'zhang11', '123456', '张十一', 1, '2.jpg', 2, '2007-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:29'),    (29, 'zhang12', '123456', '张十二', 1, '2.jpg', 2, '2020-01-01', '2022-10-27 16:35:33', '2022-10-27 16:36:31');

                1.3 基本查询

                在基本查询的DQL语句中,不带任何的查询条件,语法如下:

                • 查询多个字段

                  select 字段1, 字段2, 字段3 from  表名;
                • 查询所有字段(通配符)

                  select *  from  表名;
                • 设置别名

                  select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ]  from  表名;
                • 去除重复记录

                  select distinct 字段列表 from  表名;

                  案例1:查询指定字段 name,entrydate并返回

                  select name,entrydate from tb_emp;

                  案例2:查询返回所有字段

                  select * from tb_emp;

                  *号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)

                  案例3:查询所有员工的 name,entrydate,并起别名(姓名、入职日期)

                  -- 方式1:select name AS 姓名, entrydate AS 入职日期 from tb_emp;-- 方式2: 别名中有特殊字符时,使用''或""包含select name AS '姓 名', entrydate AS '入职日期' from tb_emp;-- 方式3:select name AS "姓名", entrydate AS "入职日期" from tb_emp;

                  案例4:查询已有的员工关联了哪几种职位(不要重复)

                  select distinct job from tb_emp;

                  1.4 条件查询

                  语法:

                  select  字段列表  from   表名   where   条件列表 ; -- 条件列表:意味着可以有多个条件

                  学习条件查询就是学习条件的构建方式,而在SQL语句当中构造条件的运算符分为两类:

                  • 比较运算符
                  • 逻辑运算符

                    常用的比较运算符如下:

                    比较运算符功能
                    >大于
                    >=大于等于

上一篇:防伪验证服务器地址怎么填?

下一篇:idc机房哪里的好?