第四章.MySQL检索数据

本文详细介绍了MySQL中SELECT语句的使用,包括检索单个列、多个列、所有列,以及如何检索不同的行和限制结果数量。还讨论了使用完全限定的表名字的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4.1 SELECT语句

SQL语句是由简单的英语单词组成的。这些单词称为关键字,每个SQL语句都是由一个或者多个关键字构成的。大概,是经常使用的SQL语句就是SELECT语句了。它的用途是从一个或者多个表中检索信息。
为了使用SELECT检索表数据,必须至少给出两条信息—想选择什么,以及从什么地方选择。

4.2检索单个列

我们将从简单的SQL SELECT 语句开始介绍:
在这里插入图片描述

语句如下:

SELECT 
	e.ename
FROM
	emp e
;

在这里插入图片描述
分析:上述语句利用SELECT 语句从emp表中检索一个名为ename的列,所需的列名在SELECT关键字之后给出,注意,有时候为了简写,在表明后边跟一个表名的别名,这里给emp起了一个别名e,这样前面用e.什么就可以自动补全了。
如上的一条简单的SELECT语句将返回表中的所有行,数据没有过滤(过滤将得出结果集的一个子集),也没有排序。
结束SQL语句,多条SQL语句必须以;分隔。这是一个好习惯,最好一直遵守。
SQL语句和大小写:注意了,SQL语句不区分大小写,因此,SELECT与select是相同的。同样的写成SeLeCt也是可以的。但是约定俗称是:SQL关键字使用大写,而对于所有列和表名使用小写。
本语句将SELECT语句分行更易于阅读。

4.3检索多个列

想要从一个表中检索多个列,使用相同的SELECT语句,唯一不同的是SELECT关键字后给出多个列名,列名之间必须以逗号分隔。
当心逗号,在选择多个列的时候,一定要在列名之间加上逗号,但是最后一个列名后面不加。如果在最后一列后加了逗号,将出现错误。
下面的SELECT语句从emp表中选择3列:

SELECT 
	e.id, -- 员工工资
	e.ename, -- 员工姓名
	e.salary -- 员工薪水
FROM
	emp e
;

在这里插入图片描述
与前一个例子一样,这条语句使用SELECT语句从表emp中选择数据。在这个例子中,指定了3个列名,猎命之间用逗号分隔。

4.4检索所有列

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

SELECT 
	*
FROM
	emp e
;

在这里插入图片描述

如果给定一个通配符,则返回表中所有的列。猎德顺序一般是列在表定义定义中出现的顺序。但有时候并不是这样的,标的模式的变化(如添加或者删除列)可能会导致顺序的变化。一般,除非你确实需要表中的每个列,否则最好别使用,虽然使用通配符很省事,但检索不需要的列会降低检索和应用程序的性能;**

4.5检索不同的行

正如所见,SELECT返回所有匹配的行,但是如果你不想要每个值重复出现怎么办?例如,你想要得出emp表中所有job_id

SELECT 
	e.`job_id`
FROM
	emp e
;

在这里插入图片描述

很烦人的一点就是你看到了重复的数据,那么如何检索出有不同值的列表呢?
解决办法是是哦娘DISTINCT关键字,顾名思义,此关键字指示MySQL只返回不同的值。

SELECT 
	DISTINCT e.`job_id`
FROM
	emp e
;

在这里插入图片描述

这条语句告诉MySQL只返回不同的job_id,因此只返回了4行,如下面的输出所示。如果使用DISTINCT关键字,你必须把他放在列名的前面。

4.6限制结果

实际开发中表的record(行)数目成千上万,很多时候不需要全SELECT出来,为了返回指定的几行,可以使用LIMIT子句,下面举一个例子:

SELECT 
	 e.`ename`
FROM
	emp e
LIMIT 5
;

在这里插入图片描述
此语句使用SELECT检索单个列。LIMIT 5指定MySQL返回不多于5行
为了得出下一个5行,可以指定要检索的开始行和行数,注意从0号行开始

SELECT 
	 e.`ename`
FROM
	emp e
LIMIT 4,3
;

在这里插入图片描述
指定从4号行开始检索3行。
这里要注意一点:可以有一种替代写法: LIMIT 4 OFFSET 3表示从三号行开始取4行,等价于LIMIT 3,4

4.7使用完全限定的表名字

迄今为止使用的SQL例子只是通过列名应用列,可能会使用完全限定的名字来应用列。比如:

SELECT 
	 emp.`ename`
FROM
	emp
;

在这里插入图片描述

这条SQL语句在功能上等于不写完全限定表名的语句,但这里指定了一个完全限定的列名。
表名也可以有一个数据库的完全限定。

SELECT 
	 emp.`ename`
FROM
	test.`emp`
;

效果与上面一样,但要会这种用法,应为后面有虚拟表,要在子查询里面使用虚拟表,最好给虚拟表起一个小名,然后使用这个小名.COLUMNS来使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值