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
Select 列名
From 表名
Where 列 操做符 (Select 列名 From 表名)
******使用注意:
(1)子查询语句必须针对一个字段进行查询操做,不然抛错:Operand should contain 1 column(s
Select 字段 from (select * from 表名)as 别名
*********此处的使用注意:
(1)子查询在from 语句以后,其实就是生成了一个临时表,因此子查询能够查询多个字段;
(2)子查询 在from 以后的时候,必需要对表取一个别名进行使用
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
注意事项: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 定义完成并执行后才会有,变量没法指定变量的类型,是在赋值的时候自动推断变量的类型;