当前位置: 首页 > article >正文

JavaWeb(三)

一、DQL

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

1.1、去除重复记录(DISTINCT)

SELECT DISTINCT 字段列表 FROM 表名;

查询xxl_job_group表中app_name和title字段的值并去重,

select distinct app_name,title

from xxl_job_group;

注意:这个查询出来的结果,只有当app_name、title完全一样才会去重。下面的结果就不会去重。

1.2 、起别名(AS)

AS 也可以省略

查询姓名、数学成绩、英语成绩。并通过as给math和english起别名(as关键字可以省略)

select name,math 数学成绩,english 英文成绩 from stu;

1.3、条件列表中的运算符

注意:null值的比较不能使用 = 或者 !=,需要使用 is 或者 is not

1.4、模糊查询(注意:%要在单引号里面)

(1)_ : 代表单个任意字符

(2)% : 代表任意个数字符

1.4.1、查询姓'马'的学员信息(名字由马开头的)
select * from stu where name like '马%';

1.4.2、查询姓名中包含'马',且不是第一个字开头的
select * from stu where name like '%马';

1.4.3、查询姓名中包含 '马' 的学员信息
select * from stu where name like '%马%';

1.4.4、查询第二个字是'花'的学员信息
select * from stu where name like '_花%';

1.5、排序查询

SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;

ASC : 升序排列 (默认值)

DESC : 降序排列

查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列

select * from stu order by math desc , english asc ;

1.6、聚合函数

注意:null 值不参与所有聚合函数运算

统计班级一共有多少个学生

select count(id) from stu;

上面语句根据某个字段进行统计,如果该字段某一行的值为null的话,将不会被统计。所以可以在count(*) 来实现。* 表示所有字段数据,一行中也不可能所有的数据都为null,所以建议使用 count(*)

1.7、分组查询

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];

注意:分组之后,查询的字段为聚合函数和分组字段查询其他字段无任何意义

表中的数据为

下面的sql语句中查询name就毫无意义:

select name, sex, avg(math) from stu group by sex;

得到查询出结果:

我们发现查询出来的name为好伟大卢本伟,这个对应的是sex为女和男时的第一个数据

也就是说查询的字段不是聚合函数也不是分组字段,那么查询出来的结果就是这个字段对应的第一笔数据,没有任何意义。

查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的

select sex, avg(math),count(*) from stu where math > 70 group by sex having count(*)  > 2;

where 和 having 区别:

执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。

可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。

1.8、limit的用法

select * from t_user limit 5;

从第一条开始取5条数据

Limit还有分页查询等用法,这里不做详细介绍。

分页查询 limit 是MySQL数据库的方言

Oracle 分页查询使用 rownum

SQL Server分页查询使用 top

总结:

查询SQL的书写顺序:

select-> from->where->group by->having->order by->limit


http://www.kler.cn/a/155483.html

相关文章:

  • 使用 Visual Studio Installer 彻底卸载 Visual Studio方法与下载
  • IPguard与Ping32全面对比——选择最适合企业的数据安全解决方案
  • 【STM32】基于SPI协议读写SD,详解!
  • react的创建与书写
  • go T 泛型
  • 如何在 Ubuntu 16.04 上设置 NFS 挂载
  • 弦理论:技术视角下的宇宙密码
  • python第3天之函数
  • Windows :VSCode安装和运行Django
  • 解决:IDEA的debug模式只有第一次能拦截请求进行debug,后续所有请求全部失效
  • Apache Doris 详细教程(二)
  • <蓝桥杯软件赛>零基础备赛20周--第8周第2讲--排序的应用
  • zabbix监控nginx
  • 营业执照上包含信息详解
  • go自定义端口监听停用-------解决端口被占用的问题
  • 理解宏任务和微任务:JavaScript 异步编程的必备知识(上)
  • JavaScript学习-1
  • [Firefly-Linux] RK3568 pca9555芯片驱动详解
  • 使用 SDKMAN 管理多版本本地 Java 环境---Centos8 Windows
  • Java中各种数据类型之间的转换
  • 【OpenCV】图像上绘制文字cv2.putText()函数用法,添加倾斜透明水印
  • 说说你所了解的Java代理,有遇到过Spring Aop失效场景吗
  • [原创]C++98升级到C++20的复习旅途-从汇编及逆向角度去分析“constexpr“关键字
  • Centos7设置永久路由
  • 线性表 力扣67. 二进制求和
  • 三、Zookeeper数据模型