MySQL:开始深入其数据(二)DQL

news2024/9/26 1:21:34

在初识MySQL中我们就知道了DQL只有一个关键字select。

可是数据库管理中我们用的最多的就是查询,为了方便我们使用,MySQL定义了大量关键字给我们使用,泪目。

文章目录

  • DQL
  • select语法
    • 指定查询字段
    • where条件语句
      • 逻辑操作符
      • 比较操作符
      • between and操作符
      • like操作符
      • in操作符
      • join连接符

DQL

我们开始认识它
DQL(Data Query Language,数据查询语言)

  • 查询数据库数据,如SELECT语句
  • 简单的单表查询或多表的复杂查询和嵌套查询
  • 数据库语言中最核心、最重要的语句 使用频率最高的语句

select语法

SELECT [ALL | DISTINCT]
{ * | table.* | [ table.field1 [ as alias1] [, table.field2 [as alias2]][, …]] }
FROM table_name [ as table_ alias ]
[ left|right|inner join table_name2 ] #联合查询
[ WHERE … ] #指定结果需满足的条件
[ GROUP BY …] #指定结果按照哪几个字段来分组
[ HAVING …] #过滤分组的记录必须满足的次要条件
[ ORDER BY… ] #指定查询记录按一个或者多个条件排序
[ LIMIT { [ offset,] row_count | row_count OFFSET offset }] ; #指定查询的记录从哪条至哪条

注意:
[] 括号代表可选的;
{} 括号代表必须的;
# MySQL语句中的注释符,也可以用 \*该处为注释*/

看起来很多很复杂,其实很简单,让我们从上往下一步一步看

指定查询字段

