zoukankan      html  css  js  c++  java
  • <<SQL必知必会>> -- 笔记2

    按照书的指南,选用MySQL作为DBMS,在使用例句之前需要先创建表
    在官网下载的脚本在MAC上运行有报ASC字符的错,新建文件复制后解决
    以下是去掉注释的SQL脚本
    百度网盘链接
    密码:okgi

    检索数据

    SELECT

    单列
       SELECT prod_name
       FROM Products;
    
    多列
       SELECT prod_id, prod_name, prod_price
       FROM Products;
    
    所有列

    通配符*

       SELECT *
       FROM Products;
    
    检索不同的值

    如果结果有相同的值,只出现一次

       SELECT DISTINCT vend_id
       FROM Products;
    
    限制检索结果

    返回不超过X行的结果

       SELECT prod_name 
       FROM Products 
       LIMIT 5 OFFSET 5;
    

    后面的5表示从第五行算起
    上述也可以写成

       SELECT prod_name 
       FROM Products 
       LIMIT 5,5;
    

    三种注释

    --#/**/



    排序检索结果

    ORDER BY

    排序
      SELECT prod_name
      FROM Products
      ORDER BY prod_name;
    
    按多个列排序
      SELECT prod_id, prod_price, prod_name 
      FROM Products 
      ORDER BY prod_price, prod_name;
    
    按列的位置排序
      SELECT prod_id, prod_price, prod_name 
      FROM Products 
      ORDER BY 2,3;
    
    指定排序方向

    ASCDESC,默认升序

      SELECT prod_id, prod_price, prod_name 
      FROM Products 
      ORDER BY prod_price DESC;
    


    过滤数据

    WHERE

    单个值
      SELECT prod_name, prod_price
      FROM Products 
      WHERE prod_price = 3.49;
    
    不匹配
      SELECT prod_name, prod_price
      FROM Products 
      WHERE prod_price <> 'DLLO1';
    
    范围值
      SELECT prod_name, prod_price
      FROM Products 
      WHERE prod_price BETWEEN 5 AND 10;
    
    空值
      SELECT cust_name
      FROM CuStomers
      WHERE cust_email IS NULL;
    


    高级数据过滤

    组合WHERE

    AND
      SELECT prod_id, prod_price, prod_name
      FROM Products
      WHERE vend_id = 'DLL01' AND prod_price <= 4;
    
    OR
      SELECT prod_name, prod_price 
      FROM Products 
      WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';
    

    AND的优先级高于OR,必要时用括号确定优先级

      SELECT prod_name, prod_price 
      FROM Products
      WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01')
      AND prod_price >= 10;
    
    IN
      SELECT prod_name, prod_price 
      FROM Products 
      WHERE vend_id IN ( 'DLL01', 'BRS01' )
      ORDER BY prod_name;
    
    NOT
      SELECT prod_name 
      FROM Products 
      WHERE NOT vend_id = 'DLL01'
      ORDER BY prod_name DESC;
    


    通配符

    LIKE

    %通配符

    表示任何字符出现任意次数,包括0次

      SELECT prod_id, prod_name 
      FROM Products 
      WHERE prod_name LIKE 'Fish%';
    
    _通配符

    匹配任意单个字符

      SELECT prod_id, prod_name 
      FROM Products 
      WHERE prod_name LIKE '__ inch teddy bear';
    
    []通配符

    指定一个字符集
    在MySQL 8中使用似乎没有用,使用RLIKE和REGEXP和方括号都没用
    建议查看手册,关于正则表达式部分

      SELECT cust_contact
      FROM Customers 
      WHERE cust_contact regexp 'J%'
      ORDER BY cust_contact;
    -- after test, the '[]' is useless
    
  • 相关阅读:
    Java File类应用:递归遍历文件夹和递归删除文件
    综合应用题:多线程复制文件(知识点:多线程、随机读写流)
    Java IO流之随机读写流RandomAccessFile
    Java之枚举----小试牛刀练习
    Java之枚举
    PHP笔试题及答案
    静态方法何时使用
    你怎么理解并使用静态方法和实例化方法的?
    99%的人理解错 HTTP 中 GET 与 POST 的区别
    描述一下大流量高并发量网站的解决方案
  • 原文地址:https://www.cnblogs.com/burymyname/p/11907256.html
Copyright © 2011-2022 走看看