Mysql__关键字(一)

1、今日内容:

  • SELECT TOP
  • LIKE
  • 通配符
  • IN
  • BETWEEN
  • 别名
  • 连接(JOIN)
    • INNER JOIN
    • LEFT JOIN
    • RIGHT 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的数据
  • 通配符:

    扫描二维码关注公众号,回复: 9929455 查看本文章

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

    在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" 表中没有匹配,也会列出这些行

猜你喜欢

转载自www.cnblogs.com/wsq-1/p/12517761.html