20200422——Sql DQL 基本查询 条件查询 模糊查询

DQL

data QueryLanguage
数据查询语言

背景

提升一下自己的sql语句
在这里插入图片描述

1.基础查询

select 查询列表
from 表明;

查询表中的单个字段

在这里插入图片描述

SELECT last_name from employees;
查询last_name

查询表中的多个字段

在这里插入图片描述

SELECT last_name,salary,email 
from employees;

查询表中的所有字段

SELECT *
from employees;

在这里插入图片描述

查询常量值

在这里插入图片描述

查询表达式

在这里插入图片描述

SELECT 2+10;

查询函数

在这里插入图片描述

SELECT VERSION();

起别名

方便理解
使用as关键字
如果查询字段有重名,可以用别名区分开来
别名不要有特殊符号,如果还是想起的话,在别名加上双引号
在这里插入图片描述

SELECT VERSION() as mysql_version;

去重

DISTINCT关键字
用在查询字段的前面

查询员工表中涉及到的所有的部门编号

在这里插入图片描述

SELECT DISTINCT department_id 
from employees;

+号的作用
select 100+90,结果会显示190 两个操作数都为数值型,则做加法运算
在这里插入图片描述
select “90”+100;
如果一方为字符型,试图将字符型转换成数值型,如果转换成功,直接做加法,如果失败,为0
在这里插入图片描述
在这里插入图片描述

如果其中一个为null,那么结果一定为null
在这里插入图片描述

查询员工的名与姓连接成一个字段,并显示为姓名

所以这个案例,如果我们按照以前的思维进行查询,结果如下图,一定为0.
在这里插入图片描述
正常来说,我们要用到CONCAT函数

在这里插入图片描述

SELECT CONCAT(last_name,first_name)
from employees;

可以多个字符串进行拼接,下图为我在last/first中添加了一个空格

在这里插入图片描述

IFNULL函数

我们想做一个将所有列拼接的查询
但是有的行值为null
在这里插入图片描述
在这里插入图片描述

当然,当这个commission_pct 字段中的不为null的行,就可以进行concat拼接了。
那么我们怎么去实现这个事情,就用到了IFNULL函数

在这里插入图片描述
第一个是要处理的字段,第二个是如果为null我们设成的值。




2.条件查询

语法

select 查询列
from 表名
where 筛选条件

执行顺序,先是from 再是where 最后走select查询

where分类
一、按条件表达式筛选
条件运算符 > < = !
二、按逻辑表达式筛选
逻辑运算符 & | ! and or not 与或非
三、模糊查询表达式筛选
like,between,in,is null

案例 :查询员工工资大于1W2的员工

在这里插入图片描述

SELECT *
from employees
WHERE salary>12000;

案列:查询部门编号不等于90号的员工名和部门编号

在这里插入图片描述

SELECT last_name,department_id
from employees
WHERE department_id != 90;

逻辑表达式的作用,就是连接条件表达式

案例:查询工资在1W到2W之间的员工名,工资以及奖金
在这里插入图片描述

SELECT last_name,salary,commission_pct
from employees
WHERE salary>10000 and
salary<20000;

案例:查询部门编号不是在90到110之间的,或者工资高于1W5的员工信息

在这里插入图片描述

SELECT *
from employees
WHERE department_id<90 OR
department_id >100 OR
salary>15000;



三、模糊查询

like
一般和通配符搭配使用
% 代表0~n个字符
_ 任意单个字符

案例1:查询员工名中包含字符a的员工信息

在这里插入图片描述

SELECT *
from employees
WHERE last_name LIKE '%a%';

案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资

在这里插入图片描述

SELECT last_name,salary
from employees
WHERE last_name LIKE '__e_a%';
between and
使用between and 快捷
包含临界值
两个值不可以颠倒顺序,一定要从小到大,不要调换顺序

案例 查询员工编号在100到120之间所有的信息
在这里插入图片描述

SELECT *
from employees
WHERE department_id BETWEEN 100 AND 120;
in关键字
用于去判断某一个字段是否属于in列表中某一项
使用in比使用or语句简洁度
in列表的值类型必须统一

案例:查询员工的工种编号 是 IT_PROG、AD_VP、AD_PRES的中的一个员工名和工种编号

在这里插入图片描述

SELECT last_name,employee_id
from employees
WHERE job_id in ('AD_VP');

在这里插入图片描述

SELECT employee_id
from employees
WHERE job_id in ('AD_VP','IT_PROG','AD_PRES');

踩坑,记住,查询where子句字段中,一定要加单引号。

isnull
=不能用于判断null值
is null / is not null用于判断

案例:查询没有奖金的员工和奖金率

在这里插入图片描述

SELECT last_name,commission_pct
from employees
WHERE ISNULL(commission_pct);
安全等于<=>
可以判断null 也可以判断普通值
is null 仅仅可以判断null值

经典面试题
select * from employees和
select *from employees where commission_pck like %% and last_name like %% 是否一样

不一样! 如果有null值那么就不一样了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值