SQL即结构化查询语言。也就是用来从数据库中操作数据的。数据总的来说就是增删改查CRUD。

一,sql的分类,大致有四类:

  1)DDL : 数据定义语言 create alter drop truncate
  2)DML : 数据操纵语言 insert update delete
  3)DCL : 数据控制语言 安全 授权 grant revoke
  4)DQL : 数据查询语言 select 子句

二,查询语句的结构

  select [列名] [*] from 表名 [where 条件] [group by 分组条件] [having 过滤分组条件] [order by 排序 asc|desc]

三,sql的书写顺序

  SQL的书写顺序:select ...from ..where...group by having...order by ....

四,sql的执行顺序

  sql的执行顺序:from ...where... group by... having... select.... order by...

先是从那张表以什么条件查询出来,其次是以什么条件分组,最后将查询出来的数据进行排序输出。

五,sql中的聚合函数

  求和函数:sum()  求平均:avg()  最大值:max()  最小值:min()  统计:  count()

  聚合函数在使用的时候是不会将空值纳入计算的,也就是说聚合函数是会避开空值的。count()用于统计不为空的记录。

需要注意的是:

  1.在select子句中出现了聚合函数,就不要出现其他的普通列,除非是group by分组的列。

  2.where 后面不能加聚合函数,where 是对from的结果进行筛选,需要使用where子查询。

  3.使用统计count()时不要使用*号,最好使用主键或者常量。

六,关于sql中的模糊查询

  sql中支持通配符,模糊查询主要有%,_,利用这两个通配符来进行模糊查询。%表示匹配一个或多个甚至0个字符,_表示匹配一个字符。

  例如 select * from emp where name like 'j%';表示查询出姓名以j开头的所有员工信息。

七,关于别名的问题

  使用as 关键字, 可以省略,别名中不能有特殊字符或者关键字, 如果有就加双引号。

八,关于在查询中遇到特殊字符

  在查询中遇到特殊字符需要使用转义字符 escape,

  例如 查询名字中包含%的员工信息,select * from emp where ename like '%\%%' escape '\';

九,关于排序时null值的处理

  排序为null的问题可以使用nulls first | last来指定null值得显示位置,是之前显示还是最后显示。
  select * from emp order by comm desc nulls last | first;

  当null参与运算时,任何与null进行运算都是null。例如select 1+null;结果为空。所以在数据库中药尽量避免空值。在设计时需要考虑好。

十,多表查询

多表查询主要有内连接,外连接。内连接 inner join on也就是两个表之间的交集,可以直接使用where代替。

外连接又分为左外连接和右外连接。

左外连接:left outer(可省略) join...on

  例如:select A.name,B.name from A left join B on A.id=B.id;左外连接的特点是,不管右表中有没有数据与左表中存在关联,它都将查询出左表的全部数据。靠近左边的就是左表。

右外连接:right outer join... on特点和左连接相反。

SQL的编写顺序和执行顺序,以及空值处理,别名处理,转义字符处理的更多相关文章

  1. SQL Select语句完整的执行顺序(转)

    SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...

  2. SQL 中的语法顺序与执行顺序(转)

    很多程序员都很抵触SQL.其实SQL是一整为数不多的声明性语言,只是它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程序语言.甚至是函数语言. 今天大家共同学习下SQL的语法顺序与执行顺序.( ...

  3. 170607、SQL Select语句完整的执行顺序

    SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...

  4. sql查询原理和Select执行顺序

    一 sql语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2) 语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限. 3)视图转换,将涉及视图的 ...

  5. 009 面试题 SQL语句各部分的执行顺序

    SQL语句各部分的执行顺序 select distinct...from t1 (left/right) join t2 on t1.xx=t2.xx where t1.xx=? and t2.xx= ...

  6. Oracle-SQL语句的语法顺序和执行顺序

    SQL语句的语法顺序和执行顺序了,我们常见的SQL语法顺序如下: SELECT DISTINCT <Top Num> <select list>FROM [left_table ...

  7. mysql语句的书写顺序和执行顺序

    mysql语句的书写顺序和执行顺序有很大差异. 书写顺序,mysql的一般书写顺写为: select <要返回的数据列> from <表名> <join, left jo ...

  8. SQL查询中关键词的执行顺序

    写在前面:最近的工作主要是写SQL脚本,在编写过程中对SQL的执行和解析过程特别混乱不清,造成了想优化却无从下手.为此专门在网上找博文学习,并做了如下总结. 1.查询中常用到的关键词有: SELECT ...

  9. SQL server T-sql语句查询执行顺序

    前言 数据库的查询执行,毋庸置疑是程序员必备的技能之一,然而数据库查询执行的过程绚烂多彩,却是很少被人了解,今天我们来深入了解下sql查询的来龙去脉,为查询的性能优化打个基础 这篇博客,摒弃查询优化性 ...

随机推荐

  1. css3 水纹效果(仿写阿里云)

    效果图 什么也不说了,上代码. <!DOCTYPE html> <html> <head> <title>css3 水纹效果</title> ...

  2. JavaScript疑难杂症系列-事件

    事件这块知识点虽然是老生长谈的,但对于我来说多多整理,多多感悟,温故知新,每次看看这块都有不同的收获.(在这里我不会长篇大论,只会挑重点;具体的小伙伴们自行查找) 什么是事件 在编程时系统内发生的动作 ...

  3. 利用angular4和nodejs-express构建一个简单的网站(五)—用户的注册和登录-HttpClient

    上一节简单介绍了一下利用angular构建的主路由模块,根据上一节的介绍,主页面加载时直接跳转到用户管理界面,下面就来介绍一下用户管理模块.启动应用后,初始界面应该是这样的: 用户管理模块(users ...

  4. C++入门经典-例5.11-动态分配空间,堆与栈

    1:在程序中定义一个变量,它的值会被放入内存中.如果没有申请动态分配,它的值将会被放在栈中.栈中的变量所属的内存大小是无法被改变的,它们的产生与消亡也与变量定义的位置和存储方式有关.堆是一种与栈相对应 ...

  5. git 指定自己的sshkey

    在服务器上生成ssh-key以后,需要把公钥放在github上,但是,这个公钥只能放在一个账户里,如果放在第二个账户里,就会提示这个key已经被用了,这是前提 一个可能的场景是这样的: 你们公司有好几 ...

  6. winform Timer控件的使用

    private void button1_Click(object sender, EventArgs e){ Timer timer1 = new Timer(); timer1.Interval ...

  7. Cassandra 如何处理跨数据中心的数据库延时问题

    分布式系统的可靠.延时.一致性等问题是一般性问题,不局限于数据库,而Cassandra提供了一个很好的解决思路. Cassandra号称能做到跨数据中心的数据库访问的高效访问,它的实现方式其实是把延时 ...

  8. Mac-连接Windows远程桌面软件

    链接:https://download.csdn.net/download/ab601026460/9885775 https://blog.csdn.net/ab601026460/article/ ...

  9. leetcode-easy-string-7 Reverse Integer

    mycode class Solution(object): def reverse(self, x): """ :type x: int :rtype: int &qu ...

  10. 前端必须掌握的 nginx 技能(2)

    概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...