数据库DQL和函数分类
1.DQL查询表中记录
1.1基础查询
语法:
select 查询列表 from 表名
特点:
查询列表可以是:表中的字段、常量值、表达式、函数
查询的结果是一个虚拟的表格
操作:
select * from user;
1.2取别名
使用AS
1.3去重
在查询语句中,select后面加上distinct
select distinct name from user;
1.4+号的作用
作用:仅仅只有做加法运算功能
如果要把两个字符型数值连在一起,就要使用concat函数
select concat(name,sex) from user;
concat_ws(分隔符,字段1,字段2),使用分隔符连接字符串
select concat_ws(',',stu_number,`name`) from stu;
1.5条件查询
语法:select 查询列表 from 表名 where 条件
注:like一般和通配符一起使用,常用通配符 % _
SELECT * FROM stu WHERE `name` LIKE '\_%';
bewteen and:等价于大于等于第一个值,小于等于第二个值
SELECT * FROM stu WHERE age between 22 AND 23;
in 判断某个字段的值是否属于in列表中的某一项,可以满足列表中的一项或多项,如果不满足则返回空
SELECT age,name FROM stu WHERE stu_number in(003,002);
1.6排序查询
语法:select 查询列表 from 表名[ where 条件] order by 排序列表[ASC| DESC]
SELECT age FROM stu ORDER BY age ASC;
1.7分组查询
格式:select 字段名 from 表名 group by 字段名 [having] 条件
SELECT sex FROM stu GROUP BY sex HAVING sex!='女';
注:
sql执行顺序:from–>where–>group by–>having–>select–>order by–>limit
having与where的区别:
对查询结果进行分组前,将不符合where条件的行去掉,即先过滤再分组
where后面不可以使用聚合函数,如SUM(),MIN(),Max()等,因为聚合函数要对全列数据实行计算,因而使用它的前提是:结果集已经确定!而where子句还处于"确定"结果集的过程中,因而不能使用聚合函数
having子句的作用是筛选满足条件的组,即先分组再过滤
having后面可以使用聚合函数
使用having时,要和group by 一起使用,并且having在group by 后面,筛选条件的字段需要包含在查询字段中,如:
select age,count(1) from user1 group by age having sex>=0;
由于查询字段中没有包含having中的sex字段,执行结果会报错:Unknown column ‘sex’ in ‘having clause’
select age,sex,count(1) from user1 group by age having sex>=0;
在查询字段中添加sex字段,sql即可执行
where筛选条件的字段不需要包含在查询字段中
1.8union和union all
union用于合并两个或多个select语句的结果集,并消去表中任何重复行
如果需要保留重复的记录值,请使用union all
2.函数分类
数据库中,函数分为标量函数和聚合函数
2.1标量函数
概念:对表的计算,求出来是一个单一的值
ucase():将某个字段转换为大写
lcase():将某个字段转换为小写
mid(str,pos,len):从某个文本字段提取字符,pos指开始位置(下标从1开始,如果为负数,则从字符串最后向前查找;len指截取长度
length():返回某个文本字段的长度
round():对某个数值字段进行指定小数位数的四舍五入
now():返回当前的系统日期和时间
format():格式化某个字段的显示方式timestampdiff()-时间差
date_fromat(要格式化的字段,格式化的格式):时间的格式化
2.2聚合函数
概念:纵向查询,是对一列的值进行计算,任何返回一个结果值。会忽略null值
avg():返回平均值
count():返回行数
max():返回最大值
min():返回最小值
sum():返回总和