sql查询以及常见问题理解解析
推荐w3挺好的基础网站:https://www.w3cschool.cn/t_sql/t_sql_date_functions.html
=,<,>,> =,<=,IN,BETWEEN运算符包含等于
一.首先介绍多表查询常见方式:
嵌套查询:
select a.id from t_job a where jobid in(select jobid from t_pipeline where jobname=' xx')
其实也可以理解为子查询一种
内连接查询inner join 一般我们直接叫join
SELECT Persons.LastName a , Orders.OrderNo b
FROM Persons, Orders
WHERE a.Id_P = b.Id_P
外连接查询:left join ,right join
left join 关键字在左,多去少补,以左边表的关键字为准
SELECT column_name(s)
FROM table_name1 a
LEFT JOIN table_name2 b
ON table_name1.id= b.id right join
关键字在右,多去少补,以右边表的关键字为准
SELECT ID,NANE
FROM t_JOB a
LEFT JOIN T_PIPLINE b
ON table_name1.id= b.PIPELINEID 临时表:
select id from (select a.*,b.jobName from t_job a left join t_pipeline b on a.id=b.id)t group by id order by desc 联合查询union 和 all
UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
UNION 操作符选取不同的值不会有重复的字段,若需要保留用 union All
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2 二。聚合函数 group by having 运用
聚合函数是SQL一种特殊的函数。例如:
- count(*):获取数量
- sum():求和(这里要注意求和是忽略null值的,null与其他数值相加结果为null,所以可以通过ifnull(xxx,0)将null的值赋为0)
- avg():求平均数
- max():求最大值
- min():求最小值
where 和group by ,having
概念上首先
where:数据库中常用的是where关键字,用于在初始表中筛选查询。它是一个约束声明,用于约束数据,直接查询的表数据,他有个缺陷不可以和聚合函数联合使用
having 读取的是内存
只要条件里面的字段, 不是表里面原先有的字段就需要用having. SQL在查询表的时候先把查询的字段放到了内存里,而where查询的时候是从表里面查的,其余需要用having。
当分组筛选的时候 用having,
其它情况用where
用having就一定要和group by连用
HAVING语句通常与GROUP BY语句联合使用,用来过滤GROUP BY语句返回的数据集合,having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足
三:sql 查重,去重
假如一万条数据有两条重复怎么找出来
查重select * from t_job where (select id from t_job group by id where count(id)>1);
去重
select * from t_job where Name in (select distinct Name from t_job ); 四:分页
limit by
索引 0开始
select id from t_job limit by 5,15
从第六行开始数10行向后 。。。
sql查询以及常见问题理解解析的更多相关文章
- 【T-SQL进阶】02.理解SQL查询的底层原理
本系列[T-SQL]主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础]04.表表达式 ...
- 理解SQL查询的底层原理
阅读目录 一.SQL Server组成部分 二.查询的底层原理 本系列[T-SQL]主要是针对T-SQL的总结. T-SQL基础 [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- sql查询语句如何解析成分页查询?
我们公司主要mysql存储数据,因此也封装了比较好用mysql通用方法,然后,我们做大量接口,在处理分页查询接口,没有很好分查询方法.sql查询 语句如何解析成“分页查询”和“总统计”两条语句.可能, ...
- SQL Server-聚焦深入理解动态SQL查询(三十二)
前言 之前有园友一直关注着我快点出SQL Server性能优化系列,博主我也对性能优化系列也有点小期待,本来打算利用周末写死锁以及避免死锁系列的接着进入SQL Server优化系列,但是在工作中长时间 ...
- SQL查询多条不重复记录值简要解析【转载】
转载http://hi.baidu.com/my_favourate/item/3716b0cbe125f312505058eb SQL查询多条不重复记录值简要解析2008-02-28 11:36 以 ...
- [转]查询 SQL Server 系统目录常见问题
查询 SQL Server 系统目录常见问题 http://msdn.microsoft.com/zh-cn/library/ms345522.aspx#_FAQ4 下列部分按类别列出常见问题. 数据 ...
- 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器
第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...
- kotlin 写的一个简单 sql 查询解析器
package com.dx.efuwu.core import org.apache.commons.lang.StringUtils import java.sql.PreparedStateme ...
- SQL查询语句大全及其理解
转自:https://www.cnblogs.com/1234abcd/p/5530314.html 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删 ...
随机推荐
- POJ3279(KB1-D 熄灯问题)
Fliptile Description Farmer John knows that an intellectually satisfied cow is a happy cow who will ...
- 区分IE8/IE7/IE6及其他浏览器-CSS “\9″
区分IE8/IE7/IE6及其他浏览器-CSS “\9″ 原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com] by zhangxinxu from h ...
- python学习之老男孩python全栈第九期_day016知识点总结
'''数据类型:intbool... 数据结构:dict (python独有的)listtuple (pytho独有的)setstr''' # reverse() 反转l = [1,2,3,4,5]l ...
- PHPCMS v9上传图片提示"undefined"的解决办法
把phpcms\modules\attachment\attachments.php中将 if(empty($this->userid)){改成 if(empty($_POST['userid' ...
- cf121C. Lucky Permutation(康托展开)
题意 题目链接 Sol 由于阶乘的数量增长非常迅速,而\(k\)又非常小,那么显然最后的序列只有最后几位会发生改变. 前面的位置都是\(i = a[i]\).那么前面的可以直接数位dp/爆搜,后面的部 ...
- Django基础五之django模型层(二)多表操作
一 创建模型 表和表之间的关系 一对一.多对一.多对多 ,用book表和publish表自己来想想关系,想想里面的操作,加外键约束和不加外键约束的区别,一对一的外键约束是在一对多的约束上加上唯一约束. ...
- 转:JS判断值是否是数字(两种方法)
JS判断值是否是数字 1.使用isNaN()函数 isNaN()的缺点就在于 null.空格以及空串会被按照0来处理 NaN: Not a Number /***判断是否是数字***/ 1 2 3 ...
- github上的项目发布成静态网页
代码上传成功之后就可以发布静态网页了,细心的童鞋应该已经看到我上传的代码在根目录就有一个html文件(发布其他情况没试过,感兴趣自己去尝试),发布的时候选择仓库即自动识别了. 第一步:点击settin ...
- bootstrapValidator验证中Maximum call stack size exceeded
Tip1:如果表单不是通过Bootstrap构建(即元素包含表单项且关联的label没有form-group类),可能会看到错误Uncaught RangeError: Maximum call st ...
- vue 面试时需要准备的知识点
前端火热的框架层出不穷,作为码农的我们,依旧需要去学习,去探索新的问题,学习新技术,其实就是为了写一手好的,自认为是高质量的代码.今天主要分享一下前端最火的框架vue,也是我比较喜欢的框架. vue上 ...