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

1. where子句操作符

  等于: =

  不等于: != 或 <>

  小于: <

  小于等于: <=

  大于: >

  大于等于:>=

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

  空值检查:is NULL

  where组合子句:AND OR IN NOT

  例:

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

  

2. 通配符过滤

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

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

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

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

  select * from products where proc_id like 'ANV%';

  

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

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

  select * from products where proc_id like 'ANV0_';

  

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

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

  select proc_name from products where proc_name LIKE '1000';

  

  select proc_name from products where proc_name REGEXP '1000';

  

  通过上面会很直接的看到使用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';

  

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

  

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

  

  下面根据子查询的方式:

  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'));

  

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

  方法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必知必会实战练习(三)数据过滤的更多相关文章

  1. MySql必知必会实战练习(二)数据检索

    在上篇博客MySql必知必会实战练习(一)表创建和数据添加中完成了各表的创建和数据添加,下面进行数据检索和过滤操作. 1. Select子句使用顺序 select--->DISTINCT---& ...

  2. 《MySQL 必知必会》读书总结

    这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...

  3. mysql必知必会

    春节放假没事,找了本电子书mysql必知必会敲了下.用的工具是有道笔记的markdown文档类型. 下面是根据大纲已经敲完的章节,可复制到有道笔记的查看,更美观. # 第一章 了解SQL## 什么是S ...

  4. 《MySQL必知必会》整理

    目录 第1章 了解数据库 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 列和数据类型 1.1.4 行 1.1.5 主键 1.2 什么是SQL 第2章 MySQL简介 2.1 ...

  5. MySql必知必会内容导图

    <MySQL必知必会>从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用.子查询.正则表达式和基于全文本的搜索.存储过程.游标.触发器.表约束,等等.通过重点突出的章节,条理 ...

  6. MySQL必知必会1-20章读书笔记

    MySQL备忘 目录 目录 使用MySQL 检索数据 排序检索数据 过滤数据 数据过滤 用通配符进行过滤 用正则表达式进行搜索 创建计算字段 使用数据处理函数 数值处理函数 汇总数据 分组数据 使用子 ...

  7. MySQL必知必会》正则表达式

    <MySQL必知必会>正则表达式 正则表达式 1.1.关键字 REGEXP 正则表达式的使用需要用到关键字 REGEXP . select prod_name from products ...

  8. Java并发必知必会第三弹:用积木讲解ABA原理

    Java并发必知必会第三弹:用积木讲解ABA原理 可落地的 Spring Cloud项目:PassJava 本篇主要内容如下 一.背景 上一节我们讲了程序员深夜惨遭老婆鄙视,原因竟是CAS原理太简单? ...

  9. 【MySQL 基础】MySQL必知必会

    MySQL必知必会 简介 <MySQL必知必会>的学习笔记和总结. 书籍链接 了解SQL 数据库基础 什么是数据库 数据库(database):保存有组织的数据的容器(通常是一个文 件或一 ...

随机推荐

  1. 设计模式(三) cglib代理

    1.1.cglib代理,也可也叫子类代理 Cglib代理,也叫做子类代理.我们知道,JDK的动态代理机制只能代理实现了接口的类,而不能实现接口的类就不能使用JDK的动态代理.cglib是针对类来实现代 ...

  2. CAS单点登录的配置

    先说单点登录是个啥? 单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录. 配置的步骤如下: 1.生成安全证书 Cas serve ...

  3. maven私服客户端配置

    <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...

  4. 抗DDOS攻击

    2016年10月的某天,“半个美国互联网”都瘫痪了,就是因为遭受了DDoS攻击——Twitter.GitHub.Spotify.Airbnb.Etsy等大量站点都因此受到影响.DNS服务提供商Dyn公 ...

  5. Oracle数据库的删除

    在Windows中彻底删除原先的Oracle,然后再重新安装Oracle数据库.具体步骤如下:   1. 开始->设置->控制面板->管理工具->服务,停止所有Oracle服务 ...

  6. shell脚本实现进度条

    使用shell脚本编写进度条 可已加入到shell脚本当中 主要作用:好看 美观 没毛用 (一) 普通进度条: #!/bin/bashb='' for ((i=0;$i<=20;i++)) do ...

  7. vue.js 调用iOS原生方法,JavaScriptCore

    1. 2. 3. 4.vue.js调用

  8. cf780c

                                                                                             C. Andryush ...

  9. SQL编码规范

    1        目的 为了保证所每个项目组编写出的程序都符合相同的规范,便于理解和维护,便于检查.减少出错概率,有助于成员间交流,保证一致性.统一性而建立的SQL程序编码规范. 2        范 ...

  10. 删除读取失败的服务 <读取描述失败错误代码2>

    1.以管理员身份运行命令提示符 2.sc delete 服务名