MySql必知必会实战练习(三)数据过滤

在之前的博客MySql必知必会实战练习(一)表创建和数据添加中完成了各表的创建和数据添加,MySql必知必会实战练习(二)数据检索中介绍了所有的数据检索操作,下面对数据过滤操作进行总结。1.whe

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

  在之前的博客MySql必知必会实战练习(一)表创建和数据添加中完成了各表的创建和数据添加,MySql必知必会实战练习(二)数据检索中介绍了所有的数据检索操作,下面对数据过滤操作进行总结。

1. where子句操作符

  等于: = 

  不等于: != 或 <>

  小于: <

  小于等于: <=

  大于: >

  大于等于:>=

  在指定的两个值之间:BETWEEN  AND

  空值检查:is NULL

  where组合子句:AND OR IN NOT 

  例:

  select * from products where verd_id in (1001,1002);

  MySql必知必会实战练习(三)数据过滤

2. 通配符过滤

  通配符用来匹配值的一部分的特殊字符

  为在搜索子句中使用通配符,必须使用LIKE操作符,LIKE指示SQL后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较

  注意:通配符的效率特别低,不要过度使用通配符,不要在搜索模式的开始使用通配符

(1)使用百分号(%)通配符

  select * from products where proc_id like ‘ANV%’;

  MySql必知必会实战练习(三)数据过滤

(2)使用下划线(_)通配符

  下划线的用途与%一样,但下划线只能匹配单个字符

  select * from products where proc_id like ‘ANV0_’;

  MySql必知必会实战练习(三)数据过滤

3. 使用正则表达式进行搜索

  正则表达式的常用方法有很多,这里不做介绍,主要介绍下REGEXP与LIKE的区别,看下面的例子

  select proc_name from products where proc_name LIKE ‘1000’;

  MySql必知必会实战练习(三)数据过滤

  select proc_name from products where proc_name REGEXP ‘1000’;

  MySql必知必会实战练习(三)数据过滤

  通过上面会很直接的看到使用LIKE没有输出结果,因为LIKE匹配的是整个列,如果被匹配的文本在列值中出现,LIKE将不会找到它,相应的行也不会被返回,而REGEXP在列值内进行匹配,若出现则返回相应的行

  注意:正则表达式匹配特殊字符时必须用\\为前导,\\.表示查找.

4. 子查询

  列出订购物品TNT2的所有客户信息

  思路:从orderitems表中根据产品名(proc_id)找到订单号(order_num),再在orders表中根据订单号找到客户ID(cust_id),最后再根据客户ID找到客户信息

  (1)select order_num,proc_id from orderitems where proc_id = ‘TNT2’;

  MySql必知必会实战练习(三)数据过滤

  (2)select order_num,cust_id from orders where order_num in (20005,20007);

  MySql必知必会实战练习(三)数据过滤

  (3)select * from customers where cust_id in (10001,10004);

  MySql必知必会实战练习(三)数据过滤

  下面根据子查询的方式:

  select * from customers where cust_id in (
     select cust_id from orders where order_num in(
        select order_num from orderitems where proc_id = ‘TNT2’));

  MySql必知必会实战练习(三)数据过滤

  与上面的结果一样,对于能嵌套的子查询数量没有限制,不过再实际使用时由于性能的限制,不能嵌套太多的子查询

  方法2:

  select cust_name,cust_address from customers, orders, orderitems where
   customers.cust_id = orders.cust_id AND
   orders.order_num = orderitems.order_num AND
   orderitems.proc_id = “TNT2”;

  MySql必知必会实战练习(三)数据过滤

  注意:这里给出的代码有效并获得所需的结果,但是,使用子查询并不总是执行这种类型的数据检索的最有效的方法,最好使用联结表的方式操作,后面会介绍联结表方式。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120053.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • DSL和配置_ds3配置

    DSL和配置_ds3配置为什么要用DSL呢?这个问题可以算DSL应用中第二重要的问题。第一问题是我前面的讨论过的什么应用是DSL适应的范围。首先我们应该承认,DSL不是最简明且易于理解的方法。我们来跟配置文件的方式比较一下。显然DSL在比较中会落败,因为至少对客户来说不存在语法的问题。DSL的运行效率也未必就很好,至少从配置的角度来说会如此。DSL的开放效率也未必就是最好的,因为很多场景下因为DS…

    2022年10月29日
  • servlet生命周期

    servlet生命周期servlet生命周期

  • Kafka连接服务器出现:Connection to node 1 (localhost/127.0.0.1:9092) could not be established.「建议收藏」

    文章目录1.安全组是否开放&防火墙是否拦截请求2.登陆服务器查看Kafkabroker是否可用3.查看Kafka运行日志4.在网上找资料5.解决问题今天遇到个很奇怪的问题,是关于外网连接Kafka的。在服务器本地可以使用命令行参数连接并且进行发布订阅操作,但是在外网环境就不可以了,SpringBoot连接报错:Connectiontonode1(localhost/127….

  • JRebel 热部署插件的安装使用

    JRebel 热部署插件的安装使用文章目录Jrebel简介JRebel的安装和使用idea安装JRebelJRebel的使用JRebel的激活Jrebel简介  当你修改doGet,doPost等一些内容时,你再次访问,访问到的内容不变,除非重启或重新加载class文件。  用Jrebel可快速实现热部署,节省了大量重启时间,提高了个人开发效率。JRebel的安装和使用idea安装JRebelNew->settings->plugins->Marketplace搜索插件jrebel进行安装或

  • send,recv,sendto,recvfrom

    send,recv,sendto,recvfrom

    2021年12月15日
  • icp_icp查询

    icp_icp查询输入44 21 2 4 84 0100 99 98 972 210000 100005 30 0 0 0 1696RichmanImpossible代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5 + 10;int a[N];int main(){ int T; cin>>T; while(T -..

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号