数据库——sql数据查询

2023-10-29

在这里插入图片描述

单表查询

-- 查询全部数据
select * from 表名;
-- 查询部分字段
select 字段1[,字段2,...] from 表名;
-- 简单的条件查询
select *|字段1[,字段2,...]  from 表名
where 条件表达式;

where后的条件表达式:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1)去重

-- 当查询的字段有多个时,必须所有的字段完全相同才被认为是重复记录
-- 默认情况下是all
select distinct|all 字段列表 from 表名;

在这里插入图片描述

2)排序

-- 单字段排序,仅按照一个指定的字段进行升序asc或降序desc排序,默认asc
select *|字段列表  from 表名
order by 字段名 [asc|desc];
-- 多字段排序,先按照字段1进行排序,当字段1相等时,再按照字段2进行排序,依次类推下去
select *|字段1[,字段2,...]  from 表名
order by 字段1 [asc|desc] [字段2 [asc|desc],...]
-- 注意:系统将null看作最小的值

3)限量
可以限定记录的数量,也可以限定从哪一条记录开始

限量查询数据

-- 默认偏移量为0,而第一条记录的偏移量为0
select *|字段1[,字段2,...]  from 表名
limit [偏移量,] 记录数;
-- 注意:记录数表示限定的最大记录数量,当大于实际记录数量时,以实际为准

限量更新数据

update 表名 set 字段1=1[,字段2=2,...]
 [where 条件表达式]
 [order by 字段1 [asc|desc] [字段2 [asc|desc],...]] -- 按顺序更新
limit [偏移量,] 记录数;

限量删除数据

delete from 表名
 [where 条件表达式]
 [order by 字段1 [asc|desc] [字段2 [asc|desc],...]] -- 按顺序更新
limit [偏移量,] 记录数;

在这里插入图片描述

4)分组与聚合函数
在这里插入图片描述

select 查询选项列表 from 表名
[where 条件表达式]
group by 字段名1 [order by [asc|desc]] [,字段名2 [order by [asc|desc] ],...]
having 条件表达式;
;
/*
注意:
1.group by 字段名表示按照指定的字段进行分组;
2.查询选项只能是指定的分组字段或者非分组字段的聚合函数后;
3.mysql 默认情况下对分组字段进行升序排序,group by的分组排序是否需要order by(与版本有关) ,最好加上order by
4.多分组统计:按字段1分组后,再按字段2分组,相对于组内再分组,依次类推下去,最后得到一个个小组,每个小组数据进行统计
5.having与where两者的作用对象不同,where子句作用于基表或视图,从中选择满足条件的元组,而having短语作用于组,从中选择满足条件的组。 另外注意where与having的位置,以及where后的条件表达式中不能有聚合函数,而having后的条件表达式中可以有。

*/

在这里插入图片描述
在这里插入图片描述
常用聚合函数

函数名 描述
count() 返回参数字段的数量,count(字段名),不统计null记录,但是count(*),统计的是符合条件的记录总数,故记录中某字段为null也不影响
sum() 返回参数字段的总和
avg() 返回参数字段的平均值
max() 返回参数字段的最大值
min() 返回参数字段的最小值
group_concat() 返回参数字段的连接字符串

注意:在聚合函数括号内的参数前加上distinct表示对不重复的记录进行相关操作,缺省为all。

5)别名

select 字段 [as] 别名 from 表名 [as] 表别名

6)数学函数

select 函数;

在这里插入图片描述
单表查询总结

在这里插入图片描述
在这里插入图片描述

多表查询

联合查询UNION

在保证多个select语句的查询字段数相同的情况下,合并多个查询的结果

select ....
union [all|distinct] select...
[union [all|distinct] select...];
/*
all表示保留所有的记录,distinct是默认值可省略,表示去掉重复的记录
若select语句涉及到排序限量等操作,需要用()将整个select语句括起来 
*/

连接查询

在这里插入图片描述
\quad 正确的查询方式是:以两表中相互关联的字段作为查询条件进行查询。

1)内连接
根据匹配条件,返回表1与表2所有匹配的记录

select 查询选项列表 from1
[inner] join2
on 匹配条件;

2)左连接
用于返回左表中的所有记录,以及右表中符合连接条件的记录。当左表的某行记录在右表中没有匹配的记录时,右表中相关记录设为NULL

select 查询选项列表 from1
left [outer] join2
on 匹配条件;

