怎么使用MySQL中的select、distinct、limit

技术怎么使用MySQL中的select、distinct、limit这篇文章主要讲解了“怎么使用MySQL中的select、distinct、limit”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路

本文主要说明如何在MySQL中使用select、distinct和limit。本文的解释简单明了,易学易懂。现在请跟随边肖的思路,一起学习和学习如何在MySQL中使用select、distinct和limit!

1、简介

这个博客会很基础。如果你有MySQL的经验,可以跳过。写这个博客的原因是为了初学者。下面将解释如何使用select查看指定表的单列、多列和所有列。

首先准备一张表,表结构如下所示:

SETNAMESutf8mb4

SETFOREIGN _ KEY _ CHECKS=0;

-

-用户的表结构

-

DROPTABLEIFEXISTS`user `;

CREATETABLE`user `(

` id`bigint (20)不为null auto _ incremental注释'主键',

` name`varchar (255)非空注释'用户名',

年龄` int(11)NOTNULLCOMMENT '年龄',

` sex`smallish (6)非空注释' gender ',

PRIMARYKEY(`id `)

)ENGINE=innodabout _ INCREMENT=7DEFAULTCHARSET=utf8;表数据如下所示:

INSERTINTO`user`VALUES(1,' plum ',18,1);

INSERTINTO`user`VALUES(2,'张三',22,1);

INSERTINTO`user`VALUES(3,'李四',38,1);

插入“用户”值(4,‘王五’,25,1);

INSERTINTO`user`VALUES(5,'六麻子',13,0);

INSERTINTO`user`VALUES(6,'天齐',37,1);

SETFOREIGN _ KEY _ CHECKS=1;注意,在MySQL4.1之后,数据库关键字完全不区分大小写;默认情况下,数据库名、表名和列名不区分大小写,但可以修改(不建议修改)。

00-1010

2、select

首先使用指定要操作的数据库。

mysqluseliziba

Databasechanged然后使用select查询用户表中的name列,然后是列名,最后是来自的表名。

select column _ name from table _ name;

mysqlselectnamefromuser

-

+
| name   |
+--------+
| 李子捌 |
| 张三   |
| 李四   |
| 王五   |
| 六麻子 |
| 田七   |
+--------+
6 rows in set (0.00 sec)

2.2 查询多个列

查询多个列和单个列的区别在于,select后面紧跟多个列名,用英文逗号分割即可。

select column_name1,column_name2,column_name3 from table_name;

mysql> select name,age from user;
+--------+-----+
| name   | age |
+--------+-----+
| 李子捌 |  18 |
| 张三   |  22 |
| 李四   |  38 |
| 王五   |  25 |
| 六麻子 |  13 |
| 田七   |  37 |
+--------+-----+
6 rows in set (0.00 sec)

2.3 查询所有列

查询所有列有两种方式,第一种是上面两种推导出的方式,列出所有的列名。

mysql> select id,name,age,sex from user;
+----+--------+-----+-----+
| id | name   | age | sex |
+----+--------+-----+-----+
|  1 | 李子捌 |  18 |   1 |
|  2 | 张三   |  22 |   1 |
|  3 | 李四   |  38 |   1 |
|  4 | 王五   |  25 |   1 |
|  5 | 六麻子 |  13 |   0 |
|  6 | 田七   |  37 |   1 |
+----+--------+-----+-----+
6 rows in set (0.00 sec)

第二种,也是部分程序员使用的最多的一句SQL,使用 *** 通配符**代替表的所有列。

select * from table_name;

mysql> select * from user;
+----+--------+-----+-----+
| id | name   | age | sex |
+----+--------+-----+-----+
|  1 | 李子捌 |  18 |   1 |
|  2 | 张三   |  22 |   1 |
|  3 | 李四   |  38 |   1 |
|  4 | 王五   |  25 |   1 |
|  5 | 六麻子 |  13 |   0 |
|  6 | 田七   |  37 |   1 |
+----+--------+-----+-----+
6 rows in set (0.00 sec)

提示:是程序员使用的大忌, 如果我们不需要获取表的所有列且表的列名是移植的,就不应该使用查询全部数据,而是应该指定数据库列查询,这样可以提升查询的性能。

3、distinct

如果需要查询列值不重复的数据,可以使用distinct关键字去重。

我们在上面的表中插入一条新的数据,数据age和李子捌相等,sex也相同。

mysql> insert into user (name, age, sex) values('谢礼', 18, 1);
Query OK, 1 row affected (0.01 sec)

此时可以看到年龄列有相等的值

mysql> select * from user;
+----+--------+-----+-----+
| id | name   | age | sex |
+----+--------+-----+-----+
|  1 | 李子捌 |  18 |   1 |
|  2 | 张三   |  22 |   1 |
|  3 | 李四   |  38 |   1 |
|  4 | 王五   |  25 |   1 |
|  5 | 六麻子 |  13 |   0 |
|  6 | 田七   |  37 |   1 |
|  7 | 谢礼   |  18 |   1 |
+----+--------+-----+-----+
7 rows in set (0.00 sec)

此时我们想获取user表中的用户有哪些年龄。我们可以使用distinct关键字,应用于需要去重的列前面。

mysql> select distinct age from user;
+-----+
| age |
+-----+
|  18 |
|  22 |
|  38 |
|  25 |
|  13 |
|  37 |
+-----+
6 rows in set (0.00 sec)

这里有一个问题需要注意distinct关键字去重会作用于所有的字段,如果distinct关键字后面跟了多个字段,那么多个字段的值都不相等才算不重复。

比如说user表中不存在age,name同时都不重复的数据,此时distinct关键字并不是没生效,而是本身就不存在。

mysql> select distinct age,name from user;
+-----+--------+
| age | name   |
+-----+--------+
|  18 | 李子捌 |
|  22 | 张三   |
|  38 | 李四   |
|  25 | 王五   |
|  13 | 六麻子 |
|  37 | 田七   |
|  18 | 谢礼   |
+-----+--------+
7 rows in set (0.00 sec)

如果distinct关键字后跟的字段值都不相等,那么distinct关键字仍然能去重。比如李子捌和谢礼的年龄和性别均相等,此时distinct关键字会过滤一条数据。

mysql> select distinct age,sex from user;
+-----+-----+
| age | sex |
+-----+-----+
|  18 |   1 |
|  22 |   1 |
|  38 |   1 |
|  25 |   1 |
|  13 |   0 |
|  37 |   1 |
+-----+-----+
6 rows in set (0.00 sec)

4、limit

前面的查询会返回满足条件的所有记录,如果我们只需要指定数量的记录,可以使用limit关键字限制返回的行;这种场景多用于数据分页。

limit的取值需大于等于0的整数 ,如果传入负数和小数会报错。

mysql> select * from user limit 0;
Empty set (0.00 sec)
mysql> select * from user limit 1;
+----+--------+-----+-----+
| id | name   | age | sex |
+----+--------+-----+-----+
|  1 | 李子捌 |  18 |   1 |
+----+--------+-----+-----+
1 row in set (0.00 sec)

如果limit给定的值大于表的行记录值,那么将会返回所有数据。比如我们通过select count(1)查询user表的记录数值,一共7条数据,此时我们传入8,并不会报错,MySQL将会放回user表中的所有数据。

mysql> select count(1) from user;
+----------+
| count(1) |
+----------+
|        7 |
+----------+
1 row in set (0.01 sec)
mysql> select * from user limit 8;
+----+--------+-----+-----+
| id | name   | age | sex |
+----+--------+-----+-----+
|  1 | 李子捌 |  18 |   1 |
|  2 | 张三   |  22 |   1 |
|  3 | 李四   |  38 |   1 |
|  4 | 王五   |  25 |   1 |
|  5 | 六麻子 |  13 |   0 |
|  6 | 田七   |  37 |   1 |
|  7 | 谢礼   |  18 |   1 |
+----+--------+-----+-----+
7 rows in set (0.00 sec)

limit可以跟两个参数分别表示起始值和结束值,闭区间(包含起始值和结束值)。如果跟一个参数,则表示结束值,起始值默认为0。 注意MySQL数据的索引起始值为0。

limit 2 , 4表示查询第三条数据到第五条数据,其行号为2到4。

mysql> select * from user limit 2, 4;
+----+--------+-----+-----+
| id | name   | age | sex |
+----+--------+-----+-----+
|  3 | 李四   |  38 |   1 |
|  4 | 王五   |  25 |   1 |
|  5 | 六麻子 |  13 |   0 |
|  6 | 田七   |  37 |   1 |
+----+--------+-----+-----+
4 rows in set (0.00 sec)

感谢各位的阅读,以上就是“怎么使用MySQL中的select、distinct、limit”的内容了,经过本文的学习后,相信大家对怎么使用MySQL中的select、distinct、limit这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/80632.html

(0)

相关推荐

  • Linux安装heartbeat 3.0集群源码怎么写

    技术Linux安装heartbeat 3.0集群源码怎么写Linux安装heartbeat 3.0集群源码怎么写,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题

    攻略 2021年10月22日
  • 质量摩尔浓度公式,溶质溶液浓度计算公式字母

    技术质量摩尔浓度公式,溶质溶液浓度计算公式字母溶液浓度的计算公式有溶液的质量百分比浓度=溶质质量/溶液质量×100%;摩尔浓度(mol/L)=溶质摩尔数/溶液体积(升);当量浓度=溶质的克当量数/溶液体积(升);质量-体

    生活 2021年10月22日
  • yi的汉字,拼音“yi”都有哪些字

    技术yi的汉字,拼音“yi”都有哪些字一 乙 已 义 亿 弋 以 刈 忆 艺 失 仪 台 仡 议 伊 衣 圯 夷 钇 亦 屹 异 医 沂 诒 佁 矣 苡 佚 呓 役 抑 译 邑 依 祎 宜 怡 迤 饴 佾 峄 怿 易 绎

    生活 2021年10月28日
  • mysql中too many files问题open_files_limit值更改无效怎么办

    技术mysql中too many files问题open_files_limit值更改无效怎么办小编给大家分享一下mysql中too many files问题open_files_limit值更改无效怎么办,希望大家阅读

    攻略 2021年11月6日
  • 如何买到便宜机票,怎么样才能买到最便宜的机票

    技术如何买到便宜机票,怎么样才能买到最便宜的机票你可以在自己附近的售票点买票如何买到便宜机票,票大付款是很安全的~ 如果订的是电子客票,你可以让给你出票的地方帮你先占座~然后让他们给你个记录编码。你去信天游这个网站查询编

    生活 2021年10月26日
  • http协议安全性分析总结(http网络通信报文实时解析)

    技术HTTP协议消息头的示例代码这篇文章主要介绍HTTP协议消息头的示例代码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!host=gray-scp-getway.9fbank.com
    x-rea

    攻略 2021年12月14日