SQL基础语法-查询_92.sql 中查询的基本语法是?各子句的执行顺序和作用是?-程序员宅基地

技术标签: SQL  

基本查询

SQL分类

数据操纵语言(DML Data Manipulation Language)

SELECT(查询)
INSERT(插入数据)
UPDATE(更新数据)
DELETE(删除数据)

数据定义语言(DDL Data Definition Language)

CREAT
ALTER
DROP
RENAME
TRUNCATE

数据控制语言(DCL Data Control Language)

GRANT(比如授权远程连接、权限授权)

事件(Transaction)

COMMIT
ROLLBACK

基本查询语法

②SELECT *						【SELECT 子句】
①FROM 数据来源(可以是数据表)	【FROM 子句】

注意:

  • 以上两个子句在数据库中执行是由顺序的,先执行from后执行select;*表示查询所有字段信息,此处也可以使用字段名,查询指定字段的信息
  • 在字段名前加DISTINCT关键字,可以去除重复信息
  • 别名的使用,可以使用AS也可以不用,注意在FROM子句中数据来源使用别名时,不要使用AS
  • 字段内容是数字类型的支持四则运算

限定查询

语法

③SELECT *						【SELECT 子句】
①FROM 数据来源(可以是数据表)	【FROM 子句】
②WHERE 过滤条件					【WHERE 子句】
  • WHERE 子句是对数据进行条件判断,之后显示出满足条件的数据
  • BETWEEN AND的使用,小的数据在前,大的数据在后,对日期和数字可用,且BETWEEN AND被数据认为是一个判断条件,执行效率快,a > b AND a < c 数据库认为是两个判断,执行效率较慢
  • UNION ALL的使用,用于连接或操作,相比OR,可以将查询结果显式的合并在一起并且避免索引失效
  • 判断语句ISIS NOTINNOT IN

模糊排序查询

模糊查询

  1. _:表示任意一个字符
  2. %:表示任意个任意字符
  3. 实现模糊查询要使用LIKE关键字
    基本语法:
③SELECT 
①FROM 
②WHERE 模糊查询的字段 LIKE 模糊查询的条件

排序查询

排序查询使用关键字ORDER BY
基本语法:

③SELECT *						【SELECT 子句】
①FROM 数据来源(可以是数据表)	【FROM 子句】
②WHERE 过滤条件					【WHERE 子句】
④ORDER BY 排序的字段 ASC|DESC 	【ORDER BY 子句】

注意:
ORDER BY子句在SELECT子句之后执行,可以使用SELECT子句中使用的别名
排序的字段内容类型是数字或日期(英文也可以)

多表查询

  1. 多表查询就是从多张数据表中查询
  2. 多表查询又叫连接查询
  3. 多表查询会出现笛卡尔积,需要在WHERE中定义条件去除后显示(因为笛卡尔积是在产生后被消除不显示,所以数据量的时候不能用多表查询,消耗性能)

连接查询

内连接查询

内连接查询,只查询满足条件的数据,默认的就是内连接查询
可以使用 INNER JION...ON... 关键字在JOIN之后加入另一张数据表,在ON之后消除笛卡尔积

外连接查询

外连接查询分为:左外连接查询、右外连接查询、全外连接查询
左外连接查询和右外连接查询可以使用(+)来表示,注意位置与名称是相反的,且此写法只在ORACLE中有效,通用的写法如下

FROM (表1) LEFT OUTER JOIN (表2) ON (消除笛卡尔积语句)	左外连接
FROM (表1) RIGHT OUTER JOIN (表2) ON (消除笛卡尔积语句)	右外连接
FROM (表1) FULL OUTER JOIN (表2) ON (消除笛卡尔积语句)	全外连接

常用函数

COUNT(*|字段名)统计查询到的内容非空的数据量
SUM(字段名)对该字段的内容求和
AVG(字段名)求平均数
MAX(字段名)求最大值
MIN(字段名)求最小值
SYSDATE动态显示当前系统时间
NVL(expression1,expression2)优先返回expression1的结果,当1的结果为null时,返回expression2的结果,两者都为null时返回null

分组统计查询

使用GROUP BY子句,基本语法如下:

④SELECT *						【SELECT 子句】
①FROM 数据来源(可以是数据表)	【FROM 子句】
②WHERE 过滤条件					【WHERE 子句】
③GROUP BY 字段名					【GROUP BY子句,对满足条件的数据进行分组】
⑤ORDER BY 排序的字段 ASC|DESC 	【ORDER BY 子句】