3)右连接
用于返回右表中的所有记录,以及左表中符合连接条件的记录。当右表的某行记录在左表中没有匹配的记录时,左表中相关记录设为NULL

select 查询选项列表 from1
right [outer] join2
on 匹配条件;

4)全连接
其结果是在内连接查询的基础上还显示左右两边互不匹配的数据。写法:左连接查询 UNION 右连接查询

select 查询选项列表 from1 left join2 on 匹配条件
union
select 查询选项列表 from1 right join2 on 匹配条件

嵌套查询

-- 当from后的数据源是子查询时必须为其设置别名
select 字段列表 from (select 语句) as 别名

子查询

在这里插入图片描述

\quad where子查询有带比较运算符,in,exist,all,any关键字的子查询

1)带比较运算符
在这里插入图片描述
在这里插入图片描述
2)带关键词in

where 条件判断 in (select语句);

3)带关键词exists
\quad 当子查询语句返回记录时,exists表达式为true,此时执行前面的查询语句。子查询语句没有返回任何记录时,exists语句为false,不执行前面的查询语句。

where exists(子查询语句); --子查询语句有结果则exists(子查询语句)返回1,否则返回0
where not exists(子查询语句); --与exists相反

在这里插入图片描述

在这里插入图片描述
4)带关键词any,all

where 表达式 比较运算符 all(子查询语句); 
-- 给定的判断条件只有符合子查询结果中的每条记录,结果才返回1,否则返回0
where 表达式 比较运算符 any(子查询语句); 
-- 给定的判断条件只要符合子查询结果中的任一记录,结果返回1,否则返回0

在这里插入图片描述

复制表

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

判断查询

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库——sql数据查询 的相关文章

  • MySQL通过UPDATE/DELETE合并重复数据记录

    我有一个看起来像这样的表 mysql gt SELECT FROM Colors ID USERNAME RED GREEN YELLOW BLUE ORANGE PURPLE 1 joe 1 null 1 null null null 2
  • 如何在 Ansible 中运行 MySQL 查询

    我需要编写一个 Ansible 脚本来在 MySQL 数据库中执行 SQL 查询 这是我尝试过的 你能指导一下吗 hosts localhost tasks name retrive data command mysql u root h
  • Magento - 无法重新索引产品价格 - 外键约束失败

    我最近刚刚将我的 magento 商店从 1 4 2 升级到 1 7 0 2 升级进行得很顺利 但是当我尝试在升级后重新索引数据时 产品价格失败了 我尝试过使用php shell indexer php reindexall来自 SSH 它
  • 使用显式创建表语句与 select into 创建表

    使用显式创建表语句和加载数据与选择数据之间是否存在性能差异 此示例仅显示 2 列 但问题是针对使用非常大的表 下面的示例也使用临时表 尽管我也想知道使用常规表的效果 我认为无论表格类型如何 它们都是相同的 临时表场景 Explicitly
  • PostgreSQL 窗口函数:row_number() over(按 col2 分区 col 顺序)

    以下结果集源自具有一些连接和联合的 SQL 查询 SQL 查询已经对 Date 和 game 上的行进行了分组 我需要一列来描述按日期列分区的游戏的尝试次数 Username Game ID Date johndoe1 Game 1 100
  • PL/SQL 过程:如何返回 select 语句?

    我想创建一个存储过程 on ORACLE数据库服务器我的问题是 我不知道如何返回 select 语句 这是程序中应包含的逻辑 输入参数 过滤器1 int 过滤器2 字符串 with cte as select val1 val2 stdde
  • 如何使用Python3.4在tornado中进行异步mysql操作?

    我现在使用Python3 4 我想在Tornado中使用异步mysql客户端 我已经发现torndb https github com bdarnell torndb但在阅读其源代码后 我认为它无法进行异步mysql操作 因为它只是封装了M
  • MySQL - 查找接近的匹配项

    MySQL 有没有办法在文本字段中找到紧密匹配的内容 说找到 email protected cdn cgi l email protection当搜索时 email protected cdn cgi l email protection
  • DataTables 第 2 页的分页未调用放大弹出窗口

    所以我有这个启用分页的数据表 我编码了一种方式 以便用户可以编辑表的行 当用户调用它在放大弹出窗口中打开的编辑页面时 它在第 1 页 从第 2 页起都运行良好 DataTable 及其前面停止调用 Magnific Popup 我只是不明白
  • Laravel 读写连接不同步

    我在 Laravel 5 2 应用程序中使用读写 MySQL 连接设置 mysql gt write gt host gt env DB HOST WRITE localhost read gt host gt env DB HOST RE
  • 蟒蛇 | MySQL | AttributeError:模块“mysql.connector”没有属性“connect”

    我正在学习 python 中的一个新库 mysql 我尝试执行以下命令 import mysql connector mydb mysql connector connect host localhost user root passwd
  • PostgreSQL WHERE 计数条件

    我在 PostgreSQL 中有以下查询 SELECT COUNT a log id AS overall count FROM Log as a License as b WHERE a license id 7 AND a licens
  • INTEGER 到 DATETIME 的转换与 VB6 不同

    我正在查看一些遗留的 VB6 代码 比我的时代早很多年 它对 SQL 2005 数据库运行查询 它提供了日期限制WHERE子句 其中日期作为整数值给出CLng VB6 中的日期 e g WHERE SomeDateField gt 4006
  • 具有“日期之间”的 CakePHP 模型

    我有一个很大的数据集 超过十亿行 数据在数据库中按日期分区 因此 我的查询工具必须在每个查询上指定一个 SQL Between 子句 否则它将必须扫描每个分区 而且 它会在返回之前超时 所以 我的问题是 分区的数据库中的字段是日期 使用 C
  • LEFT JOIN 比 INNER JOIN 快得多

    我有一张桌子 MainTable 有超过 600 000 条记录 它通过第二个表连接到自身 JoinTable 在父 子类型关系中 SELECT Child ID Parent ID FROM MainTable AS Child JOIN
  • 批处理文件并与数据库比较

    目前我正在开发一个 Spring Boot 应用程序 该应用程序定期尝试处理包含用户数据的文件 其中每行都包含userId and departamentId隔开 例如123534 13 该文件将包含数百万条记录 我的要求是以这样的方式将此
  • sql直接获取表行数的方法

    stackoverflow 的朋友们大家好 我的例行程序中有一个我认为不必要的步骤 假设您想从图库中获取所有图像 并限制每页一定数量的图像 db PDO object start pagenum x images per page limi
  • 控制数据是否存在于数组中

    我在mysql中有两个不同的表 我正在使用curl从json文件中获取数据 我的第一个表名称是 tblclients 该表存储客户端数据 我的第二个表名称是 tblcustomfieldsvalues 该表使用 tblclients 表的
  • 如何重置 SQL Server 中表的 IDENTITY 列? [复制]

    这个问题在这里已经有答案了 我怎样才能重置我的IDENTITY我已经填充的表中的列 我尝试过类似的方法 但它不起作用 WITH TBL AS SELECT ROW NUMBER OVER ORDER BY profile id AS RN
  • 在 Oracle 中如何将多行组合成逗号分隔的列表? [复制]

    这个问题在这里已经有答案了 我有一个简单的查询 select from countries 结果如下 country name Albania Andorra Antigua 我想在一行中返回结果 如下所示 Albania Andorra