SELECT [ALL | DISTINCT] { * | table.* | [ table.field1 [ as alias1] [, table.field2 [as alias2]][, …]] FROM table_name [ as table_ alias ]

[ALL | DISTINCT]:

ALL(默认):返回所有满足条件的记录,不去重。
DISTINCT:返回去重后的记录,即每个不同的值只返回一次。

{ * | table.* | [table.field1 [as alias1] [, table.field2 [as alias2]][, …]] }
*:选择所有列。
table.*:选择指定表中的所有列。
table.field1 [as alias1]:选择指定表中的某一列,并可使用别名进行重命名。
多个列用逗号分隔,在 SELECT 语句返回的结果集中将会包含指定的列。可以使用 as 关键字给列起别名,别名可以在结果集中使用。

FROM table_name [as table_alias]:
table_name:指定要从中查询数据的表的名称。
as table_alias(可选):给表设置别名,用于简化查询语句的书写,可以在后续的查询中使用该别名

where条件语句

用于检索数据表中符合条件的记录,搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假 。

where搜索条件的组成 :逻辑操作符+ 比较操作符

逻辑操作符

逻辑操作符用于连接或改变条件表达式之间的逻辑关系,常见的逻辑操作符有:

操作符描述
AND与操作,所有条件都必须为真
OR或操作,只要有一个条件为真即可
NOT非操作,取反条件的结果

比较操作符

比较操作符用于比较两个表达式之间的关系,常见的比较操作符有:

操作符描述
=等于
!=不等于
>大于
<小于
<>不等于
>=大于等于
<=小于等于
is相同
is not不相同
BETWEEN在某个范围内
LIKE模糊匹配
IN在给定的值列表中

这些操作符可以与WHERE语句结合使用,用于构建复杂的搜索条件,以过滤出满足特定条件的记录。注意,逻辑操作符和比较操作符可以根据需要进行组合和嵌套,以构建更复杂的条件表达式。

例如,可以使用WHERE语句如下:

SELECT column1, column2
FROM table_name
WHERE column1 = 'value' AND column2 > 10

is isnot 和 = !=的区别:

  1. “=”(等于)和"!="(不等于):
    • "="操作符用于比较两个值是否相等。
    • "!="操作符用于比较两个值是否不相等。

这两个操作符可以用于比较各种数据类型(数值、字符、日期等),并返回布尔值(True或False)。

示例:

SELECT * FROM table_name WHERE column1 = 10;
-- 返回column1等于10的记录

SELECT * FROM table_name WHERE column2 != 'abc';
-- 返回column2不等于'abc'的记录
  1. “IS"和"IS NOT”:
    • "IS"操作符用于比较一个值是否与另一个值相同或为NULL。
    • "IS NOT"操作符用于比较一个值是否与另一个值不同或不为NULL。

这两个操作符主要用于NULL值的比较。

示例:

SELECT * FROM table_name WHERE column1 IS NULL;
-- 返回column1为NULL的记录

SELECT * FROM table_name WHERE column2 IS NOT NULL;
-- 返回column2不为NULL的记录

需要注意的是,"IS"和"IS NOT"操作符只能用于比较NULL值,而不能用于比较其他数据类型的值。

between and操作符

between and操作符用于指定范围,以便选择在指定范围内的数据
语法:

SELECT 字段列1,字段列2 ,…FROM 表名 WHERE 字段列x BETWEEN 值1 AND 值2

相当于于 >= 和 <= 联合使用
举例 :

#查询课程表中课时在110和120之间的所有记录
 select  *  from  subject  where ClassHour   between  110   and  120;
等同于:
 SELECT  *  FROM  subject  WHERE ClassHour >= 110  AND  ClassHour <=120;

再次提醒mysql不区分大小写

like操作符

like操作符用于在where子句中搜索符合特定模式的数据(模糊查询)。LIKE操作符通常与通配符一起使用,常见的通配符有 % 和 _。

%:代表零个、一个或多个字符。
_:代表一个单一字符。

举例:

 #查询包含“数学”的所有课程
SELECT   *  FROM subject WHERE SubjectName  LIKE  "%数学%";
#查询所有姓名为“李**”三个字的学生信息
SELECT  StudentNo,StudentName FROM student  
  WHERE StudentName LIKE "李__";

in操作符

IN操作符用于指定条件范围,以便从一组可能的值中选择。

语法:

SELECT 字段列1,字段列2 ,…FROM 表名 WHERE 字段列x IN ( 值1,值2,值3…)

相当于or的使用
示例:

SELECT  *  FROM  subject  where    ClassHour = 100  OR ClassHour =110 OR ClassHour  = 120;  #普通处理方式
SELECT  *  FROM  subject  where ClassHour  IN ( 100, 110,120 );
#相比于or,使用IN进行查询方式,更为简洁,效率更高

null空值条件查询

用来判断字段是不是null,常于is 和is not 一起使用。
null 的概念:

  • NULL代表“无值”
  • 区别于零值0和空符串“”
  • 只能出现在定义允许为NULL的字段
  • 须使用 IS NULL 或 IS NOT NULL比较操作符去比较

join连接符

在表中至少一个匹配时,则返回记录

在 MySQL 中,除了使用 UNION 进行联合查询外,你提到的另一种情况涉及连接(JOIN)操作,包括内连接(INNER JOIN)和外连接(OUTER JOIN)。这些连接操作允许你根据关联条件从多个表中检索数据。以下是它们的简要介绍:

  1. 内连接(INNER JOIN)

    • 内连接根据两个表之间的相关列的值将两个表中的行组合起来。
    • 语法示例:
      SELECT student.age, teacher.name
      FROM student
      INNER JOIN teacher ON teacher.class = student.class;
      
    • 在上面的示例中,INNER JOIN 将根据 teacher 表和 student 表中的 class 列进行匹配,并返回满足条件的行。
  2. 外连接(OUTER JOIN)

    • 外连接又分为左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)和全外连接(FULL JOIN)。
    • 左外连接(LEFT JOIN):返回左表中的所有行,以及右表中匹配的行。
    • 右外连接(RIGHT JOIN):返回右表中的所有行,以及左表中匹配的行。
    • 全外连接(FULL JOIN):返回左表和右表中的所有行,如果没有匹配的行则用 NULL 值填充。
    • 语法示例:
      SELECT student.age, teacher.name
      FROM student
      LEFT JOIN teacher ON teacher.class = student.class;
      
    • 在上面的示例中,LEFT JOIN 将返回 student 表中的所有行,并且匹配 teacher 表中的行,如果没有匹配的行则用 NULL 值填充 teacher.name。