分组统计查询的三个规则

  1. 如果SELECT子句中使用了统计函数,同时没有BROUP BY子句的话,SELECT子句中只允许有统计函数,不允许出现字段名
  2. 如果使用了BROUP BY子句,那么SELECT子句中出现的字段名必须是分组字段
  3. 如果SELECT子句中出现了嵌套函数,那么该子句中不允许再出现统计函数之外的任何字段

HAVING 子句

HAVING子句是对分组统计函数统计出的结果进行过滤的句子

⑤SELECT *						--查询数据
①FROM 数据来源					--找到数据源
②WHERE 条件判断					--对数据源进行过滤
③GROUP BY 分组字段				--对满足条件的数据分组
④HAVING 对统计函数进行判断		--对分组统计的数据进行过滤
⑥ORDER BY 排序字段 排序方式		--对过滤后的数据进行排序

WHEREHAVING的区别

  • WHEREGROUP BY子句之前执行,HAVINGGROUP BY子句之后执行
  • WHERE中不能有统计函数,HAVING中可以使用统计函数对数据进行过滤

子查询

子查询就是将一个查询的结果作为另一个查询(主查询)的数据来源或者判断条件的查询,子查询需要使用小括号括起来
常见的子查询有

WHERE子查询

DEMO 查询出薪资排名第三的雇员信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

FROM子查询

FROM后面的数据来源可以是数据表,也可以是一个子查询的结果
使用FROM子查询注意

  1. FROM子查询的结果作为主查询的数据来源,子查询结果相当于一张临时数据表
  2. 必须为子查询定义别名(规范,不定义不会报错)
  3. 如果要使用子查询中的字段名应该使用别名.字段名来引用

SELECT子查询

HAVING子查询

EXISTS子查询

EXISTS子查询特征:将主查询中的数据带入到子查询中进行验证,通过返回true,主查询显示该数据,不通过返回false,主查询不显示该数据
NOT EXISTS子查询与EXISTS子查询相反

ROWNUM伪列

ROWNUM是动态的在数据表中生成一列,即一个字段,这列数据不属于数据表是动态生成的且该列数据必须从1开始
DEMO1

SELECT ROWNUM AS rn, empno,ename,job,mgr,hiredate,sal,comm,deptno FROM emp;

在这里插入图片描述DEMO2 查询第一条数据

SELECT ROWNUM AS rn, empno,ename,job,mgr,hiredate,sal,comm,deptno FROM emp WHERE ROWNUM = 1;

在这里插入图片描述
查询第一条数据的意义在于和DESC共用方便观察数据表

DEMO2 查询第二条数据

SELECT ROWNUM AS rn, empno,ename,job,mgr,hiredate,sal,comm,deptno FROM emp WHERE ROWNUM = 2;

在这里插入图片描述
因为ROWNUM要求该列必须从1开始,因此直接查第二条数据无法完成,需要使用子查询(这是分页查询的基础)
在这里插入图片描述

使用ROWNUM实现分页查询

DEMO

SELECT *
	FROM(
		SELECT ROWNUM AS rn, empno,ename,job,sal,hiredate,mgr,comm,depto
			FROM emp
				WHERE ROWNUM <=10) temp
			WHERE rn >=6;

通过以上代码可以实现查询第6-10条数据,假如我们要求网页中数据每页显示5条,这刚好是第二页的数据
计算当前页数据的ROWNUM公式如下:

起始位置 m = (cp-1)*ls+1
最终数据位置 n = cp*ls
注:cp表示当前页,ls表示每页显示数据量
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hcwdd/article/details/90293354

智能推荐

Coldfusion的基础知识-程序员宅基地

文章浏览阅读430次。什么是ColdFusion?   ColdFusion Web application是帮助你建立实施大规模网站应用系统的最快方式,它集成了浏览器,服务器及数据库技术。从电子商务到商业流程自动化,从Intranets到Internet,ColdFusion都能够帮助你快速、轻松的开发实施先进的应用系统。ColdFusion Studio中的可视化编程工具、数据库和程序调试工具可以帮助实现快速开..._coldfusion

Python 编码转换与中文处理_"python charset=[\"en\", \"cn\"]"-程序员宅基地

文章浏览阅读5.2k次。Python 编码转换与中文处理python 中的 unicode是让人很困惑、比较难以理解的问题. utf-8是unicode的一种实现方式,unicode、gbk、gb2312是编码字符集.decode是将普通字符串按照参数中的编码格式进行解析,然后生成对应的unicode对象写python时遇到的中文编码问题:➜ /test sudo vim test.py#!/usr/bin/..._"python charset=[\"en\", \"cn\"]"

一代「博雅」大师离世!缅怀复旦大学原校长、中国科学院院士杨福家教授-程序员宅基地

