Java学习——数据库查询操作

基本查询语句 DQL

基本查询

查询多个字段: select 字段1,字段2,字段3 from 表名;

java 复制代码
select name,entrydate from db02.tb_emp;

查询所有字段 :slect * from 表名;

java 复制代码
select id, username, password, name, gender, image, job, entrydate, create_time, update_time from db02.tb_emp;
select * from  db02.tb_emp

设置别名 :select 字段1 [as 别名1],字段2 [as 别名2] from 表名;as可以省略

java 复制代码
select name as 姓名,entrydate as 入职时间 from db02.tb_emp;
//如果别名中有特殊符号需要加上引号,单引号双引号都可以
select name as "姓 名",entrydate as 入职时间 from db02.tb_emp;

去除重复记录:select distinct 字段列表 from 表名;

java 复制代码
select distinct job from  db02.tb_emp;

条件查询(where)

java 复制代码
// 查询姓名为杨逍的员工
select * from  db02.tb_emp where name='杨逍';
//查询id<=5的员工信息
select * from  db02.tb_emp where id<=5;
//查询没有分配职务的员工
select * from  db02.tb_emp where job is null ;
//查询有职位的员工
select * from  db02.tb_emp where job is not null ;
//查询密码不等于'123456'的员工
select * from  db02.tb_emp where password !='123456';
//查询职时间在'2000-01-01(包含)'到'2010-01-01(包含)'之间的员工的信息
select * from  db02.tb_emp where entrydate between '2000-01-01' and '2010-01-01';
select * from  db02.tb_emp where entrydate>='2000-01-01'&&entrydate<='2010-01-01';
//查询职时间在'2000-01-01(包含)'到'2010-01-01(包含)'之间且性别为女的员工的信息
select * from  db02.tb_emp where entrydate>='2000-01-01'&&entrydate<='2010-01-01'&& gender=2;
//查询有职位是2。3.4的员工信息
select * from  db02.tb_emp where job=2 or job=3 or job=4;
select * from  db02.tb_emp where job in(2,3,4);
//查询姓名是两个字的员工信息
select * from  db02.tb_emp where name like '__';
//查询姓张的员工信息
select * from  db02.tb_emp where name like '张%';

分组查询(group by)

聚合函数

将一列数据作为一个整体,进行纵向计算

java 复制代码
//统计员工总数据量
//1,count(字段)
select count(id) from tb_cmp;
//2.count(常量)
select count(1) from tb_cmp;
//3.count(*) 推荐使用
select count(*) from tb_cmp;

//统计该企业最早入职的员工
select min(entrydate) from db02.tb_emp;
//统计该企业最迟入职的员工
select max(entrydate) from db02.tb_emp;
//统计该企业员工id的平均值
select avg(id) from db02.tb_emp;
//统计该企业员工id的和
select sum(id) from db02.tb_emp;

分组查询

java 复制代码
//根据性别分组
select gender,count(*) from  db02.tb_emp group by gender;
//查询入职时间在'2015-01-01'之前的员工,并对结果根绝职务进行分组,获取员工人俗大于等于2的职位
select job,count(*) from  db02.tb_emp where entrydate<='2015-01-01' group by job having count(*)>=2;

where和having的区别

1 执行时机不同:where是在分组之前进行过滤,不满足where条件的不参与分组;而having是对分组之后的结果进行过滤。

2 判断条件不同:where不能对聚合函数进行判断,而having可以。

排序查询(order by)

升序:ASC(默认值)

降序:DESC

java 复制代码
//根据入职时间,对员工进行升序排序
select * from tb_emp order by entrydate asc;
//根据入职时间,对员工进行升序排序,如果入职时间相同,再按照更新时间进行降序排序
select * from tb_emp order by entrydate, updata_time desc;

分页查询(limit)

java 复制代码
//从起始索引0开始查询员工数据,每页展示5条记录
select * from tb_emp limit 0,5;
//查询第一页员工数据,每页展示5条记录
select * from tb_emp limit 0,5;
查询第二页员工数据,每页展示5条记录
select * from tb_emp limit 5,5;
//起始索引=(页码-1)*每页展示记录数
相关推荐
江湖有缘1 分钟前
华为云之MySQL数据的导入导出实践【玩转华为云】
数据库·mysql·华为云
Kyrie_Li2 分钟前
Mybatis缓存机制
java·mybatis
PersistJiao13 分钟前
将数据添加到 Couchbase 的 Analytics(分析)服务
数据库·couchbase
java干货仓库18 分钟前
Redisson 加锁和释放锁底层是怎么实现的?
java·redis
Honmaple22 分钟前
Redis 三主三从集群部署的完整方案
数据库·redis·缓存
chengong998825 分钟前
Spring Boot启动流程及源码实现深度解析
java·spring boot·后端
James. 常德 student34 分钟前
高频SQL 50 题(持续更新)
数据库·sql·adb
程序猿ZhangSir40 分钟前
UNION,UNION ALL 的详细用法
数据库
C语言小火车44 分钟前
Redis 10大核心场景实战手册:从缓存加速到分布式锁的全面解析
c语言·开发语言·数据库·c++·redis
PhilipJ03031 小时前
分页优化之——游标分页
java·数据库优化·分页查询·游标分页