DQL(数据查询语言)
基本的select语句
过滤和排序数据
分组查询
基本的select语句
查询所有列
方式一:
语法:select * from 表名
示例:查询博客表
select * from t_lucene_crawler_blog
方式二:
语法:select 所有列名 from 表名
查询特定的列
语法:select 列名 from 表名
别名
意义:1、便于理解
2、如果要查询的字段有重名的情况,使用别名可以区分开来
列取别名有两种方法:
1、 使用空格
语法:select 列名 别名 from 表名
2、使用as
语法:select 列名 as 别名 from 表名
给表取别名
语法:select 列名 from 表名 别名
查询常量
示例: SELECT 100;
SELECT 'john';
查询表达式
示例:SELECT 100%98;
结果:
显示表结构
语法:DESC 表名
查询函数
语法:SELECT VERSION();
结果
去重
语法:SELECT DISTINCT 需要去重的列名 from 表名
+号的使用
1、运算符,两个操作数都为数值型
2、连接符,只要有一个操作数为字符串
两个操作数都为数值型,则做加法运算,
只要其中一方为字符型,试图将字符型数值转换成数值型,如果转换失败,则字符型的转换为0
如果一方为null,则结果为null
过滤和排序数据
过滤
将不满足条件的过滤掉
where子句
语法:select 列名 from 表名 where 条件
示例:
select * from t_mysql_employees where salary = 24000
比较运算
示例:
select * from t_mysql_employees where salary >10000
模糊查询
in
含义:判断某字段的值是否属于in列表中的某一项
特点:
①使用in提高语句简洁度
②in列表的值类型必须一致或兼容
③in列表中不支持通配符
between…and…
示例:
select * from t_mysql_employees where salary BETWEEN 10000 AND 20000
示例:
like
示例,查询表中姓中有a的
select * from t_mysql_employees where first_name like '%a%'
null
示例:
SELECT last_name, commission_pct FROM t_mysql_employees WHERE manager_id IS NULL;
逻辑运算
排序
order by
语法:select 查询列表 from 表名 【where 筛选条件】 order by 排序的字段或表达式;
特点:1、asc代表的是升序,可以省略 desc代表的是降序
2、order by子句可以支持 单个字段、别名、表达式、函数、多个字段
3、order by子句在查询语句的最后面,除了limit子句
分组查询
概念
语法:分组函数作用于一组数据,并对一组数据返回一个值。
分组函数
功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:sum 求和、avg 平均值、max 最大值 、min 最小值 、count 计算个数
特点:
1、sum、avg一般用于处理数值型
max、min、count可以处理任何类型
2、以上分组函数都忽略null值
3、可以和distinct搭配实现去重的运算
4、count函数的单独介绍
一般使用count(*)用作统计行数
5、和分组函数一同查询的字段要求是group by后的字段
示例:
SELECT SUM(salary) FROM t_mysql_employees;
SELECT AVG(salary) FROM t_mysql_employees;
SELECT MIN(salary) FROM t_mysql_employees;
SELECT MAX(salary) FROM t_mysql_employees;
SELECT COUNT(salary) FROM t_mysql_employees;
group by
语法:
select 查询列表 from 表 【where 筛选条件】 group by 分组的字段 【order by 排序的字段】;
特点:
1、和分组函数一同查询的字段必须是group by后出现的字段
2、筛选分为两类:分组前筛选和分组后筛选
示例:
select * from t_mysql_employees group by department_id
having
示例: select * from t_mysql_employees group by department_id HAVING salary >10000