当前位置: 首页 > news >正文

【MySQL】(基础篇四) —— 检索数据

检索数据

检索数据是我们使用数据库时进行最多的操作,其中包括了检索条件、排序、过滤、分组等等。我会在后续的多篇博客中为你进行详细地介绍它们。

这次先让我们来粗略的了解一下SELECT,为了使用SELECT检索表数据,必须至少明确两点信息——想选择什么,以及从什么地方选择。

为了方便后面的学习,我准备了一些数据库以及数据表信息,网盘链接:https://pan.baidu.com/s/1A2je66sLrpd7rbzuSK2LPQ?pwd=1023 提取码:1023

或者直接运行SQL命令,我希望你可以和我一起进行实操,让自己掌握mysql更加熟练,具体的SQL命令传送门:https://blog.csdn.net/dao_cao_renshuai/article/details/139565004

检索单个列

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

【示例】在employees表中查找last_name字段

SELECT last_name
FROM employees;

运行结果查出表中所有last_name字段的信息

在这里插入图片描述

上述语句利用SELECT 语句从employees表中检索一个名为last_name的列。所需的列名在SELECT关键字之后给出,FROM关键字指出从其中检索数据的表名。如果你的输出结果顺序和我不同也没有关系,这涉及到sql的排序问题,我会在后面的内容中为你详细讲解。

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

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

检索多个列

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

【示例】在employees表中查找last_name字段和first_name字段

SELECT last_name, first_name
FROM employees;

运行结果:

在这里插入图片描述

检索所有列

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

【示例】查询employees表中的所有字段

SELECT *
FROM employees;

运行结果:

在这里插入图片描述

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

DISTINCT去重

SELECT返回所有匹配字段的行。但是,如果你不想要每个值每次都出现,怎么办?假如你想得出employees表中产品的所有工种job_id:

在这里插入图片描述

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

【示例】去重查询employees表中产品的所有job_id:

SELECT DISTINCT job_id
FROM employees;

运行结果:

在这里插入图片描述

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

LIMIT限制结果条数

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

【示例】去重查询employees表中产品的所有job_id,且限制只查看前五个结果:

SELECT DISTINCT job_id
FROM employees
LIMIT 5;

运行结果:

在这里插入图片描述

【示例】去重查询employees表中产品的所有job_id,限制从第五个数据开始只查看五个结果:

SELECT DISTINCT job_id
FROM employees
LIMIT 5,5;

运行结果:

在这里插入图片描述

LIMIT 5, 5指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。

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

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

完全限定表名

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

【示例】使用完全限定的列名(列名前面加上表名)来查询employees表中的last_name字段

SELECT employees.last_name
FROM employees;

这样做运行的结果和我们检索单个列中例子查询效果一样

【示例】使用完全限定的表名(表名前面加上数据库名)完成查询employees表中的last_name字段

SELECT last_name
FROM myemployees.employees;

这条语句在功能上也等于刚使用的那条语句,在有一些情形下需要完全限定名。现在,你只需要了解一下这个语法,遇到需要使用它的时候,我会为你详细解释。

相关文章:

  • 展会邀请 | 龙智即将亮相2024上海国际嵌入式展,带来安全合规、单一可信数据源、可追溯、高效协同的嵌入式开发解决方案
  • JavaScript 如何访问本地文件夹
  • 使用Python的xml.etree.ElementTree模块解析XML文件
  • 探索Excel的隐藏功能:如何求和以zzz开头的列
  • 58.CountdownLatch
  • 【java、lucene、python】互联网搜索引擎课程报告二:建立搜索引擎
  • 【React】Redux与React - 环境准备
  • 解决 make_ext4fs is not find, it is recommanded to install android-tools-fsutils
  • 素颜个人引导页源码
  • 计算机系统基础笔记(12)——控制
  • Netty原理与实战
  • Synchronized的锁膨胀艺术:深入源码的探险之旅
  • 【ubuntu】增加samba服务和文件夹
  • gitlabcicd-k8s部署gitlab
  • 字符串形成树形
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 230. Kth Smallest Element in a BST
  • DataBase in Android
  • Gradle 5.0 正式版发布
  • magento2项目上线注意事项
  • mysql_config not found
  • spring boot下thymeleaf全局静态变量配置
  • Spring核心 Bean的高级装配
  • uva 10370 Above Average
  • 闭包--闭包之tab栏切换(四)
  • 来,膜拜下android roadmap,强大的执行力
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​Spring Boot 分片上传文件
  • #pragma once与条件编译
  • #单片机(TB6600驱动42步进电机)
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (Git) gitignore基础使用
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (pojstep1.3.1)1017(构造法模拟)
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (四)汇编语言——简单程序
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (一)Linux+Windows下安装ffmpeg
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .Family_物联网
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET gRPC 和RESTful简单对比
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net 按比例显示图片的缩略图
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net下的富文本编辑器FCKeditor的配置方法
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器
  • [C++]C++基础知识概述
  • [CF]Codeforces Round #551 (Div. 2)