【MySQL】一文带你了解检索数据

news2024/12/24 3:56:59

🎬 博客主页:博主链接
🎥 本文由 M malloc 原创,首发于 CSDN🙉
🎄 学习专栏推荐:LeetCode刷题集!
🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📆 未来很长,值得我们全力奔赴更美好的生活✨
------------------❤️分割线❤️-------------------------
————————————————

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

文章目录

  • 😇MySQL的前情介绍
  • 😇本文章详情
  • 😇SELECT语句
    • 😇检索单个列
  • 😇结束SQL语句
    • 😇SQL语句和大小写
  • 😇使用空格
  • 😇检索多个列
  • 😇检索所有列
  • 👻检索不同的行
  • 🤣限制结果
  • 🤣使用完全限定的表名
  • 🤣如何巩固学习

😇MySQL的前情介绍

😁大家好呀,今天是我第N次写MySQL,也是最近才学习MySQL,也想着记录一下自己的学习过程,并且分享给大家尼!

😇本文章详情

😁大家好呀,本章将介绍如何使用SELECT语句从表中检索一个或多个数据列。

😇SELECT语句

正如一文带你了解SQL所述,SOL语句是由简单的英语单词构成的。这些单词称为关键字,每个SOL语句都是由一个或多个关键字构成的。大概,最经常使用的SOL语句就是SELECT语句了。它的用途是从一个或多个表中检索信息。

为了使用SELECT检索表数据,必须至少给出两条信息一一想选择什么,以及从什么地方选择。

😇检索单个列

我们来从简单的 SQL SELECT 语句开始介绍,此语句如下所示:
输入

SELECT prod_name FROM products;

分析

上述语句利用SELECT语句从products表中检索一个名为prod_name列。所需的列名在SELECT关键字之后给出,FROM关键字指出从其中检索数据的表名。此语句的输出如下所示:

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

未排序数据 如果读者自己试验这个查询,可能会发现显示输出的数据顺序与这里的不同。出现这种情况很正常。如果没有明确排序查询结果(下一章介绍),则返回的数据的顺序没有特殊意义。返回数据的顺序可能是数据被添加到表中的顺序也可能不是。只要返回相同数目的行,就是正常的

如上的一条简单SELECT语句将返回表中所有行。数据没有过滤(过滤将得出结果集的一个子集),也没有排序。以后文章将详细讨论这些内容。

😇结束SQL语句

结束SQL语句 多条SQL语必须以分号(;)分隔。MySQI如同多数DBMS一样,不需要在单条SOL语句后加分号。但特定的DBMS可能必须在单条SOL语句后加上分号。当然,如果愿意可以总是加上分号。事实上,即使不一定需要,但加上分号肯定没有坏处。如果你使用的是mysql命令行,必须加上分号来结束SOL语句。

😇SQL语句和大小写

SQL语句和大小写请注意 SOL语句不区分大小写,因此SELECT与select是相同的。同样,写成Select也没有关系许多SOL开发人员喜欢对所有SOL关键字使用大写,而对所有列和表名使用小写,这样做使代码更易于阅读和调试。

不过,一定要认识到虽然SOL是不区分大小写的,但有些标识符(如数据库名、表名、列名)可能不同:在MySQL4.1及之前的版本中,这些标识符默认是区分大小写的;在MySOL4.1.1版本中,这些标识符默认是不区分大小写的。
最佳方式是按照大小写的惯例,且使用时保持一致

😇使用空格

使用空格 在处理SQL语句时,其中所有空格都被忽略。SQL语句可以在一行上给出,也可以分成许多行。多数SOL开发人员认为将SOL语句分成多行更容易阅读和调试。

😇检索多个列

要想从一个表中检索多个列,使用相同的SELECT语句。唯一的不同是必须在SELECT关键字后给出多个列名,列名之间必须以逗号分隔。

当心逗号 :在选择多个列时,一定要在列名之间加上逗号,但最后一个列名后不加。如果在最后一个列名后加了逗号,将出现错误。

下面的SELECT语句从products表中选择3列

输入

