一、基础查询
1、语法
select 查询列表
from 表名
(1)查询表中的单个字段
select 字段名 from 表名;
(2)查询表中的多个字段
select 字段名1,字段名2,... from 表名;
(3)查询表中所有字段
select * from 表名;
(4)查询常量值
select 常量值;
注意:字符型和日期型常量值必须使用单引号,数值型不需要
(5)查询表达式
select 表达式;
(6)查询函数
select version(实参列表);
(7)起别名
使用as关键字或者空格
(8)去重
select distinct 字段名 from 表名;
(9)+
功能:做加法运算
两个数值之间直接运算;字符和数字之间的运算,要先把字符型转换为数值型再继续运算,如果转换失败,把字符型看做0再做运算;运算过程有null参与,结果就为null
2、特点
(1)查询列表可以是:表中的字段、常量值、表达式、函数
(2)查询的结果为虚拟表
二、条件查询
1、语法
select 查询列表
from 表名
where 筛选条件;
2、分类
(1)按条件表达式筛选
条件运算符:大于、小于、等于、不等于(!=/<>)、大于等于、小于等于
(2)按逻辑表达式筛选
逻辑运算符:与(and)、或(or)、非(not)
(3)模糊查询
like:一般和通配符搭配使用,可以判断字符型或数值型
通配符:%匹配任意多个字符,包含0个字符;_任意单个字符
between and(在....之间):包含临界值,不能换序
in:判断某字段是否属于in列表中的某一项
is null/is not null:用于判断null值
<=>安全等于:不确定是否为等于
例:查询员工名中包含a的员工信息
select * from employees where last_name like '%a%';
三、排序查询
1、语法
select 查询列表
from 表
[where 筛选条件]
order by 排序列表 [asc|desc]
2、特点
(1)asc:升序,默认为升序;desc降序
(2)order by子句支持单个字段、多个字段、表达式、函数、别名
(3)除limit子句,order by语句一般放在查询语句的最后面
四、常见函数
1、语法
select 函数名(实参列表) [from 表名];
2、单行函数
(1)字符函数
length:获取参数值的字节个数
concat:拼接字符串
upper、lower:将字母小写转大写,大写转小写
substr:截取指定所引处后面所有字符或截取从所索引处指定字符长度的字符
instr:返回子串的起始索引,如果找不到返回0
trim:去掉字符串首尾的空格、指定字符
lapd:左填充指定长度的指定字符
rpad:右填充指定长度的指定字符
replace:替换
(2)数学函数
round:四舍五入
ceil:向上取整,返回>=该参数的最小整数
floor:向下取整,返回<=该参数的最大整数
truncate:截断
mod:取余
rand:获取随机数,返回0-1之间的小数
(3)日期函数
now:返回当前系统日期+时间
curdate:返回当前系统日期,不包含时间
curtime:返回当前时间,不包含日期
str_to_date:将日期格式的字符转换成指定格式的日期
date_format:将日期转换成字符
monthname:以英文形式返回月
datediff:返回两个日期相差的天数
(4)其他函数
version:当前数据库服务器的版本
database:当前打开的数据库
user:当前用户
password('字符'):返回该字符个密码形式
md5('字符'):返回改资费的md5加密形式
(5)流程控制函数
if函数:if(条件表达式,表达式1,表达式2)如果条件表达式成立返回表达式1,否则返回表达式2
case函数:
情况一:
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1
when 常量2 then 要显示的值2或语句2
......
else 要显示的值n或语句n
情况二:
case
when 条件1 then 值1或语句1
when 条件2 then 值2或语句2
......
else 值n或语句n
end
3、分组函数
(1)功能:用作统计作用,又称为聚合函数或统计函数或组函数
sum:求和
avg:求平均值
max:求最大值
min:求最小值
count:计算个数(不为null的个数)
(2)支持的类型
sum和avg一般用于处理数值类型;max、min、count可以处理任何数据类型
以上分组函数都忽略null值
可以和distinct搭配使用,实现去重运算
count(*):统计结果集的个数
五、分组查询
1、group by子句语法
select 分组函数,列
from 表名
[where 筛选条件]
group by 分组列表
[order by 排序列表]
注意:查询列表必须特殊,要求是分组函数和group by后出现的字段
2、特点
(1)分组查询中的筛选条件分为两类,当分组函数做条件时条件表达式一定放在having子句后
(2)支持单个字段、多个字段分组,表达式和函数分组
(3)可以添加排序