SQL语法之查询语句

SQL语法基础-查询操作 SQL语法基础-查询操作-Oracle版 阅读详情

@(笔记)[MarkDown|我的博客|数据库]

SQL语法之查询语句

数据库函数

聚合函数

  • count 返回结果集中行的数目
  • sum 返回结果集中所有值得总和
  • avg 返回结果集中所有值得平均值
  • max 返回结果集中所有值中最大值
  • min 返回结果集中所有值中最小值
count

select count( [* | all | distinct] expr) from 表名;

  • * :计算所有选择的行,包括null
  • all :计算指定列所有的非空行,默认选项
  • distinct :计算指定列所有唯一非空值

sum

select sum([all | distinct] expr) as 别名 from 表名;

avg

select avg(mark) as ‘平均成绩’ from sutdent
where studentID = 10;
输出表student中studentID为10的所有mark的平均值

最大值和最小值

select max(mark) as '最高成绩', min(mark) as '最低成绩' 
from student
where examID = 6;

常用数据库函数

mysql常用函数

数据分组

将表按条件分组,然后在组中查找需要的值

select 列A, 聚合函数(聚合函数规范) 
from 表名
where 过滤条件
group by 列A;

当需要分组查询时需要使用GROUP BY子句,例如查询每个部门的工资和,这说明要使用部分来分组。

  • 查询每个部门的部门编号和每个部门的工资和:
SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno;
  • 查询每个部门的部门编号以及每个部门的人数:
SELECT deptno,COUNT(*)
FROM emp
GROUP BY deptno;
  • 查询每个部门的部门编号以及每个部门工资大于1500的人数:
SELECT deptno,COUNT(*)
FROM emp
WHERE sal>1500
GROUP BY deptno;

HAVING子句

  • 查询工资总和大于9000的部门编号以及工资和
SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno
HAVING SUM(sal) > 9000;
子句顺序问题

如果where在group by前面,并不是从分组中查询
如果where在group by后面,则是从分组中查询需要的结果

select
from
where 条件中不能有聚合函数
group by
[where]
having 条件中都是聚合函数,就在选出的分组中再次筛选
order by 如果需要,最后进行排序

注意,WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

分页查询

LIMIT用来限定查询结果的起始行,以及总行数。

  • 查询5行记录,起始行从0开始

SELECT * FROM emp LIMIT 0, 5;

注意,起始行从0开始,即第一行开始!

  • 查询10行记录,起始行从3开始

SELECT * FROM emp LIMIT 3, 10;

如果一页记录为10条,希望查看第3页记录应该怎么查呢?

  • 第一页记录起始行为0,一共查询10行;
  • 第二页记录起始行为10,一共查询10行;
  • 第三页记录起始行为20,一共查询10行;

查询页的下标 = (要查询的页数 - 1) * 每页记录的行数

单表查询

select 列名1[, 列名2,...] 
from 数据源
[where condition];
  • 数据源可以是表也可以是视图;
  • 列名 和 where关键字选出的行确定选择的查询结果
  • 没有where关键字则选出所有的行
  • 如果不指定选择的列,使用*代表所有的列

字符串的连接

select concat(teacher_name,'xxx')
from teacher_table;

在mysql中,字符串和null连接会返回null,
对于其他一些数据库,如果让字符串和null连接,会把null当成空字符串处理

去除重复行

select distinct student_name ,java_teacher
from student_table;

where关键字

运算符含义
expr1 between expr2 and expr3要求expr2<=expr1<=expr3
expr1 in (expr2,expr3,..)要求expr1等于括号内任意表达式的值
like字符串匹配,like后面的字符串支持通配符
is null要求制定值等于null
=是否相等
<>不相等
:=赋值
like模糊匹配

SQL支持2个通配符
- 下划线 _ :代表一个任意的字符
- 百分号 %:代表任意多个字符

当查询中需要使用到下划线或百分号时,可以使用\转义,
也可使用escape关键字

select * from student_table 
where student_name like '\_%' escape '\';
条件组合查询

SQL提供了 and和 or 来组合2个条件,并提供not来对逻辑表达式求否.

