您的位置:首页 > 数据库 > MySQL

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 的过滤条件后数据库系统无法使用索引等查询优化策略,数据库系统会被迫对每行数据进行扫描(全表扫描),导致数据巨大时查询速度很慢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息