MySQL 中数据的检索(二:高级数据过滤)
2018-03-20 22:11
633 查看
1、通配符过滤
SQL 中的通配符过滤使用 like 关键字
# 单字符匹配(_):
select * from T_Employee where FName LIKE ‘_erry’
select * from T_Employee where FName LIKE ‘__n_’
# 多字符匹配(%):
select * from T_Employee where FName LIKE ‘T%’
select * from T_Employee where FName LIKE ‘%T%’
# 集合匹配([]):
select * from T_Employee where FName like ‘[SJ]%’ # FName 值是以 S 或 J 开头,长度不限的数据行
select * from T_Employee where FName like ‘[^SJ]%’ # FName 值不以 S 和 J 开头,长度不限的数据行
注:集合匹配只在 MS SQL Server 上提供支持。在 MySQL 上需要变通处理。如:
select * from T_Employee where FName like ‘S%’ or FName like ‘J%’;
select * from T_Employee where not (FName like ‘S%’) or not (FName like ‘J%’)空值检测(is null):
select * from T_Employee where FName is null;
select * from T_Employee where FName is not null;
select * from T_Employee where FName is not null and FSalary < 5000;反义运算符(! 语句、not 语句):
select * from T_Employee where FAge !=22 and FSalary !<2000;
反义运算符 ! 只在 MS SQL Server 和 DB2 中起作用,在 MySQL 中需要变通处理:使用同义运算符或使用 NOT 运算符
select * from T_Employee where FAge <> 22 and FSalary >= 2000;
select * from T_Employee where not (FAge = 22) and not (FSalary < 2000);离散多值检测(in 语句):
select FAge,FNumber,FName from T_Employee where FAge = 23 or FAge = 25 or FAge = 28;
select FAge,FNumber,FName from T_Employee where FAge in (23,25,28);范围值检测(between … and …):
select * from T_Employee where FAge >=23 and FAge <=27;
select * from T_Employee where FAge between 23 and 27;
select * from T_Employee where (FSalary between 2000 and 3000) or (FSalary between 5000 and 8000);永远为 真 的条件:
where 1=1
这个条件语句尽量少用,使用添加了 1=1 的过滤条件后数据库系统无法使用索引等查询优化策略,数据库系统会被迫对每行数据进行扫描(全表扫描),导致数据巨大时查询速度很慢
SQL 中的通配符过滤使用 like 关键字
# 单字符匹配(_):
select * from T_Employee where FName LIKE ‘_erry’
select * from T_Employee where FName LIKE ‘__n_’
# 多字符匹配(%):
select * from T_Employee where FName LIKE ‘T%’
select * from T_Employee where FName LIKE ‘%T%’
# 集合匹配([]):
select * from T_Employee where FName like ‘[SJ]%’ # FName 值是以 S 或 J 开头,长度不限的数据行
select * from T_Employee where FName like ‘[^SJ]%’ # FName 值不以 S 和 J 开头,长度不限的数据行
注:集合匹配只在 MS SQL Server 上提供支持。在 MySQL 上需要变通处理。如:
select * from T_Employee where FName like ‘S%’ or FName like ‘J%’;
select * from T_Employee where not (FName like ‘S%’) or not (FName like ‘J%’)空值检测(is null):
select * from T_Employee where FName is null;
select * from T_Employee where FName is not null;
select * from T_Employee where FName is not null and FSalary < 5000;反义运算符(! 语句、not 语句):
select * from T_Employee where FAge !=22 and FSalary !<2000;
反义运算符 ! 只在 MS SQL Server 和 DB2 中起作用,在 MySQL 中需要变通处理:使用同义运算符或使用 NOT 运算符
select * from T_Employee where FAge <> 22 and FSalary >= 2000;
select * from T_Employee where not (FAge = 22) and not (FSalary < 2000);离散多值检测(in 语句):
select FAge,FNumber,FName from T_Employee where FAge = 23 or FAge = 25 or FAge = 28;
select FAge,FNumber,FName from T_Employee where FAge in (23,25,28);范围值检测(between … and …):
select * from T_Employee where FAge >=23 and FAge <=27;
select * from T_Employee where FAge between 23 and 27;
select * from T_Employee where (FSalary between 2000 and 3000) or (FSalary between 5000 and 8000);永远为 真 的条件:
where 1=1
这个条件语句尽量少用,使用添加了 1=1 的过滤条件后数据库系统无法使用索引等查询优化策略,数据库系统会被迫对每行数据进行扫描(全表扫描),导致数据巨大时查询速度很慢
相关文章推荐
- MySQL 中数据的检索(五:抑制数据重复)
- MySQL 中数据的检索(七:不从实体表中取的数据)
- MySQL(二)数据的检索和过滤
- MySQL 中数据的检索(三:数据分组)
- MySQL学习足迹记录07--数据过滤--用正则表达式进行检索
- MySQL数据过滤和通配符过滤.md
- mysql---数据排序检索
- MySQL入门教程5 —— 从数据表中检索信息
- 数据库笔记6:检索,排序检索,过滤数据
- MySQL 中数据的检索(四:限制结果集行数)
- SQL 3. 高级数据过滤 - 3 反义运算符
- 4.高级数据过滤 ---SQL
- 如何从 MySQL 数据库表中检索数据
- MYSQL学习笔记(一)检索数据
- [MYSQL-6] 过滤数据
- MySQL数据高级查询之连接查询、联合查询、子查询
- MySQL入门-5:数据过滤
- Mysql - 用正则表达式过滤数据( 2 )
- SQL必知必会 笔记 第五章 高级过滤数据
- 【mysql学习笔记】-检索数据基本用法