JavaWeb开发学习笔记--MySQL

MySQL-DQL

基本语法:

select
    字段列表
from
    表名列表
where
    条件列表
group by
    分组字段列表
having
    分组后条件列表
order by
    排序字段列表
limit
    分页参数

基本查询

关键字:SELECT

  • 查询多个字段:select 字段1,字段2,字段3 from 表名;
  • 查询所有字段(通配符):select * from 表名;
  • 设置别名:select 字段1 [as 别名1],字段2 [as 别名2] from 表名;

其中as关键字可去掉,注意别名中如果有特殊符号或者空格,需要用引号引起来 

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

条件查询

 select 字段列表 from 表名 where 条件列表;

比较运算符 功能
> 大于等于
>= 大于等于
< 小于
<= 小于等于
= 等于
<>或!= 不等于
between...and... 在某个范围之内(含最小、最大值)
in(...) 在in之后的列表中的值,多选一
like 占位符 模糊匹配(_匹配单个字符,%匹配任意个字符)
in null 是null
逻辑运算符 功能
and或&& 并且(多个条件同时成立)
or 或 || 或者(多个条件任意一个成立)
not 或 | 非,不是

分组查询

聚合函数

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

select 聚合函数(字段列表) from 表名;

函数 功能
count  统计数量
max 最大值
min 最小值
avg 平均值
sum 求和

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

统计数据可以使用:count(*) count(字段) count (常量),推荐使用count(*)

select 字段列表 from 表名 [where 条件] group by 分组族字段名 [having 分组后过滤条件];
select gender,count(*) from tb_emp group by gender;

where与having的区别

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤,
  • 判断条件不同:where不能对聚合函数进行判断,having可以。

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

执行顺序:where>聚合函数>having 

排序查询

select 字段列表 from 表名 [where 条件列表][group by 分组字段]order by 字段1 排序方式1,字段2 排序方式2...

ASC:升序 (默认值)

DESC:降序

-- 根据入职时间对员工进行升序排序-asc
select * from tb_emp order by ertrydate asc;

-- 根据入职时间对员工进行降序排序-desc
select * from tb_emp order by ertrydate desc;

-- 根据入职时间对员工进行升序排序,入职时间相同,再按照更新时间进行降序排序
select * from tb_emp order by ertrydate , update_time desc;

分页查询

select 字段列表 from 表名 limit 起始索引,查询记录数;
-- 从起始索引0开始查询员工数据,每页展示5条记录
select * from tb_emp limit 0,5;

-- 查询第1页员工数据,每页展示5条记录
select * from tb_emp limit 0,5;

-- 查询第2页员工数据,每页展示5条记录
select * from tb_emp limit 5,5;

-- 查询第3页员工数据,每页展示5条记录
select * from tb_emp limit 10,5;

起始索引的计算公式:(页码-1) * 每页展示记录数

注意:分页查询是数据库的方言,不同数据库有不同表现,MySQL是LIMIT;

如果查询的是第一页的数据,起始索引可以省略,直接简写为limit 10;

你可能感兴趣的:(学习,笔记,mysql)