• 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" 表中没有匹配,也会列出这些行
          
  • 相关阅读:
    mysql改为mysqli几项注意
    修改链接服务器地址提高下载速度
    果然最适合码农的博客还是博客园
    mysql
    php 检测字符集
    Internet Download Manager has been registered with a fake Serial Number
    SVN图标不见了
    理解createTrackbar函数
    程序块结构
    数组初始化
  • 原文地址:https://www.cnblogs.com/wsq-1/p/12517761.html
Copyright © 2020-2023  润新知