网站首页 > 技术文章 正文
通配符
一般用于模糊搜索
在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
SQL 通配符用于搜索表中的数据。
在 SQL 中,可使用以下通配符:
通配符 | 描述 |
% | 替代0或多个字符 |
_ | 替代一个字符 |
[abc] | 字符列中的任何单一字符 |
[^abc] | 不在字符列中的任何单一字符 |
like操作符 | LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 |
select * from info where name like "%沛%";
select * from info where name like "%沛";
select * from info where email like "%@live.com";
select * from info where name like "武%齐";
select * from info where name like "k%y";
select * from info where email like "wupeiqi%";
select * from info where email like "_@live.com";
select * from info where email like "_upeiqi@live.com";
select * from info where email like "__peiqi@live.com";
select * from info where email like "__peiqi_live.co_";
使用正则表达式
MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。
下面的 SQL 语句选取 name 以 "G"、"F" 或 "s" 开始的所有网站:
SELECT * FROM Websites WHERE name REGEXP '^[GFs]';
下面的 SQL 语句选取 name 以 A 到 H 字母开头的网站:
SELECT * FROM Websites WHERE name REGEXP '^[A-H]';
下面的 SQL 语句选取 name 不以 A 到 H 字母开头的网站:
SELECT * FROM Websites WHERE name REGEXP '^[^A-H]';
条件 where
WHERE 子句用于提取那些满足指定条件的记录。
# 下面的 SQL 语句从 "Websites" 表中选取国家为 "CN" 的所有网站:
SELECT * FROM Websites WHERE country='CN';
排序 order by age
select * from info order by age desc; -- 倒序
select * from info order by age asc; -- 顺序
select * from info order by id desc;
select * from info order by id asc;
select * from info order by age asc,id desc; -- 优先按照age从小到大;如果age相同则按照id从大到小。
select * from info where id>10 order by age asc,id desc;
select * from info where id>6 or name like "%y" order by age asc,id desc;
limit 取部分
select * from info limit 5; -- 获取前5条数据
select * from info order by id desc limit 3; -- 先排序,再获取前3条数据
select * from info where id > 4 order by id desc limit 3; -- 先排序,再获取前3条数据
select * from info limit 3 offset 2; -- 从位置2开始,向后获取前3数据
数据库表中:1000条数据。
- 第一页:select * from info limit 10 offset 0;
- 第二页:select * from info limit 10 offset 10;
- 第三页:select * from info limit 10 offset 20;
- 第四页:select * from info limit 10 offset 30;
分组 group by
select age,max(id),min(id),count(id),sum(id),avg(id) from info group by age;
select age,count(1) from info group by age;
select depart_id,count(id) from info group by depart_id;
select depart_id,count(id) from info group by depart_id having count(id) > 2;
select age,count(id) from info where id > 4 group by age having count(id) > 2; -- 聚合条件放在having后面
select age,count(id) from info where id > 2 group by age having count(id) > 1 order by age desc limit 1;
- 要查询的表info
- 条件 id>2
- 根据age分组
- 对分组后的数据再根据聚合条件过滤 count(id)>1
- 根据age从大到小排序
- 获取第1条
到目前为止SQL执行顺序:
where
group by
having
order by
limit
左右连表 left join
多个表可以连接起来进行查询
主表 left outer join 从表 on 主表.x = 从表.id
select * from info left outer join depart on info.depart_id = depart.id;
select info.id,info.name,info.email,depart.title from info left outer join
depart on info.depart_id = depart.id;
从表 right outer join 主表 on 主表.x = 从表.id
select info.id,info.name,info.email,depart.title from info right outer join depart on
info.depart_id = depart.id;
select * from info left outer join depart on ....
select * from depart left outer join info on ....
简写:select * from depart left join info on ....
上下连表
select id,title from depart
union
select id,name from info;
select id,title from depart
union
select email,name from info;
-- 列数需相同
select id from depart
union
select id from info;
-- 自动去重
select id from depart
union all
select id from info;
-- 保留所有
- 上一篇: SQL Server优化50法
- 下一篇: sqlserver数据库中的模糊查询like和通配符的使用
猜你喜欢
- 2025-05-16 在实际操作过程中如何避免出现SQL注入漏洞
- 2025-05-16 MySQL中 in数量限制
- 2025-05-16 一文讲懂SQL筛选子句HAVING子句
- 2025-05-16 性能调优实战:Spring Boot 多线程处理SQL IN语句大量值的优化方案
- 2025-05-16 sqlserver数据库中的模糊查询like和通配符的使用
- 2025-05-16 SQL Server优化50法
- 2024-07-25 你真的了解mysql数据库对like语句处理过程吗
- 2024-07-25 统一VBA中SQL语句执行的方法(vba sql)
- 2024-07-25 干货!SQL性能优化,书写高质量SQL语句
- 2024-07-25 「SQL数据分析系列」4.过滤操作(过滤数据库)
- 05-16在实际操作过程中如何避免出现SQL注入漏洞
- 05-16MySQL中 in数量限制
- 05-16一文讲懂SQL筛选子句HAVING子句
- 05-16性能调优实战:Spring Boot 多线程处理SQL IN语句大量值的优化方案
- 05-16sqlserver数据库中的模糊查询like和通配符的使用
- 05-16SQL必备 和 表关联
- 05-16SQL Server优化50法
- 05-16他们一直都在!最新强军大片来了
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- js数组插入 (83)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)