select * from student_table
where stduent_name like '__' and student_id > 3;
比较运算符和逻辑运算符的优先级
运算符优先级(小的优先)
所有的比较运算符1
not (非)2
and (且)3
or (或者)4

括号的优先级最高,所以可以使用括号来改变逻辑运算符优先级

select * from student_table
where (student_id > 3 or student_name > '张') and java_teacher > 1;
查询结果排序

查询结果默认按插入顺序排序,如果需要查询结果按某列值得大小进行排序,
则可以使用 order by

order by 列名1 [desc] ,列名2,列名3,...;

上面语法进行排序时可以采用列名,列序号和列别名.

进行排序时默认进行升序排序,如果想按降序排列,可以写上 desc关键字
与之对应的是asc关键字

下面的语句选出student_table中所有的记录,然后按java_teacher列的升序排列

select * from student_table 
order by java_teacher;

如果需要按多行排序,则每行的asc和desc必须单独指定,
如果指定了多个排序列,则第一个排序列是又要排序列,只要当第一列中存在多个相同的值时,第二列才会起作用

select * from student_table
order by java_teacher desc , student_name;

当java_teacher列的值相同时,按照student_name列的升序排列.

多表查询

  • 合并结果集
  • 连接查询

    • 内连接
    • 外链接

      • 左外连接
      • 右外连接
      • 外全连接(mysql不支持,使用左外,右外结合)
    • 自然连接

  • 子查询

合并结果集

  1. 作用:合并结果集就是把两个select语句的查询结果合并到一起
  2. 两种方式:
    • union:去除重复记录

select * from t1 union select * from t2;

  • union all : 不去除重读记录

select * from t1 union all select * from t2;

enter image description here

被合并的2个结果必须列数,类型一致

连接查询

连接查询就是求出多个表的乘积,例如t1和t2连接,那个查询出的结果就是t1*t2

enter image description here

就这是笛卡尔积

所以查询出来的结果有重复的,所以需要去除无用信息
enter image description here

select * from emp,dept
where emp.deptno = dept.depton;

enter image description here

内连接

标准格式:

select * from empe
inner join dept
on empe.deptno = dept.deptno;
自然连接
select * from 表1 
natural join 表2

系统自动找到两张连接的表中名称和类型完全一致的列

外连接
左外连接

先查询出左表,然后查询右表,右表中满足条件的显示出来,不满足的显示为null

SELECT * FROM emp e 
LEFT OUTER JOIN dept d 
ON e.deptno=d.deptno;
右外连接

同左外连接的效果相反,先把右表中所有的记录查出来,然后左表满足条件的显示,不满足的显示为null

SELECT * FROM emp e 
RIGHT OUTER JOIN dept d 
ON e.deptno=d.deptno;
外全连接

在mysql中实现外全连接

SELECT * FROM emp e 
LEFT OUTER JOIN dept d 
ON e.deptno=d.deptno;
union
SELECT * FROM emp e 
RIGHT OUTER JOIN dept d 
ON e.deptno=d.deptno;

连接不限与两张表,连接查询也可以是三张、四张,甚至N张表的连接查询。通常连接查询不可能需要整个笛卡尔积,而只是需要其中一部分,那么这时就需要使用条件来去除不需要的记录。这个条件大多数情况下都是使用主外键关系去除。
两张表的连接查询一定有一个主外键关系,三张表的连接查询就一定有两个主外键关系,所以在大家不是很熟悉连接查询时,首先要学会去除无用笛卡尔积,那么就是用主外键关系作为条件来处理。如果两张表的查询,那么至少有一个主外键条件,三张表连接至少有两个主外键条件。

子查询

子查询就是嵌套查询,即SELECT中包含SELECT,如果一条语句中存在两个,或两个以上SELECT,那么就是子查询语句了

  1. 子查询出现的位置:

    • where后,作为条件的一部分;
    • from后,作为被查询的一条表;
  2. 当子查询出现在where后作为条件时,还可以使用如下关键字:

    • any
    • all
  3. 子查询结果集的形式

    • 单行单列(用于条件):

select * from 表1 where 列1 [=,>,<,>=,<=,!=] (select 列 from 表 where 条件)

  • 单行多列(用于条件):

