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


      在之前的博客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";

      

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

  • 相关阅读:
    SpringMVC学习指南【笔记6】JSTL标签、函数
    SpringMVC学习指南【笔记5】EL表达式、实现免脚本JSP页面、禁用EL计算的设置
    SpringMVC学习指南【笔记4】数据绑定、表单标签库、转换器、格式化、验证器
    序列封包和序列解包
    python 字符串分割,连接方法
    Jmeter常用插件(转)
    不同的content-type,Jmeter入参不同
    性能监测(CPU)
    正则表达式
    乱码问题
  • 原文地址:https://www.cnblogs.com/xiaobingqianrui/p/10020578.html
Copyright © 2020-2023  润新知