1.高级建表和插入

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

CREATE TABLE new_table
AS
SELECT *
FROM exist_table
LIMIT ;

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

INSERT INTO table2
SELECT * FROM table1;

 2.select 子查询

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

  • 出现在where 语句处 的子查询语句,作用是作为过滤的条件来使用;

    Select 列名
    From 表名
    Where 列 操作符 (Select 列名 From 表名) ******使用注意:
    (1)子查询语句必须针对一个字段进行查询操作,否则抛错:Operand should contain 1 column(s
  • 出现在from 语句处的子查询语句,作用是作为一个临时的表进行查询;
    Select 字段
    from (select * 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; ******使用注意:
    ()操作合并的两个表,必须是字段或者列数相同;
    ()union 对表做合并操作的时候,会进行去重操作;
    ()union all 对表做合并操作的时候,不会进行去重操作;
    ()使用合并操作的时候,不能进行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 的结果;

  

  注意事项:

  

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

5.MySql 变量

  • 变量的使用场景:

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

MYSQL 高级语法的更多相关文章

  1. mysql 高级语法手记

    Select字段时: CASE  WHEN  type=1  THEN  1  ELSE  0  END  as  type1 sum和count同样可以使用case then 时间戳转时间: FRO ...

  2. mysql高级排序&高级匹配查询示例

    在大多数应用场景下,我们使用mysql进行查询时只会用到'=', '>' , '<' , in, like 等常用的方法,看起来,大多数情况下,已经足以应付我们的小型应用了.不过,在一些特 ...

  3. Mysql高级之触发器

    原文:Mysql高级之触发器 触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete). 看以下事件: 完 ...

  4. Mysql高级之游标

    原文:Mysql高级之游标 什么是游标?select 语句也许一次性会取出来n条语句,那么游标便可以一次取出来select中的一条记录.每取出来一条,便向下移动一次!可以实现很复杂逻辑! 上面还有有一 ...

  5. 第四章 MySQL高级查询(二)

    第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists ...

  6. 第三章 MySQL高级查询(一)

    第三章 MySQL高级查询(一) 一.SQL语言的四个分类 1.       DML(Data Manipulation Language)(数据操作语言):用来插入,修改和删除表中的数据,如INSE ...

  7. MySQL高级知识(三)——索引

    前言:索引在sql调优部分占据着重要的位置,了解并深入索引对我们来说也是非常重要的.本篇主要介绍MySQL中索引的相关知识点. 1.索引是什么 MySQL官方对索引的定义:索引(Index)是帮助My ...

  8. mysql高级、索引

    一.mysql高级 1.视图 # 引子 select * from emp left join dep on emp.dep_id = dep.id union select * from emp r ...

  9. MYSQL基础语法的使用

    喜欢的朋友可以关注下,粉丝也缺. MYSQL介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之 ...

随机推荐

  1. ReactNative: 使用输入框TextInput组件

    一.简介 一个应用程序中,输入框基本不可或缺,它衍生的搜索功能在很多APP中随处可见.在iOS开发中,使用的输入框组件是UITextView和UITextField,在React-Native中使用的 ...

  2. 前端小白webpack学习(一)

    俗话说得好,好记性不如烂笔头. 之前就在学习中看过webpack的教程,然而一段时间没用,火速的忘光了.写这篇博文,做个总结,也让自己以后有个地方回顾. 看webpack之前,我先去看了一下官方文档, ...

  3. 体感在js中的调用

    体感技术,在于人们可以很直接地使用肢体动作,与周边的装置或环境互动,而无需使用任何复杂的控制设备,便可让人们身临其境地与内容做互动. 体感分为三大类: 惯性感测:主要是以惯性传感器为主,例如用重力传感 ...

  4. 【已解决】前端到后端400错误(The server cannot or will not process the request due to...)

    看到400错误,一般是请求无效.出现该异常一般有三种情况: 第一种情况: 前端提交的内容在后端一般都用String类型来接收,用Date类型接收会报错. 第二种情况: 在提交表单的时候,填写的数据类型 ...

  5. centos添加用户并赋予管理员权限

    用centos时,root用户一般都是超级管理员使用的,一般不轻易给别人,但是有时候同事安装软件时需要root账号,又不得不给,只能重新建一个用户,并赋予管理员权限.下面介绍创建用户并赋予管理员权限的 ...

  6. 洗牌算法及 random 中 shuffle 方法和 sample 方法浅析

    对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章<扫雷与算 ...

  7. 关于如何获取项目所部署的本机IP和端口的问题

    关于如何获取项目所部署的本机IP和端口的问题 今天在写一个需求的时候碰到一个不常见的问题,在没有继承或者实现服务器提供的接口或者实现类的时候,比如说部署在tomacat上,某个类不去继承servelt ...

  8. JS基础语法---arguments对象伪数组

    引入: //计算两个数字的和 function f1(x, y) { return x + y; } //计算三个数字的和 function f2(x, y, z) { return x + y + ...

  9. 一文解读HTTP (转)

    先扒一扒HTTP协议背景? HTTP(HyperText Transfer Protocol) 即超文本传输协议,现在基本上所有web项目都遵从HTTP协议(协议就是一种人为的规范). 目前绝大部分使 ...

  10. 来个ADG switch over

    怕以后忘了,做个试验记录一下,这个switch比较常规1]主--备库先查一遍,如下的话就可以开始了两者当前序列一致角色状态如下--主库SQL> archive log list;数据库日志模式 ...