DQL(数据查询语言)

基本的SELECT语句
一、基本查询
语法展示:

//所有列查询
SELECT * FROM t_mysql_employees;
//特定列查询
SELECT host,user,authentication_string from user;
//列的别名,可以用空格也可以用as
select first_name 姓,last_name asfrom t_mysql_employees;
//字符串+号的使用
SELECT 1+2;//结果为3
SELECT "12"+3;//结果为15,只要其中一方为字符型,试图将字符型数值转换成数值型如果转换成功,则继续做加法运算
SELECT null+4//一方为null,结果就为null
SELECT "num"+5;//结果为5,转换失败,则将字符类型数值转为“0”
//mysql版本查询
SELECT version();

二、过滤及排序

语法:select * from 表名 where 条件(Boolean表达式)
分类:
一、按条件表达式筛选

简单条件运算符:> < = != <> >= <=
	二、按逻辑表达式筛选
逻辑运算符:
作用:用于连接条件表达式
	&& || !
	and or not
	
&&和and:两个条件都为true,结果为true,反之为false
||或or: 只要有一个条件为true,结果为true,反之为false
!或not: 如果连接的条件本身为false,结果为true,反之为false

三、模糊查询
	like
	%,任意多个字符,包括0个字符
    _,任意单个字符
//案例展示:查询工资>12000的员工信息

SELECT 
	*
FROM
	t_mysql_employees
WHERE
	salary>12000;
//案例展示:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
SELECT
	last_name,
	salary
FROM
	t_mysql_employees
WHERE
	last_name LIKE '__n_l%';
//排序案列:查询部门编号>=90的员工信息,并按员工编号降序

SELECT *
FROM t_mysql_employees
WHERE department_id>=90
ORDER BY employee_id DESC;

三、分组查询
1、概念

​ 分组函数作用于一组数据,并对一组数据返回一个值。

语法:

select 查询列表
from 表
【where 筛选条件】
group by 分组的字段
【order by 排序的字段】;

特点:
1、和分组函数一同查询的字段必须是group by后出现的字段
2、筛选分为两类:分组前筛选和分组后筛选
		针对的表			位置		连接的关键字
分组前筛选	原始表				group by前	where
	
分组后筛选	group by后的结果集    		group by后	having

问题1:分组函数做筛选能不能放在where后面
答:不能

问题2:where——group by——having

一般来讲,能用分组前筛选的,尽量使用分组前筛选,提高效率

3、分组可以按单个字段也可以按多个字段
4、可以搭配着排序使用
//简单的分组
//展示案列:查询每个工种的员工平均工资
SELECT AVG(salary),job_id
FROM t_mysql_employees
GROUP BY job_id;
//可以实现分组前的筛选
//展示案列:查询邮箱中包含a字符的 每个部门的最高工资

SELECT MAX(salary),department_id
FROM t_mysql_employees
WHERE email LIKE '%a%'
GROUP BY department_id;

4、多表查询

1、笛卡尔集
        笛卡尔集会在下面条件下产生
    省略连接条件
    连接条件无效
    所有表中的所有行互相连接
    为了避免笛卡尔集, 可以在 WHERE 加入有 效的连接条件。
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页