SELECT prod_id,prod_name,prod_price FROM products;

分析

与前一个例子一样,这条语句使用SELECT语句从表products中选择数据。在这个例子中,指定了3个列名,列名之间用逗号分隔。此语句的输出如下。

输出

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

❤️‍🔥:数据表示 :从上述输出可以看到,SOL语句一般返回原始的无格式的数据。数据的格式化是一个表示问题,而不是一个检索问题。因此,表示(对齐和显示上面的价格值,用货币符号和逗号表示其金额)一般在显示该数据的应用程序中规定。一般很少使用实际检索出的原始数据(没有应用程序提供的格式)

😇检索所有列

除了指定所需的列外(如上所述,一个或多个列),SELECT语句还可以检索所有的列而不必逐个列出它们。这可以通过在实际列名的位置使用星号(*)通配符来达到,如下所示:

输入

SELECT * FROM products;

分析

如果给定一个通配符(*),则返回表中所有列。列的顺序一般是列在表定义中出现的顺序。但有时候并不是这样的,表的模式的变化(如添加或删除列)可能会导致顺序的变化。

使用通配符

使用通配符 一般,除非你确实需要表中的每个列,否则最好别使用*通配符。虽然使用通配符可能会使你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能

检索未知列

检索未知列 使用通配符有一个大优点。由于不明确指定列名(因为星号检索每个列),所以能检索出名字未知的列

👻检索不同的行

正如所见,SELECT返回所有匹配的行。但是,如果你不想要每个值每次都出现,怎么办?例如,假如你想得出products表中产品的所有供应商ID:

输入

SELECT vend_id FROM products;

输出

在这里插入图片描述

SELECT语句返回14行(即使表中只有4个供应商),因为products表中列出了14个产品。那么,如何检索出有不同值的列表呢?

解决办法:是使用DISTINCT关键字,顾名思义,此关键字指示MySQL只返回不同的值。

输入

SELECT DISTINCT vend_id FROM products;

分析

SELECT DISTINCT vend id告诉MySQL只返回不同(唯一)的vend id行,因此只返回4行,如下面的输出所示。如果使用DISTINCT关键字,它必须直接放在列名的前面。

输出
在这里插入图片描述

💥注意不能部分使用DISTINCT DISTINCT关键字应用于所有列而不仅是前置它的列。如果给出SELECT DISTINCT vend_id,prod_price,除非指定的两个列都不同,否则所有行都将被检索出来。

🤣限制结果

SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT子句。下面举一个例子:

输入

SELECT prod_name FROM products LIMIT 5;

分析

此语句使用SELECT语检索单个列。LIMIT 5指示MySOL返回不多于5行。此语句的输出如下所示

输出
在这里插入图片描述

为了得出下一个5行,可指定要检索的开始行和行数,如下所示:

输入

SELECT prod_name FROM products LIMIT 5,5;

分析

LIMIT5,5指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。此语句的输出如下所示:

输出
在这里插入图片描述

所以,带一个值的LIMIT总是从第一行开始,给出的数为返回的行数。带两个值的LIMIT可以指定从行号为第一个值的位置开始。

行0 :检索出来的第一行为行0而不是行1。因此,LIMIT1,1将检索出第二行而不是第一行。

在行数不够时 LIMIT中指定要检索的行数为检索的最大行数。如果没有足够的行(例如,给出LIMIT 10,5,但只有13行),MySOL将只返回它能返回的那么多行

MySQL5的LIMIT语法 LIMIT3,4的含义是从行4开始的3行还是从行3开始的4行?如前所述,它的意思是从行3开始的4行,这容易把人搞糊涂。

由于这个原因,MySOL 5支持LIMIT的另一种替代语法LIMIT40FFSET3意为从行3开始取4行,就像LIMIT34一样。

🤣使用完全限定的表名

迄今为止使用的SOL例子只通过列名引用列。也可能会使用完全限定的名字来引用列(同时使用表名和列字)。请看以下例子:

输入

SELECT products.prod_name FROM crashcourse.products; 

这条语句在功能上也等于刚使用的那条语句(当然,假定products表确实位于crashcourse数据库中)。

