zoukankan      html  css  js  c++  java
  • mysql数据检索和过滤

    SELECT操作符

    # 获取products表中最贵的商品价格
    # DESC 表示降序,ASC表示升序(默认值)
    SELECT prod_name, prod_price
    FROM products
    ORDER BY prod_name 
    DESC LIMIT 1;
    

    WHERE操作符

    #检索价格小于等于10美元的所有产品
    SELECT prod_name, prod_price
    FROM products
    WHERE prod_price <= 10;
    
    #如果将值与字符串类型的列进行比较,则需要限定引号。用来与数值列进行比较的值不用引号.
    #检索名字为fuces的商品
    SELECT prod_name, prod_price
    FROM products
    WHERE prod_name = 'fuses';
    
    # 检索价格在5美元和10美元之间或日期在指 定的开始日期和结束日期之间的所有产品
    SELECT prod_name, prod_price
    FROM products
    WHERE prod_price BETWEEN 5 AND 10;
    
    # 空值检测。SELECT语句有一个特殊的WHERE子句,可用来检查具有NULL值的列。 这个WHERE子句就是IS NULL子句。
    # 返回没有价格(空prod_price字段,不是价格为0)的所有产品
    SELECT prod_name, prod_price
    FROM products
    WHERE prod_price IS NULL;
    

    OR AND IN操作符

    # 检索由1002或者1003供应商制造的所有产品的产品名和价格
    SELECT prod_name, prod_price
    FROM products
    WHERE vend_id = 1002 OR vend_id = 1003;
    
    
    # 选择由供应商1002或1003制造的且价格都在10美元(含)以上的任何产品
    SELECT prod_name, prod_price
    FROM products
    WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;
    
    
    # 检索供应商1002和1003制造的所有产品(IN取合法值的由逗号分隔的清单,全都括在圆括号中)
    SELECT prod_name, prod_price
    FROM products
    WHERE vend_id IN (1002, 1003)
    OEDER BY prod_name;
    

    NOT操作符

    WHERE子句中用来否定后跟条件的关键字

    # 列出除1002和1003之外的所有供应 商制造的产品
    SELECT prod_name, prod_price
    FROM products
    WHERE vend_id NOT IN (1002, 1003)
    OEDER BY prod_name;
    

    LIKE操作符

    百分号通配符

    匹配给定位置的0个、1个或多个字符

    # 找出所有以词jet起头的产品
    SELECT prod_name, prod_price
    FROM products
    WHERE prod_name LIKE 'jet%';
    
    # 匹配任何位置包含文本anvil的值,而不论它之前或之后出现什么字符
    SELECT prod_name, prod_price
    FROM products
    WHERE prod_name LIKE '%anvil%';
    
    

    注意:尾空格可能会干扰通配符匹配。例如,在保存词anvil 时 , 如果它后面有一个或多个空格 ,则子句 WHERE prod_name LIKE '%anvil'将不会匹配它们,因为在最后的l后有多余的字符。解决这个问题的一个简单的办法是在搜索模式最后附加一个%。

    注意:%不能匹配null值,即WHERE prod_name LIKE '%'不能匹配用值NULL作为产品名的行

    下划线通配符

    下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符。

    SELECT prod_name, prod_price
    FROM products
    WHERE prod_name LIKE '_ ton anvil';
    
    

    可以匹配 prod_name为 1 ton anvil,2 ton anvil的商品, 不能匹配为12 ton anvil的商品。

    正则匹配

    正则匹配模式没有完全实现REGEXP的语法,他支持下面这几种匹配方式

    # 匹配连在一起的4位数字
    SELECT prod_name, prod_price
    FROM products
    WHERE prod_name REGEXP '[[:digit:]]{4}';
    
    # \\表示转义字符,mysql要用两个斜杠,一个被用于mysql的解释器,一个用于REGEXP的解释器
    SELECT prod_name, prod_price
    FROM products
    WHERE prod_name REGEXP '\\([0-9] sticks?\\)'
    ORDER BY prod_name;
    
    # TNT (1 stick)
    # TNT (2 sticks)
    

    计算字段

    计算字段类似mongodb中的虚拟字段,后段把拼装好的字段供前端消费。mysql使用Concat函数拼接字段

    # Concat中多个字符串之间用逗号分隔
    SELECT Concat(vend_name, '(', vend_country, ')' AS vend_title
    FROM vendors
    ORDER BY vend_name;
    #  结果:Jet Set(USA)
    

    算术计算

    SQL支持加减乘除运算

    # 输出中显示的 expanded_price 列为一个计算字段, 此计算为 quantity*item_price
    SELECT prod_id, item_price, quantity, quantity*item_price AS expanded_price
    FROM orderitems
    WHERE order_num = 20005;
    
  • 相关阅读:
    发现个atan2的正确使用方式
    Forward+ Shading架构
    fatal: unable to connect to gitee.com: gitee.com[0: 180.97.125.228]: errno=Unknown error 解决方案
    HDFS HA(高可用性)集群规划
    如何使用RTP引擎对语音编码进行转码
    关于 Angular 应用 tsconfig.json 中的 target 属性
    浅谈 Orbeon form builder 的权限控制
    关于 Angular 应用 tsconfig.json 中的 lib 属性
    orbeon form 通过 url 的方式同第三方应用集成的开发明细
    orbeon form 的配置介绍
  • 原文地址:https://www.cnblogs.com/yesyes/p/15375200.html
Copyright © 2011-2022 走看看