文章浏览阅读394次。作者丨Joey 好困来源丨新智元【导读】2022年7月17日,著名核物理学家、复旦大学原校长、中科院院士杨福家在上海因病逝世,享年86岁。据复旦大学消息,著名核物理学家、复旦大学原校长、中国科学院院士杨福家教授于7月17日在上海因病离世,享年86岁。(图源:复旦大学官网)复旦大学官网主页也换成了灰屏,以表达对老先生的哀思。作为原子物理学界研究的带头人,杨福家教授为我国应用..._感光材料工艺大师

SCI-HUA科研绘图技巧丨和“亮瞎眼”的论文插图配色say goodbye_sci地层剖面图配色-程序员宅基地

文章浏览阅读2.4w次,点赞3次,收藏31次。这里我们会多多分享科研插画绘图创作中的实践心得,希望大家的作品都能漂漂亮亮。我们会多多分享科研插画绘图创作中的实践心得,希望大家的作品都能漂漂亮亮。翻过年关,新的毕业季即将来临这又是一个SCI论文插画井喷的时刻,不要让你的画作 “亮”到尴尬哦~插画里尬眼的光辉 -色彩是插画里最具表现力的要素,但是很多科研人员没有接触过设计,当上手制图时,很有可能走入颜色的误区,如..._sci地层剖面图配色

Java 后台调用接口(HTTP请求工具类)_后端调用接口工具类-程序员宅基地

文章浏览阅读900次,点赞4次,收藏3次。网上找的HTTP 请求工具类package com.spt.utils;import org.apache.commons.io.IOUtils;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.NameValuePair;import org.apache.http.client.Http_后端调用接口工具类

linux安装过程中找不到镜像文件(system operation)_linux下载httpd出现找不到镜像-程序员宅基地

文章浏览阅读8.1k次。解决方法:镜像和虚拟机的路径都不要有空格_linux下载httpd出现找不到镜像

随便推点

自动化学习框架(AutoML)的性能比较-程序员宅基地

文章浏览阅读7.2k次,点赞3次,收藏18次。摘要:AutoML作为一个有效的工具可以帮助很多企业方便地实施和加速人工智能方面的应用落地。对于还不具备数据科学团队的公司来说,AutoML可以是全自动化的模型构建工具来..._tpot,h2o,auto sklearn

【图像融合】基于matlab加权平均法图像融合【含Matlab源码 722期】_matlab图像的梯度倒数加权平均法-程序员宅基地

文章浏览阅读5.4k次,点赞6次,收藏21次。加权平均法图像融合完整的代码,方可运行;可提供运行操作视频!适合小白!_matlab图像的梯度倒数加权平均法

Storm整合Springboot_springboot storm-程序员宅基地

文章浏览阅读1.7k次。Storm运行有两种模式,分别是local与remote。因此,Storm与Springboot整合,也分两种方式。local模式整合Springboot,storm与Springboot都运行在同一JVM中,而remote模式整合,Storm的计算节点会在不同的JVM中(跨进程)被初始化并运算。_springboot storm

iphone GNU debugger 1708下载地址-程序员宅基地

文章浏览阅读155次。cydia种添加http://cydia.radare.org源,然后搜索gnu debugger就可以了~~转载于:https://www.cnblogs.com/GrowUP-EveryDay/archive/2013/03/07/2947357.html_gnu project debugger下载

自反+递归 实现评论的无限引用_<div class='comments-list' id='comment-holder'><di-程序员宅基地

文章浏览阅读1.7k次。引言大家每天都在看博客,发表评论,实现一个评论系统也是一名Web开发者的基本要求。虽然评论只是一个很普通的功能,但是实现评论的引用,尤其是无限引用,却有一定的困难。身为“网易工程队”的正规军,同时又作为一名程序开发人员,有必要向大家展示一下“盖楼”的方法。效果预览:http://www.tracefact.net/demo/NestedComment/Default.aspxNOTE:本文使用 基于业务对象(List)的筛选 来进行引用列表的搜寻,对数据库仅进行了一次读取。想也应该能想明白:不管是初始评论还_

C++ STL用法总结_c++中stl用法超详细总结 csdn-程序员宅基地

文章浏览阅读417次。C++ STL用法总结************ 写在前面*************1、STL的概念2、STL的内容2.1、容器2.2、迭代器2.3、算法2.4、仿函数2.4.1、概述2.4.2、仿函数的使用2.4.3、内建仿函数2.5、适配器2.6、分配器3、常用容器3.1、string容器3.1.1、跟char*型的字符串作对比:3.1.2、与char*型的相互转换:3.1.3、string的使用3.2、vector(向量)3.2.1、vector的底层结构3.2.2、vector的使用3.3、deque_c++中stl用法超详细总结 csdn