一丶查询表中数据
1.简单查询
-- * 表示所以行和列
select * from 表名; -- * 在执行时会解析成字段名,消耗资源
-- 查询指定列的数据, 多个列之间以逗号分隔
select 字段名 1, 字段名 2, 字段名 3, ... from表名;
-- 对列指定别名
select 字段名 1 as 别名, 字段名 2 as 别名... from 表名;-- as 可以省略
-- 对列和表同时指定别名
select 字段名 1 as 别名, 字段名 2 as 别名... from 表名 as 表别名;
2.查询时清除重复值
select distinct 字段名 from 表名;
3.查询字段参与运算
select 列名 1 + 固定值 from 表名;-- + - * /
4.条件查询
--条件筛选 where
select 字段名 from 表名 where 条件;
5.运算符的使用
(1.)比较运算符:
-- in 关键字
select 字段名 from 表名 where 字段 in (数据 1, 数据 2...);
-- like 关键字
select * from 表名 where 字段名 like'通配符字符串';
(2.) 逻辑运算符:
(3). 通配符字符串
% 匹配任意多个字符串 _ 匹配一个字符串
-- like-模糊查询
-- 查询首字母是 S 的人
select ename from emp where ename like 'S%';
-- 查询第二个字母是 S的人
select ename from emp where ename like '_S%';
-- 查询名字里有包含S的人
select ename from emp where ename like '%S%';
6.any和every的用法
-- sal > 2000,3000,4000中的任意一个值
select ename, sal from emp where sal > any(2000,3000,4000);
-- sal > 2000,3000,4000中的每一个值
select ename, sal from emp where sal > every(2000,3000,4000);
二丶DQL查询语句
1.排序
-- 结果排序 order by [数值\时间\字符串]
-- 默认 asc 升序
-- desc 降序
select 字段名 form 表名 where 字段=值 order by 字段名 [asc|desc];
(1)单列排序
-- 只按某⼀个字段进⾏排序,称为单列排序
select * from 表名 order by 字段名 desc;
(2).组合排序
-- 组合排序:同时对多个字段进⾏排序,如果第 1 个字段相等,则按第 2 个字段排序,依次类推。
select * from 表名 where 字段=值 order by 字段名 1 [ASC|DESC],字段名 2 [ASC|DESC];
2.聚合函数
selece 聚合函数(列名) from 表名;
3.分组
# 分组查询是指使⽤ group by语句对查询信息进⾏分组,相同数据作为⼀组
select 字段 1,字段 2... from 表名 group by 分组字段 [having 条件];
having和where的区别
注:以组函数结果作为条件, 需要使用 having 子句, 比较消耗资源, 建议少用
分组函数, 聚合函数 - 操作多行计算, 会自动忽略null值。
mysql组函数不能嵌套组函数使用。
4.limit语句
作用:限制查询记录的条数。
select * from 表名 [where ⼦句][group by ⼦句][having ⼦句]
[order by ⼦句] [limit ⼦句]; -- 即放在最后
linit offset, length;
# offset: 起始⾏数,从 0 开始计数,如果省略,默认就是 0
# length: 返回的⾏数
3.常用的函数
-- distinct 去除重复
-- ifnull(num,0) 当值为null时为0,否则为num
-- if(null,0,1) 当值为null时为0,否则为1
-- round(35.14,-1)四舍五入 前面为数组,后面为保留位数,当为负数时继续向前保留,如题为40