• sql语法的顺序
    1 select
    2 distinct
    3 from
    4 left join
    5 on
    6 where
    7group by
    8 having
    9 order by
    10limit
    -数据的执行顺序
    1 from 首先要确定是那张表
    2 on 表的关联条件
    3 where 对表数据进行过滤
    4 group by 对数据进行分组
    5 having 条件在次过滤
    6 select 显示数据
    7 distinct 去重复数据
    8 order by 显示好的数据进行排序
    9 limit 分页显示
  • 注意
    group by 条件后每一个条件的列 都是有效列,不能是聚合函数
    null也是一个组
    除了聚合函数中的字段,select 之后的列必须在group by之后
  • 注意点
    1 group by在where之后
    2 开窗函数的返回结果可以进行过滤吗?窗口函数是在select之后的,而select是在where和group by之后,
    3 任何列都可以order by
    4 limit是在最后执行
  • sql是在数据库中怎么执行的
    1 sql在客户端写
    2 经过连接器对权限进行控制
    3 首先对缓存进行查询,
    4 没有缓存就进行语法校验
    5 sql优化生成执行计划
    6 执行引擎,返回数据结果,
  • 数据库是面向关系开发
    在数据库中用表来存放数据,表与表之间是有联系的,
    二维表table 行 row 列 column
    表分为是基础表,派生表(查询结果),虚拟表(视图),
    数据关系的操作就是crud
    select 语句是用于查询的字段,可以有表达式,函数, select 可以称为是投影显示,
    where 语句是对指定查询的字段进行添加条件过滤,称为是选择,
    order by语句是对查询出来的结果数据进行排序,
    group by语句是很特殊的作用,它能够对数据结构关系进行改变,
    示例:group by 之后会派生表数据进行条件分组,创建一个全新的关系,所有会导致不是关于组的操作select之后是不能出现的,
  • union并集 intersect 交集 except/minus 差集
    这些集合操作的作用是将两个集合合并成一个集合,
    满足两个条件
    1 两个集合中的字段数量和顺序必须相同,
    2 两个集合中的字段类型必须匹配,
    union 是并集但是排除掉了重复数据
    union all是保留了所有数据,包含了重复数据,
    intersect 是返回两个集合中的交集数据,同时排除了重复数据
    except和minus是获取两个集合中的差集,第一个集合有的数据,第二个集合不能有,排除了重复数据,
    distinct也是具有排除重复数据的能力,
  • join
    内连接 Inner join 查询出两个表的交集
    left outer join 返回左表的所有数据,右表的返回是满足条件的数据,
    right outer join 右外连接 返回右表的所有数据,左表只返回满足条件的数据,
    full outer join 全外连接,
    交叉连接叫做笛卡尔乘积,两个表的行数相乘
  • 分页
    1 mysql :select columns from table limit 3
    2 oracle : select columns from table where rownum <= 3 注意rownum 是oracle数据库自动生成的一个列 用来标记行数的,
  • like
    通配符 % 代表是零个,一个或是多个占位符,
    _ 代表是一位,
  • in
    in() 就是将查询的数据条件放到in函数中,
    not in() 排除条件
  • 复制表数据
-- mysql 创建一个新表仿照某个已存在的表
create table haha like emp
-- 将数据导入到新表中
insert into haha select * from emp
-- 数学函数
select sum(salary),avg(salary),count(1),max(salary),min(salary) from haha
-- 字符串长度 左截取 右截取 清空两侧空格
select length(name) from emp where name = 'Sam'
select left((select name from emp where name = 'Sam'),1 )
select right((select name from emp where name = 'Sam'),1)
select left(name,1) from emp
select ltrim(' d ')
--  提取字符串 数据 开始位置 长度
select substring('12345',1,2)
  • case函数
-- case函数使用  具有两种格式
select case departmentid when '1' then '部门一' when '2' then '部门二' else departmentid end from emp
-- case 搜索函数
select case when departmentid='1' then '部门一' when departmentid='2' then '部门二' else '0' end from emp
select
case
when departmentid='1' and salary >6666 then '部门一大亨'
when departmentid='2' and salary >6666 then '部门二大亨'
else '穷逼' end from emp
-- case可以应用与行转列 将一个列中的一个值作为列名 则这个列名内容来显示另一个字段的内容
-- 还需要max来显示出内容 最后用分组来确定人名
select * from score
select 姓名,
max(case 课程 when '语文' then 分数 else '0' end) as '语文',
max(case 课程 when '数学' then 分数 else '0' end) as '数学',
max(case 课程 when '物理' then 分数 else '0' end) as '物理'
from score group by 姓名
-- 还可以使用if函数
select 姓名,
max(if(课程='语文',分数,0)) as '语文',
max(if(课程='数学',分数,0)) as '数学',
max(if(课程='物理',分数,0)) as '物理'
from score group by 姓名
-- count() 合并连接 但是使用group by进行分组之后会每一组都只返回一条数据
-- 使用group_coucat()可以将分组下的字段变成一行进行输出可以指定分隔符
select concat(姓名,课程) as 姓名,分数 from score
select 姓名,GROUP_CONCAT(课程) as 'key' from score group by 姓名
select 姓名,GROUP_CONCAT(课程,分数,':') from score group by 姓名
  • 临时表
    临时表是在sql执行中产生的,这个表会自动删除的,
  • DML数据操作语言
    就是对数据表中的数据进行操作,
    insert into table () values() ;
    update table set key=value ;
    delete from table where key =value;
    delete from table 删除所有记录
    -DDL数据定义语言
    作用就是用来创建对象的,表,视图 索引
    create database name 用于创建数据库
    create table tablename(col type) 创建表
    drop table
    alter table tablename add col (drop col) 用来修改表的字段或是类型添加,删除

