zoukankan      html  css  js  c++  java
  • SQL__关键字(一)

    1、今日内容:

    • SELECT TOP
    • LIKE
    • 通配符
    • IN
    • BETWEEN
    • 别名
    • 连接(JOIN)
      • INNER JOIN
      • LEFT JOIN
      • RIGHT JOIN
      • FULL JOIN

    2、具体内容:

    column_name:列名    table_name:表名   operator value:操作符值
    
    • SELECT TOP 子句:

      select top 子句用于规定要返回的记录的数目。

      select top 子句对于拥有数千条记录的大型表来说,是非常有用的。

    • Server / MS Access 语法:

      # SELECT TOP number|percent column_name(s) FROM table_name;
      
    • My SQL语法:

      # SELECT column_name(s) FROM table_name LIMIT number;
      # 例:
        SELECT * FROM loan_demand lIMIT 5;
      
    • Oracle 语法:

      # SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;
      # 例:
        SELECT * FROM table_name WHERE ROWNUM <=5; 
      
    • LIKE 子句:

      LIKE 操作符用于在WHERE 子句中搜索列中的指定模式。

      • 语法:

        # SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
        -- pattern: '%a'  //以a结尾的数据
                    'a%'  //以a开头的数据
                    '%a%'  //含有a的数据
                    '_a_'  //三位且中间字母是a的数据
                    '_a'  //两位且结尾字母是a的数据
                    'a_'  //两位且开头字母是a的数据
        
    • 通配符:

      通配符可用于替代字符串中的任何其他字符。

      在sql中,通配符与SQL LIKE 操作符一起使用。SQL通配符用语搜索表中的数据。

      # 在SQL中,可使用以下通配符:
        %   替代0个或多个字符
        -   替代一个字符
        [charlist]   字符列中的任何单一字符
        [^charlist]或[!charlist]    不在字符列中的任何单一字符
      
      例:
        # 使用 % 通配符:
        SELECT  * FROM loan_demand WHERE loan_no LIKE '%G%';
        # 使用 _ 通配符:
        SELECT  * FROM loan_demand WHERE loan_no LIKE '%G_%';
        # 使用 [charlist] 通配符:
        SELECT * FROM Websites WHERE name REGEXP '^[GFs]';     //MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式
      
    • IN 操作符:

      IN 操作符允许您在 WHERE 子句中规定多个值。

      • 语法:

        SELECT column_name(s) FROM table_name WHERE colomn_name IN (value1,value2,...); 
        
      • 例:

        SELECT * FROM loan_demand WHERE bank_num IN (0,2);
        
    • BETWEEN 操作符:

      BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值,文本或者日期。

      • 语法:

        SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; 
        
      • 例:

        SELECT * FROM loan_demand WHERE id BETWEEN 2400 AND 2450;
        
    • 别名:

      通过使用 SQL,可以为表名称或列名称指定别名。(基本上,创建别名是为了让列名称的可读性更强)

      • 语法:

        SELECT column_name AS alias_name FROM table_name;   # alias_name 别名
        
      • 例:

        # 如果列名称包含空格,要求使用双引号或方括号
        # 列的别名实例:
        SELECT name AS n, country AS c FROM Websites;  //指定了两个别名,一个是name的别名,一个是country的别名
        SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_info FROM Websites;  // 把三个列(url、alexa 和 country)结合在一起,并创建一个名为 "site_info" 的别名
        # 表的别名实例:
        SELECT w.name, w.url, a.count, a.date FROM Websites AS w, access_log AS a WHERE a.site_id=w.id and w.name="菜鸟教程";  //用 "Websites" 和 "access_log" 表,并分别为它们指定表别名 "w" 和 "a"
        
    • 连接(JOIN):

      JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。

      不同的JOIN类型:
      1. INNER JOIN:如果表中有至少一个匹配,则返回行
      2. LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
      3. RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
      4. FULL JOIN:只要其中一个表中存在匹配,则返回行
      
      • INNER JOIN:

        SQL INNER JOIN

        INNER JOIN 关键字在表中存在至少一个匹配时返回行。

        • 语法:

          SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name =table2.colimn_name;
          

          或:

          SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name;
          # INNER JOIN 与 JOIN 是相同的。
          
        • 例:

          SELECT Websites.name, access_log.count, access_log.date
          FROM Websites
          INNER JOIN access_log
          ON Websites.id=access_log.site_id
          ORDER BY access_log.count;
          # INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "Websites" 表中的行在 "access_log" 中没有匹配,则不会列出这些行。
          
      • LEFT JOIN:

        SQL LEFT JOIN

        LEFT JOIN 关键字从左表(table1)返回的所有行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为NULL。

        • 语法:

          SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;
          

          或:

          SELECT column_name(s) FROM table1 LEFT OUTER JOIN table2 ON table1.column_name=table2.column_name;
          # 在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN.
          
        • 例:

          SELECT Websites.name, access_log.count, access_log.date
          FROM Websites
          LEFT JOIN access_log
          ON Websites.id=access_log.site_id
          ORDER BY access_log.count DESC;
          # LEFT JOIN 关键字从左表(Websites)返回所有的行,即使右表(access_log)中没有匹配。
          
      • RIGHT JOIN:

        SQL RIGHT JOIN

        RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为NULL。

        • 语法:

          SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;
          

          或:

          SELECT column_name(s) FROM table1 RIGHT OUTER JOIN table2 ON table1.column_name=table2.column_name;
          # 在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN.
          
        • 例:

          SELECT Websites.name, access_log.count, access_log.date
          FROM access_log
          RIGHT JOIN Websites
          ON access_log.site_id=Websites.id
          ORDER BY access_log.count DESC;
          # RIGHT JOIN 关键字从右表(Websites)返回所有的行,即使左表(access_log)中没有匹配
          
      • FULL JOIN:

        SQL FULL OUTER JOIN

        FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表存在匹配,则返回行。结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

        • 语法:

          SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name;
          
        • 例:

          SELECT Websites.name, access_log.count, access_log.date
          FROM Websites
          FULL OUTER JOIN access_log
          ON Websites.id=access_log.site_id
          ORDER BY access_log.count DESC;
          # FULL OUTER JOIN 关键字返回左表(Websites)和右表(access_log)中所有的行。如果 "Websites" 表中的行在 "access_log" 中没有匹配或者 "access_log" 表中的行在 "Websites" 表中没有匹配,也会列出这些行
          
  • 相关阅读:
    【Azure 应用服务】在Azure App Service多实例的情况下,如何在应用中通过代码获取到实例名(Instance ID)呢?
    【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
    【Azure Developer】使用Azure Key Vault 的Key签名后,离线验证的一些参考资料
    【Azure Function】调试 VS Code Javascript Function本地不能运行,报错 Value cannot be null. (Parameter 'provider')问题
    【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(Xms512m Xmx1204m)?
    【Azure API 管理】APIM添加Logtoeventhub的策略后,一些相关APIM与Event Hub的问题
    【Azure API 管理】为调用APIM的请求启用Trace 调试APIM Policy的利器
    【Azure 事件中心】China Azure上是否有Kafka服务简答
    【Azure 应用服务】探索在Azure上设置禁止任何人访问App Service的默认域名(Default URL)
    【Azure 微服务】记一次错误的更新Service Fabric 证书而引发的集群崩溃而只能重建
  • 原文地址:https://www.cnblogs.com/wsq-1/p/12517761.html
Copyright © 2011-2022 走看看