SQL的编写顺序和执行顺序,以及空值处理,别名处理,转义字符处理
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的编写顺序和执行顺序,以及空值处理,别名处理,转义字符处理的更多相关文章
- SQL Select语句完整的执行顺序(转)
SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...
- SQL 中的语法顺序与执行顺序(转)
很多程序员都很抵触SQL.其实SQL是一整为数不多的声明性语言,只是它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程序语言.甚至是函数语言. 今天大家共同学习下SQL的语法顺序与执行顺序.( ...
- 170607、SQL Select语句完整的执行顺序
SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...
- sql查询原理和Select执行顺序
一 sql语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2) 语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限. 3)视图转换,将涉及视图的 ...
- 009 面试题 SQL语句各部分的执行顺序
SQL语句各部分的执行顺序 select distinct...from t1 (left/right) join t2 on t1.xx=t2.xx where t1.xx=? and t2.xx= ...
- Oracle-SQL语句的语法顺序和执行顺序
SQL语句的语法顺序和执行顺序了,我们常见的SQL语法顺序如下: SELECT DISTINCT <Top Num> <select list>FROM [left_table ...
- mysql语句的书写顺序和执行顺序
mysql语句的书写顺序和执行顺序有很大差异. 书写顺序,mysql的一般书写顺写为: select <要返回的数据列> from <表名> <join, left jo ...
- SQL查询中关键词的执行顺序
写在前面:最近的工作主要是写SQL脚本,在编写过程中对SQL的执行和解析过程特别混乱不清,造成了想优化却无从下手.为此专门在网上找博文学习,并做了如下总结. 1.查询中常用到的关键词有: SELECT ...
- SQL server T-sql语句查询执行顺序
前言 数据库的查询执行,毋庸置疑是程序员必备的技能之一,然而数据库查询执行的过程绚烂多彩,却是很少被人了解,今天我们来深入了解下sql查询的来龙去脉,为查询的性能优化打个基础 这篇博客,摒弃查询优化性 ...
随机推荐
- perl基础-1
基础 向函数中传递两个数组,使用指针 sub getSql{(my a,my b)=@_;my @array=@$a;} my @a;my @b; getSql(\@a,\@b); length($s ...
- Java操作Redis数据
Redis 是完全开源免费的,遵守BSD协议,先进的key - value持久化产品.它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map),列表(list) ...
- 前端开发——让算法"动"起来
正文 当然在我们不清楚具体操作细节前我们可以先假设一下,我们能够用什么来实现.按照以前看过的排序动画我将其分为 1.Js操作Dom,再搭配简单的css 2.Canvas动画 之后在查资料的时候发现还有 ...
- 使用 vuetron 调试 mpvue 项目
简介 由于小程序开发工具的封闭,我们无法通过安装 chrome 插件来方便地使用 vue-devtools 调试我们的 mpvue 项目.vuetron 是一个 vue.js 的项目调试工具, 同时支 ...
- 【Spark机器学习速成宝典】模型篇03线性回归【LR】(Python版)
目录 线性回归原理 线性回归代码(Spark Python) 线性回归原理 详见博文:http://www.cnblogs.com/itmorn/p/7873083.html 返回目录 线性回归代码( ...
- 查看进程CPU、内存使用情况
本文介绍通过ps和top查看进程的cpu.内存等使用情况. 1.ps命令 1.1 概览 ps命令相关参数定义: -e 或者-A,选择所有的进程: -L 显示线程: -o 自定义输出格式: 输出格式: ...
- leetcode 200岛屿的个数
主要考察图搜索: 方法一:染色法,时间O(mn) 遍历一遍,再通过BFS或DFS将所有临近岛屿染色,使用dfs时将numIslands中的bfs换成dfs即可: /***** 遍历所有的点: 只要遇见 ...
- Anaconda 32在windows下安装gensim
安装Anaconda 2.4以后运行corpora.MmCorpus.serialize的时候出错 换了Anaconda 2.1以后没问题了 原因:Anaconda 2.4的numpy是1.10.1版 ...
- 根据md5去重文件
import os import hashlib def get_md5(file): file = open(file,'rb') md5 = hashlib.md5(file.read()) fi ...
- SQLALchemy如何查询mysql某个区间内的数据
查了下,找到3种方式: 方法一注意时间格式:xxxx-xx-xx 方法二没有‘day’ 方法三的时间格式同方法一 1.result = Jobs.query.filter(Jobs.create_ti ...