2--mysql DQL--基础查询

语法

select   查询列表   from   表名;
特点:
1 查询列表可以是:表中字段,常量值,表达式,函数
2 查询结果是一个虚拟的表格

模拟查询

现有以下四张表:departments,employees,jobs,locations:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

查询表中字段

SELECT last_name FROM employees;#查询单个字段
SELECT last_name,salary,email FROM employees;#查询多个字段
SELECT * FROMemployees;查询表中所有字段

为表或列起别名

好处:
1.便于理解
2.查询的字段中有重名的情况,使用别名可以方面区分

SELECT  100%98 AS 结果;// AS 可省略
SELECT last_name 姓,first_name 名 FROM employees;
SELECT e.last_name FROM employees u;

去重:distinct关键字
查询的结果中可能有重复的字段,通过distinct关键字过滤在要查询的字段前面加上distinct关键字

SELECT DISTINCT department_id FROM employees;

mysql中’+'号: 仅作为运算符使用,不能用于连接字符串

使用场景:
1.两个操作数都是数值型,则做加法运算: select 100+30
2.其中一方为字符型,试图将字符型数值转换成数值型:
①转换成功,则继续做加法运算:select ‘123’+100; //223
②转换失败,则将字符型数值转换成0:seleclt ‘henry’+100; //100
3.一方为null,则结果肯定为null:select null+10;//null

字符串连接符:concat


//显示表employees中姓名和奖金,列明用逗号隔开;注:奖金率有可能为空,需做判断
SELECT CONCAT(`first_name`,`last_name`,',',IFNULL(`commission_pct`,0)) FROM employees;

条件查询:

#语法:			        执行顺序
SELECT  查询列表				③
FROM     表名             	①
WHERE   筛选条件;			②

#分类:
一、按条件表达式查询:
条件运算符:> < = !=(或 <> ) >= <=

#查询工资大于120000的员工信息
SELECT * FROM employees WHERE salary>12000

#查询部门编号不等于90的员工名和部门编号
SELECT last_name,department_id FROM employees WHERE department_id<>90 	

二、按逻辑表达式筛选:
逻辑运算符:&&(and),||(or), !(not)

#查询工资在10000到20000之间的员工名、工资。及奖金
SELECT last_name,salary,commission_pct FROM employees WHERE salary > 10000 AND salary<20000;

三、模糊查询
like :和通配符搭配使用
通配符: %:任意多个字符,包含0个字符 _:任意单个字符

#查询员工名中包含字符a的员工信息
SELECT * FROM employees WHERE last_name like '%a%';

between and

#查询工资在10000到20000之间的员工名、工资。及奖金
SELECT last_name,salary,commission_pct FROM employees WHERE salary BETWEEN 10000 AND 20000;

in

SELECT last_name,job_id FROM employees WHERE job_id in('IT_PROT','AD_VP');

is null/ is not null,条件运算符(等与,不等于)不能用于判断null值

#查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees WHERE commission_pct IS NULL;

<=> 安全等于:

is null pk <=>
is null:仅仅可以判断null值,可读性较高
<=>:既可以判断null值,有可以判断普通树脂,可读性较低

补充函数:ifnull函数, ifnull(commission,0);//为null则返回0
补充函数:isnull函数:为null返回1,否则返回0

排序查询
语法:

Select 查询列表 ③
from 表 ①
【 where 筛选条件】②
order by 排序列表【asc | desc】④
特点:
1.asc:代表升序 ,desc:代表降序;如果不写,默认是升序
2.order by 子句中支持单个字段,多个自字段,表达式,函数,别名
3.order by子句一般放到查询语句的最后面,limit子句除外

案例:

#按年薪高低显示员工得信息 和年薪【按本命排序】
SELECT *,salary*(1+IFNULL(commission_pct,0)) AS nx FROM employees ORDER BY nx ASC;

#查询员工信息,先按照工资升序,再按照员工编号降序【按多个字段排序】
SELECT * FROM employees ORDER BY salary ASC,employee_id DESC;

猜你喜欢

转载自blog.csdn.net/weixin_40719943/article/details/106610474