select * from 表where (列1,列2) in (select 列1,列2 from 表 where 条件)

  • 多行单列(用于条件):

select * from 表 where 列1 [in ,all ,any ] (select 列 from 表 where 条件)

  • 多行多列(用于表):

select * from 表1,(select * from …) where 条件

R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句 阅读详情

相关推荐

SQL查询语句精讲:SELECT语法与实战常用语句

本章系统讲解了单表查询与条件筛选的实战技巧,涵盖了字段选择、别名设置、WHERE条件过滤、模糊匹配、去重与聚合等多个方面。通过丰富的代码示例和详细分析,帮助你掌握SQL查询的基本操作和进阶技巧。掌握这些内容不仅有助于提高日常查询效率,也为后续学习多表连接与复杂查询打下了坚实基础。下一章我们将深入探讨多表连接与子查询的高级技巧,进一步提升你的SQL实战能力。

weixin_35871529的博客 910

数据库sql操作语法

1.DDL(对数据库和表的操作) 1.查询所有数据库:SHOW DATABASES; 2.创建数据库:CREATE DATABASE 库名; 3.创建数据库(常用,加一个判断是否存在语句):CREATE DATABASE IF NOT EXISTS 库名; 4.删除数据库:DROP DATABASE 库名; 5.删除数据库(常用,加一个判断是否存在语句):DROP DATABASE IF NOT EXISTS 库名; 6.使用数据库:USE 库名; 7.查看使用的数据库:SELECT DATA

jjxcsdn的博客 4538

SQL查询语句基础

Oracle数据库设计与建模 1、select语句查询单表 2、限制性查询和数据的排序 3、别名的使用 4、distinct 5、order by语句使用 6、group by语句使用

sql查询语句大全-详细讲解(格式、示例)

sql查询语句大全,包含内容:范围查询、聚合查询、多表查询、子查询、聚合函数、其他常用函数 等

丨康有为丨的博客 4万+

SAP 销售订单及发票 利润中心替代 Userexit出口 配置及程序

在跨公司销售业务中,跨公司销售订单的发票时无法从销售订单中将利润中心带到发票中,所以在跨公司的发票创建过程中需要配置出口来获取对应销售订单行项目的利润中心。 事务代码: 0KEM 配置步骤: 1、创建一个新的替代 2、创建一个步骤 3、维护一个先决条件,比如针对于特定工厂 PCASUB-VKBUR = '0001' 4、选择替代程序FORM,FORM必须为指定程序中存在的FORM名 5、编辑替代程序FORM 实现效果: 在程序FORM中打上断点 ...

李威威wiwi的博客 5069

江科大笔记—OLED调试工具

OLED介绍及调试工具

m0_62005595的博客 658

SQL查询语句(全网最详细教学)

/在wages_tables表中查询字段age小于30的数据。//在wages_tables表中查询字段id、name、post。select * from wages_tables where name regexp "三$";//查询以三结尾的数据。select * from venus2 //查询多个表中的数据,要求两个表中数据必须一样,数据类型相同,默认不返回相同数据。select * from wages_tables where name like '%三';

weixin_66993139的博客 1万+

3D IC中Memory-on-Logic堆叠测试的DFT解决方案与工程实践

在半导体行业,随着摩尔定律逼近物理极限,3D IC技术通过芯片垂直堆叠实现性能提升和异构集成,已成为重要发展方向。其核心原理是利用硅通孔(TSV)或微凸块实现芯片间电气互连,将多个不同功能的芯片(如逻辑芯片与存储芯片)集成在一个封装内。这项技术的核心价值在于能大幅提升系统性能、降低功耗并实现更小的封装尺寸。然而,芯片堆叠后,传统的测试方法面临巨大挑战,尤其是测试访问存在物理屏障,无法直接探测被覆盖的芯片接口。为此,可测试性设计(DFT)成为确保3D IC可靠性与量产可行性的关键技术。它通过在设计阶段植入专用

weixin_42521058的博客 632

SQL查询语句汇总(非常详细)零基础入门到精通,收藏这一篇就够了

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

Libra1313的博客 8172

激光SLAM算法性能对比:在Ubuntu20.04上实测Point-LIO/FAST_LIO2/Faster-LIO的运行效果