🤣如何巩固学习

提示:在学习的过程中,我们需要先自行进行思考,而不是一遇到不会的就放弃思考直接看答案,如果最后遇到真的不会的题目,我们可以适当的进行观看答案,看自己的思路是否正确,在作出正确的判断

小结

本章学习了如何使用SQL的SELECT语句来检索单个表列、多个表列以及所有表列。下一篇文章将讲授如何排序检索出来的数据。

好啦今日的分享到这里就结束啦,我是爱你们的M malloc希望可以帮助到你们噢,最后别忘记三连啦!!

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

21 RBM(Restricted Boltzmann Machine)——受限玻尔兹曼机

文章目录 21 RBM(Restricted Boltzmann Machine)——受限玻尔兹曼机21.1 背景介绍22.2 RBM模型表示22.3 Inference问题22.4 Marginal问题 21 RBM(Restricted Boltzmann Machine)——受限玻尔兹曼机 21.1 背景介绍 什么是玻尔兹曼机: 简单来说就是具有条件的Marko…

无线蓝牙耳机排行榜,十大口碑最好蓝牙耳机

近年来,随着生活水平的提高,越来越多的人对高品质蓝牙耳机的需求日益增加。无论我们在选购什么产品,我们都会考虑一个价值范围,买蓝牙耳机也是同样,都会给自己一个预算,然后根据预算去网上搜寻这个价格范围…

【python学习】-读入xlsx文件,将datetime.time转为minute的格式,并将新数据存入csv文件

读入xlsx文件&#xff0c;将datetime.time转为minute的格式&#xff0c;并将新数据存入csv文件 任务概要思路设计代码实现导入相关库时间转换函数算法内核csv文件结果 接到一个需求&#xff0c;师兄在做稳定性测试时&#xff0c;时间显示格式为<class ‘datetime.time’>…

深入剖析 Python 函数参数传递机制及高级应用

前言 在本篇文章中&#xff0c;笔者将带你深入探讨 Python 函数传参的进阶主题。 通过阅读本篇文章&#xff0c;你可以深入了解 Python 函数传参的进阶主题&#xff0c;掌握更多高级的函数技巧&#xff0c;提升你的 Python 编程能力。 前面分享了Python 函数传参基础篇&#xf…

图像生成--对抗生成模型

生成模型概述 对抗生成模型 机器学习中的两大主要问题&#xff1a; 判别生成 判别模型的典型代表即为图像分类任务&#xff0c;即给定一个数据&#xff0c;判定他是哪一类。 判别模型学习到的是一个概率&#xff08;贝叶斯过程&#xff09; 而生成模型的区别在于&#xf…

【Elacticsearch】 原理/数据结构/面试经典问题整理

对Elacticsearch 原理/数据结构/面试经典问题整理的文章&#xff1b; 映射 | Elasticsearch: 权威指南 | Elastic Elacticsearch介绍 Elasticsearch,这里简称ES。ES是一个开源的高可用高扩展的分布式全文搜索与分析引擎&#xff0c;可以提供PB级近实时的数据存储和检索能力&am…

SpringBoot自定义starter入门

一、创建一个普通的Maven项目 pom.xml文件修改 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&quo…

你知道如何将音频转文字吗?

我跟你们说&#xff0c;我认识一名盲人音乐人&#xff0c;他很热爱音乐创作&#xff0c;但是因为听力的限制&#xff0c;无法像其他人那样从录音中获取音乐素材。然而&#xff0c;有一天他听说了一个神奇的功能——音频转文字&#xff0c;这个功能可以将音频文件转换成文字文本…

从技术谈到管理,把系统优化的技术用到企业管理

很多技术人员在职业上对自己要求高&#xff0c;工作勤奋&#xff0c;承担越来越大的责任&#xff0c;最终得到信任&#xff0c;被提拔到管理岗位。但是往往缺乏专业的管理知识&#xff0c;在工作中不能从整体范围优化工作流程&#xff0c;仍然是“个人贡献者”的工作方式&#…

低功耗晶振电路设计

