第4天2021-08-11

1. 模糊查询

like #像… [辣一刻]
escape #退出 [遗失 凯普]
通配符:
① ‘’ 通配’一个’字符
② ‘%’ 通配’任意个’字符
#说明: 以上通配符,只有在like关键字后的字符串中才生效.
例如: 列出emp表中所有 倒数第二字母是e的员工名字
select name
from emp
where name like '%e
’;
±-------+
| name |
±-------+
| Alex |
| Carmen |
| Joey |
| Peter |
| Rober |
| _Ben |
±-------+
6 rows in set (0.023 sec)
例如:列出emp表中所有 以n结尾的员工名字
select name
from emp
where name like ‘%n’;
±-------+
| name |
±-------+
| Carmen |
| Martin |
| Yasmin |
| _Ben |
| John |
±-------+
5 rows in set (0.001 sec)
例如: 列出emp表中所有带x的员工名字
select name
from emp
where name like ‘%x%’;
±-----+
| name |
±-----+
| Alex |
±-----+
1 row in set (0.000 sec)
例如: 列出emp表中 带两个字母e的员工名字
select name
from emp
where name like ‘%e%e%’;
±-------+
| name |
±-------+
| Eddie |
| Elena |
| George |
| Peter |
±-------+
4 rows in set (0.000 sec)
例如: 列出emp表中所有以下划线开头的员工名字
select name
from emp
where name like '|
%’ escape ‘|’;
#escape 可以让(指定字符之后)(紧挨着的)(一个)字符,退出通配符,回归本义
±------+
| name |
±------+
| _Ben |
| _John |
±------+
2 rows in set (0.000 sec)

例如: 列出emp表中 所有 不带a的员工名字
select name
from emp
where name not like ‘%a%’;

2. 排序字句

order #顺序 [熬得]
by #按照 [八一]
asc #升序 [阿斯克]
desc #降序 [迪斯科] #descending 降落伞

语法:
select 字段列表
from 表名
where 记录筛选条件
order by 排序依据 顺序;

2.1 单依据排序
例如: 列出emp表中所有 销售代表 的 名字,职位,工资
并按工资降序排列
select name,title,salary
from emp
where title=‘销售代表’
order by salary desc;
±-------±---------±---------+
| name | title | salary |
±-------±---------±---------+
| May | 销售代表 | 12300.00 |
| Yasmin | 销售代表 | 12100.00 |
| Andre | 销售代表 | 12000.00 |
| Marta | 销售代表 | 11700.00 |
| Henry | 销售代表 | 11500.00 |
| David | 销售代表 | 11300.00 |
±-------±---------±---------+
6 rows in set (0.000 sec)
练习: 列出emp表中 32,41,43 部门的 员工名字,部门编号,工资
并按部门编号升序排列.
select name,deptid,salary
from emp
where deptid in(32,41,43)
order by deptid asc;

2.2 多依据排序
#多依据排序时,先按照主要依据排序,主要依据相同的记录之间
#再按照次要依据排序.书写时,主要依据在前,中间用逗号’,'隔开
#升序是默认顺序,可以省略不写.
例如: 列出emp表中 部门编号 为41,42,43 的员工 名字,部门编号,工资
先按照部门编号排序,同部门的员工再按照工资降序排列
select name,deptid,salary
from emp
where deptid between 41 and 43
order by deptid asc,salary desc;
例如: 列出emp表中 职位不是空值的员工的 名字,职位,工资
先按照职位排序,职位相同的记录之间再按照工资降序排列
select name,title,salary
from emp
where title is not null
order by title asc,salary desc;
2.3 空值处理
#在mysql中空值在排序时会当成是最小值,比较合理,通常无需处理
#在Oracle中是当成最大处理,要用ifnull函数进行处理
例如: 列出emp表中所有员工的 名字,职位,工资,绩效
并按绩效排序.
select name,title,salary,merit
from emp
order by merit;

3. 输出限制

limit #限制 [厘米特]
语法:
select 字段列表
from 表名

limit s , n;

s 起始记录编号 注意: 编号是从0开始的

n 显示的记录条数

例如: 列出emp表中所有员工的 编号,名字,工资
只显示前5条记录.
select id,name,salary
from emp
limit 0,5;
例如: 列出emp表中所有员工的 编号,名字,工资
只显示6~10条记录.
select id,name,salary
from emp
limit 5,5;
例如: 列出emp表中所有员工的 编号,名字,工资
只显示11~15条记录.
select id,name,salary
from emp
limit 10,5;

练习: 列出emp表中所有员工的 编号,名字,工资 每页显示6条记录
请显示第4页
分析: 显示第p页,
先计算p前面显示过的记录条数 (p-1)*每页条数
前面几页的最后一条记录编号是 (p-1)*每页条数-1
第p页的第一条记录 (p-1)*每页条数
select id,name,salary
from emp
limit 18,6;

作业: ① 列出emp表中所有 不带字母e的员工名字
select name
from emp
where name not like ‘%e%’;
② 列出emp表中所有 不是下划线开头的员工名字
select name
from emp
where name not like ‘|_%’ escape ‘|’;
③ 列出emp表中所有 领导编号不是空值的 员工名字,领导编号,工资
先按照领导编号排序,领导编号相同的再按工资降序排序
select name,mid,salary
from emp
where mid is not null
order by mid,salary desc;
④ 列出emp表中所有员工的 编号,名字,工资
每页显示5条记录,请显示第6页.
select id,name,salary
from emp
limit 25,5;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值