随机推荐

  • 【Leetcode】16. 最接近的三数之和

    题目描述 给定一个包括 n 个整数的数组 nums 和 一个目标值 target 找出 nums 中的三个整数 使得它们的和与 target 最接近 返回这三个数的和 假定每组输入只存在唯一答案 题解 解法和 Leetcode 15 三数之
  • 学习了解可能的影响变量,例如收入和体育锻炼对……的影响

    心理健康 资料来源 心理健康正日益成为一个传统上被掩盖的话题 我们已经开始理解心理健康对生产力 总体健康 人际关系和身体健康的影响 并将更多的注意力放在心理健康上 甚至雇主也开始更加重视提供工作环境和条件 以保持员工尽可能快乐和健康 而先进
  • postman中发送post请求保存数据到数据库中文乱码问题

    postman中发送post请求保存数据到数据库中文乱码 postman 以为是header中的问题 加上这俩问题并未解决 以为是数据库的问题 改成这个也没解决 后台打印也没问题 book Book id null type 类别111 n
  • Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource could

    Failed to configure a DataSource url attribute is not specified and no embedded datasource could be configured Reason Fa
  • SpringSecurity授权

    目录 一 RABC的介绍 二 权限表设计 三 编写权限控制方法 1 mapper接口 2 映射文件 3 修改认证逻辑 四 配置类访问资源 五 自定义访问控制逻辑 1 自定义 2 配置类 六 注解设置访问控制 1 Secured 1 在配置了
  • Status Code:200 OK (from disk cache)和304的区别,以及怎么禁止缓存

    有时候缓存是 200 OK from disk cache 有时候会是 304 看运维是否移除了 Entity Tag 移除了 就总是 200 OK from cache 没有移除 就两者交替出现 他们两个的区别是 200 OK from
  • C++中rand() 函数的用法

    C 中rand 函数的用法 1 rand 不需要参数 它会返回一个从0到最大随机数的任意整数 最大随机数的大小通常是固定的一个大整数 2 如果你要产生0 99这100个整数中的一个随机整数 可以表达为 int num rand 100
  • ajax的三种方法以及ajax概念

    目录 Ajax技术主要包括 1 客户端脚本语言 JavaScript 2 异步数据获取技术 XMLHttpRequest 3 数据交换和操作技术 XML和XSTL 4 动态显示和交互技术DOM及基于标准的表示技术XHTML和CSS等 aja
  • elasticsearch 启动报错 Exception in thread "main" java.nio.file.AccessDeniedException:

    系统 操作centos7 虚拟机 bin elasticsearch 启动报错 es1 es1 software elasticsearch 6 3 1 bin elasticsearch Exception in thread main
  • 中文版LLaMA:Chinese-LLaMA-Alpaca

    GitHub GitHub ymcui Chinese LLaMA Alpaca 中文LLaMA Alpaca大语言模型 本地CPU GPU训练部署 Chinese LLaMA Alpaca LLMs 以ChatGPT GPT 4等为代表的
  • Uncaught SyntaxError: Unexpected token ")"

    碰到一个很难排查的错误 记得以前处理过 光看报错信息 无法确定报错位置 从网上搜到解决方案 这个一般是对页面操作发生的错误 静态页面不报错 把源代码中的javascript void 改为javascript void 0 括号中添加一个0
  • 在Easy Samples中使用AvaloniaUI进行多平台UI编码——第1部分——AvaloniaUI构建块

    目录 介绍 为什么Avalonia会大受欢迎 Avalonia的一些缺点 Web和Xamarin框架在多平台开发中的缺点 你可以在这篇文章中找到什么 如何阅读这篇文章 使用Visual Studio 2019创建和运行简单的Avalon项目
  • JAVA学习之路遇到的报错信息以及解决方法(持续更新中)

    希望本篇文章对你有所帮助 文章目录 1 web项目启动发现错误 Artifact website war exploded Error during artifact deployment See server log for detail
  • cadence学习笔记(2)-PCB封装库制作

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 PCB封装库制作 二 制作焊盘 二 制作PCB封装 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门技术也越来越重
  • 我和计算机的故事

    为什么我选择了大三转专业 我和计算机的故事 一 我已经不是当年那个泡在生物实验室几乎每天只睡三个小时的章鱼烧了 也不是当年对着蓝框框在NEC笔记本上写 Pascal 一种编程语言 的章鱼烧了 我现在是三天不见到代码就浑身不舒服的章鱼烧 这个
  • 485芯片中slew-rate-limited是什么意思(转)

    边沿斜率限制 也称 压摆率 限制 压摆率 是单位时间 一般用微妙 器件输出电压值可改变的范围 对于485网络 若想提高线路的通讯速度 首先得要求接口器件具有较高的开关速度 而高开关速度必然会有较高的压摆率 但过高的压摆率会带来EMI干扰 这
  • 在Windows平台上搭建Docker开发环境

    本文介绍的是如何在Windows系统上安装Docker运行环境 Docker官方提供了Windows平台上的安装包 这个安装包会打开Windows平台上的HyperV虚拟机 所以如果不喜欢使用HyperV虚拟机或者有需要使用其他虚拟机软件的
  • MySQL抑制binlog日志中的BINLOG部分

    MySQL通过binlog来记录整个数据的变更过程 因此我们只要有MySQL的binlog日志即可完整的还原数据库 MySQL binlog日志记录有3种不同的方式 即 STATEMENT MIXED ROW 对于不同的日志模式 生成的bi
  • python--pandas数据聚合和分组运算

    groupby机制 1 通过列进行分组 访问列1 并根据列2和列3调用groupby 生成的是对象 s df 列1 groupby df 列2 df 列3 求和 sums s sum sums unstack 或者 df groupby k
  • 数据库——sql数据查询

    sql数据查询 单表查询 多表查询 联合查询UNION 连接查询 嵌套查询 子查询 复制表 判断查询 单表查询 查询全部数据 select from 表名 查询部分字段 select 字段1 字段2 from 表名 简单的条件查询 sele