sql的执行顺序(from平凡世界)相关推荐

  1. mysql oracle 查询语句执行顺序_MySQL sql语句执行顺序

    (8)     DISTINCT (1)     FROM (3)      JOIN (2)     ON (4)     WHERE (5)     GROUP BY (6)     HAVING ...

  2. 25、Sql语句执行顺序

    sql语句定义和执行顺序 摘自<MySQL技术内幕:SQL编程> sql语句定义的顺序 (1) SELECT (2)DISTINCT<select_list> (3) FROM ...

  3. 带left join 的sql的执行顺序

    1.笛卡尔积(Cartesian product) 顾名思义, 这个概念得名于笛卡儿. 在数学中,两个集合 X 和 Y 的笛卡儿积(Cartesian product),又称直积,表示为 X × Y, ...

  4. 【转】SQL 语句执行顺序

    From:http://www.jellythink.com/archives/924 Oracle-SQL语句执行原理和完整过程详解:https://wenku.baidu.com/view/398 ...

  5. SQL 语句执行顺序

    From:http://www.jellythink.com/archives/924 Oracle-SQL语句执行原理和完整过程详解:https://wenku.baidu.com/view/398 ...

  6. php语句执行顺序,sql语句执行顺序是什么

    sql语句执行顺序:1.最先执行from tab:2.where语句是对条件加以限定:3.分组语句[group by-- having]:4.聚合函数:5.select语句:6.order by排序语 ...

  7. mysql 执行顺序 SQL语句执行顺序分析

    最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...

  8. sql语句执行顺序及简单优化

    SQL的执行顺序 (1)from    (表关联,是从后往前.从右到左解析的 ) 所以尽量把数据量大的表放在最左边来进行关联 (2) on     需要从哪个数据表检索数据 (3) join   多表 ...

  9. 当WHERE子句、GROUP BY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序

    当WHERE子句.GROUP BY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序如下: (1) 执行WHERE子句,从表中选取行. (2) 由GROUP BY 子句对选取的行进行分组. ...

  10. 整理:sql server 中sql语句执行顺序

    原文地址为: 整理:sql server 中sql语句执行顺序 SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中 ...

最新文章

  1. 第一篇:时间和全局状态
  2. mysql mmm 主主_Microsoft Azure部署MYSQL-MMM(2)配置主主复制
  3. 编译原理实验语义分析_Windows MVSC编译器实现Xtended Flow Guard(XFG)保护机制的原理分析...
  4. 初识React Native虚拟DOM节点及API
  5. mysql mysql_row 整行数据_有关mysql中ROW_COUNT()的小例子
  6. linux下安装Python3.6.1
  7. MongoDB学习笔记~官方驱动的原生Curd操作
  8. SAP UI5 SmartForm 智能表单控件的使用方法介绍试读版
  9. 2020华为软件精英挑战赛初赛-Java版本
  10. 微信公众号查题搜题平台 功能齐全
  11. 杜立特尔(Doolittle)分解法(LU分解法)
  12. 【京东商城首页实战4】topbanner制作
  13. 在新旧交替的过程中,我们成长着—导师制,舞台和挑战
  14. [渝粤教育] 西南科技大学 会计电算化 在线考试复习资料2021版
  15. 团队管理的四大挑战——留人篇
  16. 浅谈客户端,服务器端,终端
  17. python对于0x01的处理
  18. mysql 数字金钱转中文金钱函数
  19. ARM发布 Cortex-M35P保护物联网智能连接
  20. matlab ezplot hod,MATLAB常用命令

热门文章

  1. Appium+python自动化17-启动iOS模拟器APP源码案例
  2. sqlldr导入数据(以PostgreSqlOracle为例)
  3. CSS 相对定位与绝对定位
  4. 拓端tecdat|Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
  5. 拓端tecdat|R语言 PCA(主成分分析),CA(对应分析)夫妻职业差异和马赛克图可视化
  6. 拓端tecdat|R语言Lee-Carter模型对年死亡率建模预测期望寿命
  7. 拓端tecdat|R语言离群值处理分析
  8. 【大数据部落】 用机器学习识别不断变化的股市状况—隐马尔可夫模型(HMM)股票指数预测实战
  9. c235delc杂合变异遗传吗_血常规正常就真的没有地贫吗?
  10. 使用Lingo做灵敏度分析