川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

MySQL | 数据查询语言DQL数据过滤语法及实例

作者:川石学院 日期:2022-04-14 14:26:31 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“ 数据查询语言DQL数据过滤语法及实例”。

MySQL:数据库安装,基本配置及客户端工具使用(图1)

  数据过滤

  是由where子句来实现的.

  语法:

  select list

  from tabs

  where search_conditions;

  ▲ 原理

  where 条件

  谓词 --> true 表示满足条件 返回数据行

  -->false 表示不满足条件 丢弃数据行

  -->unknown 表示不满足条件 丢弃数据行

  where 多个条件

  复合谓词: 基本谓词通过逻辑运算符连接起来的式子

  逻辑运算符: and or not

  复合谓词经过逻辑运算 --> true false unknown

  1、基本谓词

  比较谓词

  比较两个值表达式返回的值的大小关系是否成立.

  where ve1 VS ve2

  ve1 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_price

  FROM ecs_goods

  WHERE market_price > 1000;

  ○ 范围谓词

  判断值表达式返回的值是否在一个区间范围内.

  where ve between ve1 and ve2

  where ve not between ve1 and ve2

  between ve1 and ve2: 定义一个闭区间范围[ve1,ve2]

  # ve >= ve1 and ve <= ve2

  #找出市场价格在1400到2400之间的商品信息

  SELECT goods_id, goods_name, market_price

  FROM ecs_goods

  WHERE 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_price

  FROM ecs_goods

  WHERE 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_price

  FROM ecs_goods

  WHERE goods_name LIKE '%诺基亚%';

  

  #找出商品名称只有4个字符的产品信息

  SELECT goods_id, goods_name, market_price

  FROM ecs_goods

  WHERE goods_name LIKE '____';

  ○ 空值谓词

  判断值表达式返回的值是否是一个空值.

  where ve is null

  where ve is not null

  ▲ 空值

  表示没有或未知.在数据库中用null表示.

  不等同于0

  #找出没有设置密码提示问题用户信息

  SELECT *

  FROM ecs_users

  WHERE passwd_question IS NULL;

  ▲ not关键字

  当谓词的条件难以描述时,可以写出其相反的条件,再使用not关键字进行否定.

  #找出设置了密码提示问题用户信息

  SELECT *

  FROM ecs_users

  WHERE passwd_question IS NOT NULL;

  2、逻辑运算符

  ● and

  逻辑"与", 双目运算符

  P1 and P2 --> true

  true true


  当前仅当所有的谓词返回true时,复合谓词结果才为true.

  这意味着所有的条件要同时成立.


  #商品类型为9中市场价格大于500的产品信息

  SELECT goods_id, goods_name, goods_type, market_price

  FROM ecs_goods

  WHERE 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_price

  FROM ecs_goods

  WHERE goods_type = 9 OR market_price > 500;

  ● not

  逻辑"非", 单目运算符

  not P

  true --> false

  false --> true

  unknown --> unknown


  #市场价格不大于500的商品信息

  SELECT goods_id, goods_name, goods_type, market_price

  FROM ecs_goods

  WHERE NOT market_price > 500;

  ● 混合运算

  #运算符优先级:

  () > not > and > or


  not P1 or P2 and P3

  s1. not P1 --> r1

  s2. P2 and P3 --> r2

  s3. r1 or r2 --> r


  (not P1 or P2) and P3

  s1. not P1 --> r1

  s2. r1 or P2 --> r2

  s3. r2 and P3 --> r

  3、运算规则

  ▲ unknown的由来

  where ve1 VS ve2

  ve1 or ve2 返回的值为null,则比较谓词的结果为unknown

  

  #找出没有设置密码提示问题用户信息

  SELECT *

  FROM ecs_users

  WHERE passwd_question = NULL; # error, use is null

  ▲ 真值表

  true --> T

  false --> F

  unknown --> U

 MySQL | 数据查询语言DQL数据过滤语法及实例(图2)


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-04-14 14:26:31
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-04-14 14:26:31
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-04-14 14:26:31
  • 建筑工程专业朱同学成功转行为软件测试人!2022-04-14 14:26:31
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-04-14 14:26:31
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-04-14 14:26:31
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-04-14 14:26:31
  • 文科生转行软件测试照样拿下高薪15K!2022-04-14 14:26:31
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-04-14 14:26:31
  • 毕业1年,迷茫的他最终选择转行软件测试2022-04-14 14:26:31