本文在Ubuntu 20.04平台上对Point-LIO、FAST-LIO2和Faster-LIO三款激光SLAM算法进行了深度实测与性能对比。通过量化分析绝对轨迹误差、CPU/内存占用及单帧处理延迟等核心指标,结合室内外场景数据,为高精度测绘、服务机器人及自动驾驶等不同应用场景提供了清晰的选型指南和实战调优建议。

weixin_28335283的博客 368

STDP实战:用PyTorch从零搭建脉冲神经网络(附完整代码)

本文提供了基于PyTorch从零搭建脉冲神经网络的实战教程,重点讲解了STDP学习规则的原理与工程实现。通过构建LIF神经元模型和向量化STDP层,并结合泊松编码,详细演示了如何构建一个能够进行无监督特征学习的混合网络架构,为探索神经形态计算和低功耗实时学习方案提供了完整代码与实践指南。

weixin_29056145的博客 266

SQL 查询语句入门语法和案例

查询年龄大于 30 岁的用户,统计每个城市的用户数量,按用户数量降序排序,只显示用户数量大于 5 的城市前 3 个。SQL 查询语句是数据库操作中最基本也是最常用的部分,主要用于从数据库中检索数据。:查询 users 表中的 name 和 age,并按年龄从大到小排序。掌握这些基础语法后,可以根据需求组合使用不同语句,完成复杂的查询任务。:查询表 users 中的 name 和 age 列。:查询所有用户及其对应订单(无订单的用户也会显示)。:查询所有订单及其对应用户(无用户的订单也会显示)。

2301_79631015的博客 2959

【WorkBuddy专栏68】HY3绕路部署vsDS4直击根因——一次真实踩坑揭露两个AI模型的推理差距

【WorkBuddy专栏68】HY3绕路部署vsDS4直击根因——一次真实踩坑揭露两个AI模型的推理差距

AI人人懂 560

SQL Server查询语句语法以及相关例题

