• MYSQL 高级语法


    1.高级建表和插入

      使用creat 和select 进行建表操作,中间采用AS 标识符;

    CREATE TABLE new_table
    AS
    SELECT *
    FROM exist_table
    LIMIT 10;

      从一个表中复制列插入到指定的表中:

    INSERT INTO table2
    SELECT * FROM table1;

     2.select 子查询

      子查询就是一个select 语句作为另一个查询语句的输入值,主要分为以下三种情况:

    • 出现在where 语句处 的子查询语句,作用是作为过滤的条件来使用;
      Select 列名
      From 表名
      Where 列 操作符 (Select 列名 From 表名)

      ******使用注意:
      (1)子查询语句必须针对一个字段进行查询操作,否则抛错:Operand should contain 1 column(s
    • 出现在from 语句处的子查询语句,作用是作为一个临时的表进行查询;
      Select 字段
      fromselect * from 表名)as 别名

      *********此处的使用注意:
      (1)子查询在from 语句之后,其实就是生成了一个临时表,所以子查询可以查询多个字段;
      (2)子查询 在from 之后的时候,必须要对表取一个别名进行使用
    • 出现在Select list 语句处的子查询语句,作用是作为一个字段值进行返回;
    select 字段1,(select 字段2 from 表名)
    from 表名

    ***********此处的使用注意:
    (1)子查询语句必须针对一个字段进行查询操作,否则抛错:Operand should contain 1 column(s)
    (2)子查询语句返回的必须是一行数据,否则抛错:Subquery returns more than 1 row

    3.多表操作

    • 行合并操作
      格式:
      select * 
      from 表A 
      union (union All)
      select * 
      from 表B;
      
      ******使用注意:
      (1)操作合并的两个表,必须是字段或者列数相同;
      (2)union 对表做合并操作的时候,会进行去重操作;
      (3)union all 对表做合并操作的时候,不会进行去重操作;
      (4)使用合并操作的时候,不能进行order by操作,如果需要进行排序操作,可以在合并表结束后,使用子查询的方式,进行order by 操作; 

     4.行结合  Join :

      SQL 的join 子句基于多个表之间的相同字段,进行表之间的行结合操作,主要分为Left Join,Right Join ,Inner Join ,Full Outer Join四种,以下为这四种操作描述:

    • INNER JOIN:Join 操作的默认操作(使用Join 即可表示Inner Join ),如果关键字在表中存在一个匹配的时候,则返回行;
       
    • LEFT JOIN:左表返回所有行,右表进行匹配,如果有匹配值,则返回对应的字段值,如果没有匹配值,则全部置为Null 值;
       
    • RIGHT JOIN:与Left Join 操作相反,右表返回所有行,左表进行匹配,如果有匹配值,则返回对应的字段值,如果没有匹配值,则全部置为Null 值;
       
    • FULL Outer JOIN:关键字只要左表和右表其中一个表中存在匹配,则返回行,它结合了 LEFT JOIN 和 RIGHT JOIN 的结果;

      

      注意事项:

      

    1)多表关联的核心原理在于笛卡尔积,参考文章(https://www.cnblogs.com/nick-huang/p/4919178.html#my_inner_label1);
    2)多表关联可能会导致数据的重复,也就是在建立关联时的 1:1,1:N,N:N 的形式,所以需要注意数据的去重工作,要先处理每个表的数据,再进行关联操作;

    5.MySql 变量

    • 变量的使用场景:
      1)代码中很多地方都会重复用到同一段代码;
      2)每次重新使用代码的时候,可能只需要修改某些参数即可;例如:时间,区域
      3)构建一个标识字段,帮助做数据分析判别。例如:对某类型字段进行排序分析;
    • 变量的定义规则: 
      1)变量声明: 使用@变量名;
      2)变量命名组成元素可以是:字母、数字、下划线、‘.’ 、'$'几种元素;
      3)变量的赋值:
              使用: set @变量名 =value;
              使用: set @变量名 :=value;
              使用: select 方式赋值:select @变量名:=value;(注意:该种方式声明变量只能使用‘:=’进行,因为在select 语句中 ‘=’会被认为是比较操作符)
      4)变量的使用:直接调用变量名即可;
      **********注意:
      变量的声明属于会话级别,所以变量在SQL 定义完成并执行后才会有,变量无法指定变量的类型,是在赋值的时候自动推断变量的类型;  
  • 相关阅读:
    按单生产案例
    【转】linux中执行外部命令提示" error while loading shared libraries"时的解决办法
    【转】WARNING! File system needs to be upgraded. You have version null and I want version 7. Run the '${HBASE_HOME}/bin/hbase migrate' script. 的解决办法
    根据Rowkey从HBase中查询数据
    【转】在一个Job中同时写入多个HBase的table
    sqoop 使用
    给VMware下的Linux扩展磁盘空间(以CentOS6.3为例)
    chrome 版本 29.0.1547.76 m 解决打开新标签页后的恶心页面的问题
    tomcat7+jdk的keytool生成证书 配置https
    如何打包和生成你的Android应用程序
  • 原文地址:https://www.cnblogs.com/hello-alan/p/11474952.html
Copyright © 2020-2023  润新知