MYSQL 高级语法

1.高级建表和插入html

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

CREATE TABLE new_table
AS
SELECT *
FROM exist_table
LIMIT 10;

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

INSERT INTO table2
SELECT * FROM table1;

 2.select 子查询htm

  子查询就是一个select 语句做为另外一个查询语句的输入值,主要分为如下三种状况:blog

  • 出如今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四种,如下为这四种操做描述:io

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

  

  注意事项:table

  

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

5.MySql 变量class

  • 变量的使用场景:
    1)代码中不少地方都会重复用到同一段代码;
    2)每次从新使用代码的时候,可能只须要修改某些参数便可;例如:时间,区域
    3)构建一个标识字段,帮助作数据分析判别。例如:对某类型字段进行排序分析;
  • 变量的定义规则: 
    1)变量声明: 使用@变量名;
    2)变量命名组成元素能够是:字母、数字、下划线、‘.’ 、'$'几种元素;
    3)变量的赋值:
            使用: set @变量名 =value;
            使用: set @变量名 :=value;
            使用: select 方式赋值:select @变量名:=value;(注意:该种方式声明变量只能使用‘:=’进行,由于在select 语句中 ‘=’会被认为是比较操做符)
    4)变量的使用:直接调用变量名便可;
    **********注意:
    变量的声明属于会话级别,因此变量在SQL 定义完成并执行后才会有,变量没法指定变量的类型,是在赋值的时候自动推断变量的类型;  
相关文章
相关标签/搜索