在SQL Server中,查询语句通常使用SELECT语句来检索数据库中的数据。表中的学生学号、姓名以及其所在班级,并给列起别名,使其显示为“学号”、“姓名”和“班级”。聚合函数如COUNT、SUM、AVG等可用于计算数据的总数、总和、平均值等。:查询每门课程的总分和平均分,并给结果命名为“总分”和“平均分”。这是最基本的SELECT语句格式,用于选择指定表中的指定列。JOIN操作用于合并多个表中的数据,根据共同的列进行连接。子查询可以在查询内部嵌套另一个查询,用于进一步过滤数据。表中的每个学生的成绩(

2301_79400832的博客 573

Oracle EBS R12 主 / 辅助分类帐(主 / 辅助帐套)落地

本文提供了Oracle EBS R12主/辅助分类帐实施的全套文档模板,包含主帐套(法定帐套)和辅助帐套的完整配置清单、科目映射规则模板、4类典型调整分录示例(存货跌价、折旧差异、往来重分类、外币折算)以及税会/IFRS案例分录。重点阐述了主/辅助帐套的配置要点、SLA子分类帐关键配置、科目映射规则(一对一、多对一、重分类等类型)以及调整分录的自动生成逻辑。文档可直接用于项目实施,包含总体架构图、科目映射矩阵表、会计规则集配置等交付物,并附有Excel版模板便于直接使用。适用于需要实现多准则并行记账、税务调

金牌架构师 386

Oracle EBS Interface/API(42) -AP发票客制化付款申请

背景 在OA系统上,选择Oracle EBS的某张AP发票做付款申请,需要类似于锁定该发票以便付款,其他用户或者下次用户不能再次选择该发票做付款申请。 快速参考 参考点 内容 功能导航 N: AP->Invoices->Entry>Invoices 并发请求 None 基表 AP.AP_INV_SELECTION_CRITERIA_ALLAP.AP_SELECTED_INVOICES_ALL API 参考下面介绍 错误信息表 None 接口Form

陈显平的专栏-Oracle EBS 1200

数据库SQL语言语法总结3---查询语句

SQL查询语句,即在数据库中查询符合条件的记录语法格式: select [all|distinct] <目标列表达式> [,<目标列表达式>] […..] from 表名|视图表 [where <条件表达式>] [group by <列名> [having <条件表达式>]] ———————按属性列分组显示 [order by <列名> [asc|desc]] ————

Robin的思路汇聚屋 1495

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

openGauss SQL语法 —动态语句:执行动态非查询语句

USING IN bind_argument用于指定存放传递给动态SQL值的变量,在dynamic_noselect_string中存在占位符时使用,即动态SQL语句执行时,bind_argument将替换相对应的占位符。要注意的是,bind_argument只能是值、变量或表达式,不能是表名、列名、数据类型等数据库对象。另外,动态语句允许出现重复的占位符,相同占位符只能与唯一一个bind_argument按位置一一对应。using_clause子句的语法参见。

weixin_53596073的博客 419

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

2.2 SQL编写——查询语句-语法

SQL编写——查询语句-语法 SELECT [DISTINCT] 显示字段列表 [FROM 单表或多表关联 [WHERE 行记录过滤条件] [GROUP BY 分组字段 ] [HAVING 条件] [ORDER BY 排序字段] [LIMIT 保留记录数或区间]] 注意: 分组时,只有分组字段和聚合函数可以出现在字段列表中。 错误:分组字段没有subject,组内的s...

caohongxing的博客 577

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SQL查询语句的语法树和优化器给出的逻辑执行计划

SQL语法树(Abstract Syntax Tree, 简称AST)是一种用来表示SQL查询结构的树状数据结构。它是SQL解析过程的关键产出物,将原始的SQL文本转换成一种更容易理解和操作的形式。如果需要分析某条SQL的性能问题,通常应先查看SQL的执行计划,排查每一步SQL执行是否存在问题,因此读懂执行计划是SQL优化的先决条件。这个执行计划告诉我们,查询是一个简单的SELECT操作,没有使用任何索引,需要扫描10行数据,并且使用了。执行计划是对一条SQL查询语句在数据库中执行过程的描述。

m0_62961212的博客 990

SQL语法基础-SQL查询语句的执行顺序解析

SQL语句执行顺序 SQL语句执行顺序 结合上图,整理出如下伪SQL查询语句。 SQL语句执行顺序 从这个顺序中我们可以发现,所有的查询语句都是从FROM开始执行的。在实际执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。 接下来,我们详细的介绍下每个步骤的具体执行过程。 1 FROM执行笛卡尔积 FROM 才是 SQL 语句执行的第一步,并非 SELECT 。对FROM子句中的前两个表执行笛卡尔积(交叉联接),生成虚拟表V...

Elsa~的博客 1万+

SQL简单查询语句,语法

** 简单查询语法,语句 ** select * from where order by --先from 后 where 后 select 最后 order by select sbrlsh 病人流水号,szycs AS 住院次数 from where --单独查表中这两列并且起别名,AS就是起别名,空格也可以 select gz+200 月工资加补助200,gz*12 年工资,gz/30 日工

weixin_44409956的博客 1783

MYSQL常用SQL查询语句和连接语法

select查询语句 SELECT <COLUMN1,COLUMN2,COLUMN3…> FROM <table_name> [WHERE <条件表达式>] [GROUP BY COLUMN1,COLUMN2,COLUMN3…|HAVING <条件表达式>] [ORDER BY <COLUMN1,COLUMN2,COLUMN3…>[ASC或DESC]] 使用AS关键字显示列标题 SELECT 字段名1 AS 列标题1,字段名2 AS 列标题2…

m0_57779406的博客 280

SQL语句查询语句完整语法

数据库是mysql,使用的数据库表名称是my_student. 表的完整数据信息是: 完整语法是: Select [select选项] 字段列表[字段别名]/* from 数据源 [where 字句] [group by子句 ][having 子句][order by 子句][limit 子句]; ①[select选项]: Select 选项包含:ALL(所有,默认)、dis

u011991249的专栏 13万+

SQL查询语句语法

虽然没有硬性要求,但是习惯上关键字应该全部大写。

657
上一篇: SQL语法之DDL和DML
下一篇: Web app浅谈
dong4go
博客等级 码龄12年 5粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值