前言:
今天你们对“mysql数据查询语言”可能比较关注,兄弟们都需要学习一些“mysql数据查询语言”的相关知识。那么小编在网络上收集了一些对于“mysql数据查询语言””的相关知识,希望咱们能喜欢,各位老铁们一起来了解一下吧!数据过滤
是由where子句来实现的.
语法:
select listfrom tabswhere search_conditions;
▲ 原理
where 条件谓词 --> true 表示满足条件 返回数据行-->false 表示不满足条件 丢弃数据行-->unknown 表示不满足条件 丢弃数据行where 多个条件复合谓词: 基本谓词通过逻辑运算符连接起来的式子逻辑运算符: and or not复合谓词经过逻辑运算 --> true false unknown
1、基本谓词
比较谓词
比较两个值表达式返回的值的大小关系是否成立.
where ve1 VS ve2ve1 or ve2: 值表达式(value expression),凡是能返回某个值的式子# 1 --> 1 常量# 1 + 2 --> 3 常量表达式# ecs_goods.market_price --> 每一行返回一个值 列引用# market_price * 1.2 --> 每一行返回一个计算后的值 计算列
VS: 关系运算符> < >= <= = !=(or<>)#比较谓词的否定是通过关系运算符取反来实现的<= >= < > != =
▲ 数据库查找数据的方式
a.全表扫描
从表中的第一行按照顺序一直查找到最后一行.
b.索引扫描
按照表建立起来的索引查找数据.
#找出市场价格大于1000的商品信息SELECT goods_id, goods_name, market_priceFROM ecs_goodsWHERE market_price > 1000;
○ 范围谓词
判断值表达式返回的值是否在一个区间范围内.
where ve between ve1 and ve2where ve not between ve1 and ve2between ve1 and ve2: 定义一个闭区间范围[ve1,ve2]# ve >= ve1 and ve <= ve2
#找出市场价格在1400到2400之间的商品信息SELECT goods_id, goods_name, market_priceFROM ecs_goodsWHERE market_price BETWEEN 1400 AND 2400;
○ 集合成员谓词
判断值表达式返回的值是否是一个指定集合中的一个元素.
where ve in (ve1,ve2,...,ven)where ve not in (ve1,ve2,...ven)(ve1,ve2,...,ven): 定义了一个n个元素的集合(元素无序,唯一)#ve = ve1 or ve = ve2 or ... or ve = ven
#找出市场价格是50,100,150,200的商品信息SELECT goods_id, goods_name, market_priceFROM ecs_goodsWHERE market_price IN (50,100,150,200);
○ 模式匹配谓词
判断值表达式返回的值是否与一个指定的字符串相匹配
where ve like 'str'where ve not like 'str'str: 指定要匹配的字符串str = 必须匹配的字符 + 可以忽略的字符普通字符 通配符#通配符: 具有特殊含义的字符,可以描述或匹配多个字符,in MySQL% 匹配任意字符串(包含空串) name like '李%'_(下划线) 匹配任意单个字符 name like '李_' 姓李单名
#找出商品名称包含诺基亚的商品信息SELECT goods_id, goods_name, market_priceFROM ecs_goodsWHERE goods_name LIKE '%诺基亚%';#找出商品名称只有4个字符的产品信息SELECT goods_id, goods_name, market_priceFROM ecs_goodsWHERE goods_name LIKE '____';
○ 空值谓词
判断值表达式返回的值是否是一个空值.
where ve is nullwhere ve is not null
▲ 空值
表示没有或未知.在数据库中用null表示.
不等同于0
#找出没有设置密码提示问题用户信息SELECT *FROM ecs_usersWHERE passwd_question IS NULL;
▲ not关键字
当谓词的条件难以描述时,可以写出其相反的条件,再使用not关键字进行否定.
#找出设置了密码提示问题用户信息SELECT *FROM ecs_usersWHERE passwd_question IS NOT NULL;
2、逻辑运算符
● and
逻辑"与", 双目运算符
P1 and P2 --> truetrue true当前仅当所有的谓词返回true时,复合谓词结果才为true.这意味着所有的条件要同时成立.
#商品类型为9中市场价格大于500的产品信息SELECT goods_id, goods_name, goods_type, market_priceFROM ecs_goodsWHERE goods_type = 9 AND market_price > 500;
● or
逻辑"或", 双目运算符
P1 or P2 --> true\true/只要谓词之一返回true时,复合谓词结果则为true.这意味着只要多个条件中的某一个成立即可.
#商品类型为9,或者市场价格大于500的产品信息SELECT goods_id, goods_name, goods_type, market_priceFROM ecs_goodsWHERE goods_type = 9 OR market_price > 500;
● not
逻辑"非", 单目运算符
not Ptrue --> falsefalse --> trueunknown --> unknown
#市场价格不大于500的商品信息SELECT goods_id, goods_name, goods_type, market_priceFROM ecs_goodsWHERE NOT market_price > 500;
● 混合运算
#运算符优先级:() > not > and > ornot P1 or P2 and P3s1. not P1 --> r1s2. P2 and P3 --> r2s3. r1 or r2 --> r(not P1 or P2) and P3s1. not P1 --> r1s2. r1 or P2 --> r2s3. r2 and P3 --> r
3、运算规则
▲ unknown的由来
where ve1 VS ve2ve1 or ve2 返回的值为null,则比较谓词的结果为unknown
#找出没有设置密码提示问题用户信息SELECT *FROM ecs_usersWHERE passwd_question = NULL; # error, use is null
▲ 真值表
true --> Tfalse --> Funknown --> U
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #mysql数据查询语言