晶振电路设计 晶振中负性阻抗的原理 晶振的回路主要由两部分组成&#xff0c; 一部分是激活分支&#xff0c; 用于提供能量给晶振启动直至达到稳定的相位&#xff0c;另一部分是被动分支&#xff0c; 主要由电阻&#xff0c; 两个外部负载电容以及所有的寄生电容&#xff0c;…

手写RPC总结篇

协议制定&#xff1a;client到server做交互的通信协议&#xff0c;比如request response 网络端点peer 难点1 : Jetty嵌入 ◆jetty Server ◆ServletContextHandler ◆ServletHolder jetty server 起到网络监听的作用ServletContextHandler注册到jetty server中ServletHolde…

测试开发之Python自动化 Pytest 之 fixture

Pytest 之 fixture unittest 和 nose 都支持 fixture 的,但是 fixture 在 pytest 里使用更灵活。也算是 pytest 的一个闪光点吧可以理解为一个跟 setup 和 teardown 这种前后置类似的东西。但是比它们要强大、灵活很多 fixtur 当做参数传入 # -*- coding: utf-8 -*-import p…

图像处理实战02-yolov5目标检测

yolov5 YOLOv5 是一种目标检测算法&#xff0c;它是 YOLO (You Only Look Once) 系列算法的最新版本。YOLOv5 采用了一种新的架构&#xff0c;它包括一个基于 CSPNet (Cross Stage Partial Network) 的主干网络以及一系列改进的技巧&#xff0c;如多尺度训练、数据增强、网络混…

互联网行业-镭速文件传输系统方案

互联网行业是一个快速变化和高度竞争的行业&#xff0c;这一行业需要传输大量的数据、代码和文件。在互联网企业的生产和运营过程中&#xff0c;需要传输各种敏感和大型的文件&#xff0c;例如业务报告、数据分析、软件代码等。这些文件需要在不同的部门、不同的地点之间高效地…

微服务springcloud 07 hystrix + turbine 集群聚合监控

01.hystrix dashboard 一次只能监控一个服务实例&#xff0c;使用 turbine 可以汇集监控信息&#xff0c;将聚合后的信息提供给 hystrix dashboard 来集中展示和监控 02.新建 sp10-turbine 项目 03.pom.xml <?xml version"1.0" encoding"UTF-8"?&…

C语言---malloc(0)会产生什么结果,真的是空指针吗?

前言 &#xff08;1&#xff09;几天前在一个交流群中看到有人说&#xff0c;面试问malloc(0)会怎么样是真的恶心。 &#xff08;2&#xff09;这个突然激起了我的好奇心。居然还可以malloc(0)&#xff1f;&#xff01; &#xff08;3&#xff09;经过测试最后&#xff0c;发现…

基于Java学生课外知识学习网站设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

PulsarMQ系列入门篇

文章目录 介绍&#xff1a;部署安装讲解:安装单机版本测试&#xff08;Linux下&#xff09;&#xff1a; 介绍&#xff1a; PulsarMQ 现托管于apache Apache 软件基金会顶级项目&#xff0c;2016年由雅虎公司开源的分布式多租户消息中间件 &#xff0c;是下一代云原生分布式消息…

PaddleOCR #hello paddle: 从普通程序走向机器学习程序 - 初识机器学习

这篇示例向你介绍普通程序跟机器学习程序的区别&#xff0c;并带着你用百度飞桨框架&#xff0c;实现第一个机器学习程序&#xff0c;并初步认识机器学习。 作为一名开发者&#xff0c;你最熟悉的开始学习一门编程语言&#xff0c;或者一个深度学习框架的方式&#xff0c;可能是…

万字长文:大模型训练避坑指南

自 2022 年 11 月底 ChatGPT 发布以来&#xff0c;大模型的热度持续发酵&#xff0c;相信高屋建瓴的讨论大家已经看了很多了。今天我们选择从实用角度&#xff0c;分别就算力、算法、工程、数据和团队等方向讨论了训练一个千亿参数量级的大语言模型和 ChatGPT 需要些什么&#…