通过使用连接操作符,可以根据表之间的关联条件从多个表中检索数据,并根据需要选择合适的连接类型来获取所需的结果集。
建了一个公众号,后续会在上面更新一些有用资源和笔记,大家有兴趣的话可以加一下谢谢了。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1483010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.亿级积分数据分库分表:总体方案设计

项目背景 以一个积分系统为例&#xff0c;积分系统最核心的有积分账户表和积分明细表&#xff1a; 积分账户表&#xff1a;每个用户在一个品牌下有一个积分账户记录&#xff0c;记录了用户的积分余额&#xff0c;数据量在千万级积分明细表&#xff1a;用户每次积分发放、积分扣…

基于springboot+vue的在线考试与学习交流平台

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

猫猫与数列

来源&#xff1a;牛客网 示例1 输入 2 2 输出 5 示例2 输入 999999998 2 输出 3 示例3 输入 10 18 输出 3 #include <bits/stdc.h>#define endl \n using ll long long; typedef unsigned long long ull; using namespace std; void GordenGhost(); l…

科技企业如何做到FTP数据安全保护

在数字化浪潮的推动下&#xff0c;科技企业的数据已成为推动创新、提升效率、增强竞争力的核心资源。数据的重要性不言而喻&#xff0c;它不仅包含了客户信息、市场分析、产品设计等关键信息&#xff0c;更是企业宝贵的资产。然而&#xff0c;随着数据量的激增&#xff0c;数据…

《PyTorch深度学习实践》第十二讲循环神经网络基础

一、RNN简介 1、RNN网络最大的特点就是可以处理序列特征&#xff0c;就是我们的一组动态特征。比如&#xff0c;我们可以通过将前三天每天的特征&#xff08;是否下雨&#xff0c;是否有太阳等&#xff09;输入到网络&#xff0c;从而来预测第四天的天气。 我们可以看RN…

数据结构从入门到精通——顺序表

顺序表 前言一、线性表二、顺序表2.1概念及结构2.2 接口实现2.3 数组相关面试题2.4 顺序表的问题及思考 三、顺序表具体实现代码顺序表的初始化顺序表的销毁顺序表的打印顺序表的增容顺序表的头部/尾部插入顺序表的头部/尾部删除指定位置之前插入数据和删除指定位置数据顺序表元…

MySQL 主从读写分离入门——基本原理以及ProxySQL的简单使用

一、读写分离工作原理 读写分离的工作原理&#xff1a;在大型网站业务中&#xff0c;当单台数据库无法满足并发需求时&#xff0c;通过主从同步方式同步数据。设置一台主服务器负责增、删、改&#xff0c;多台从服务器负责查询&#xff0c;从服务器从主服务器同步数据以保持一…

【ArcGIS】渔网分割提取栅格图+网格化分析图绘制

ArcGIS按渔网分割提取栅格图并绘制网格化分析图 准备数据操作步骤步骤1&#xff1a;创建渔网&#xff08;Create Fishnet&#xff09;步骤2&#xff1a;栅格数据处理步骤3&#xff1a;栅格插值步骤4&#xff1a;数据关联 参考 网格化的目的是让各个数据更加标准化的进行统计。因…

FlinkSQL ChangeLog

01 Changelog相关优化规则 0101 运行upsert-kafka作业 登录sql-client&#xff0c;创建一个upsert-kafka的sql作业&#xff08;注意&#xff0c;这里发送给kafka的消息必须带key&#xff0c;普通只有value的消息无法解析&#xff0c;这里的key即是主键的值&#xff09; CREA…

linux系统Jenkins工具参数化构建

