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;
    
  • 相关阅读:
    Java EE javax.servlet中的ServletContext接口
    Java EE javax.servlet中的ServletConfig接口
    MD5加密工具
    redis常见数据操作
    Java文件上传与下载
    JSP技术
    spring集成swagger
    freemarker模板引擎的使用
    log4j生成日志
    Java自定义注解
  • 原文地址:https://www.cnblogs.com/yesyes/p/15375200.html
Copyright © 2011-2022 走看看