Jenkins参数化构建 web服务器jenkins服务器编写主机清单编写脚本代码 jenkins服务web页面操作 web服务器 下载nginx 下载gitcd /usr/share/nginxrm -rf htmlgit clone http://root:Qq123456192.168.188.176/ximu/test-nginx.gitmv test-nginx/ htmljenkins服务器 下载ansible…

前端Vue自定义勾选协议组件的开发与应用

摘要&#xff1a; 随着前端技术的不断发展&#xff0c;用户体验成为了软件开发中的关键要素。在登录、注册等场景中&#xff0c;勾选协议是常见的需求。本文旨在介绍一款基于 Vue.js 的自定义勾选协议组件的开发与应用&#xff0c;该组件适用于多种场景&#xff0c;并且具备良…

虚拟机部署Sentry步骤,国内地址

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

【计算机网络】TCP 如何实现可靠传输

TCP通过三次握手建立连接&#xff0c;四次挥手释放连接&#xff0c;确保连接建立和连接释放的可靠。 序列号、检验和、确认应答信号、重发机制、连接管理、窗口控制、流量控制、拥塞控制 标准回答 可靠传输就是通过TCP连接传送的数据是没有差错、不会丢失、不重复并且按序到达的…

【C++ map和set】

文章目录 map和set序列式容器和关联式容器键值对setset的主要操作 mapmap主要操作 multiset和multimap map和set 序列式容器和关联式容器 之前我们接触的vector,list,deque等&#xff0c;这些容器统称为序列式容器&#xff0c;其底层为线性序列的的数据结构&#xff0c;里面存…

Mac专用投屏工具AirServer 7.27 for Mac中文版2024最新图文教程

Mac专用投屏工具AirServer 7.27 for Mac中文版是一款适用于Mac的投屏工具&#xff0c;可以将Mac屏幕快速投影到其他设备上&#xff0c;如电视、投影仪、平板等。 Mac专用投屏工具AirServer 7.27 for Mac中文版具有优秀的兼容性&#xff0c;可以与各种设备配合使用。无论是iPhon…

[方案实操]中国电子副总陆志鹏:《数据资产化路径的思考与探索》演讲实录和解析

中国数字经济发展和治理学术年会&#xff08;2023&#xff09;上&#xff0c;中国电子党组成员、副总经理&#xff0c;50人论坛委员陆志鹏先生《数据资产化路径的思考与探索》为题进行了主旨演讲&#xff0c;提出“如果简单把资源进行评估定价&#xff0c;价值非常有限&#xf…

STM32标准库开发—实时时钟(BKP+RTC)

BKP配置结构 注意事项 BKP基本操作 时钟初始化 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP, ENABLE);PWR_BackupAccessCmd(ENABLE);//设置PWR_CR的DBP&#xff0c;使能对PWR以及BKP的访问读写寄存器操作 uint16_t ArrayW…

springboot基于web的网上摄影工作室的开发与实现论文

网上摄影工作室 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了网上摄影工作室的开发全过程。通过分析网上摄影工作室管理的不足&#xff0c;创建了一个计算机管理网上摄影工作室的方案。文章介绍了网上摄影工…

详细介绍如何用windows自带Hyper-V安装虚拟机(windows11和ubuntu22)

通过系统自带的hyper-v安装windows11&#xff0c;舒服又惬意&#xff0c;相比用第三方虚拟机软件速度快很多。 硬件准备 准备 系统需要符合能安装 Hyper-V 的最低要求windows版本含Hyper-V的功能 电脑空间 电脑要有足够的空间来安装你这个虚拟机。根据自己的磁盘容量情况来规…

鸿蒙系统的开发与学习:一、安装工具与处理报错

前言&#xff1a; 鸿蒙系统的学习与记录。 1 、使用开发工具&#xff1a;deveco-studio 1&#xff09;这个是工具的安装 2&#xff09;这个是工具包&#xff0c;里面包含了 obpm&#xff0c;如果你装不上这个&#xff0c;可以使用工具包内部的 2、安装 官方安装教程&#xff…