怎么使用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)

相关推荐

  • mysql中索引配置如何优化

    技术mysql中索引配置如何优化这篇文章将为大家详细讲解有关mysql中索引配置如何优化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。2 索引及查询优化索引的类型普通索引:这是

    攻略 2021年12月8日
  • mac初体验-安装MySQL

    技术mac初体验-安装MySQL mac初体验-安装MySQL新的工作环境,统一使用的是mac笔记本,macOS初体验,安装环境第一步。
    安装MySQL
    官网选择合适的版本下载,下载地址:https:/

    礼包 2021年11月14日
  • 20191227甘泞与第六章学习笔记

    技术20191227甘泞与第六章学习笔记 20191227甘泞与第六章学习笔记第6章 信号和信号处理
    6.1信号和中断
    信号:发给进程的请求,将进程从正常执行转移到中断处理。
    中断:是从I/O设备或协处

    礼包 2021年11月14日
  • 污的句子,很乖很奇怪很污很可爱之类的句子

    技术污的句子,很乖很奇怪很污很可爱之类的句子1、他大约有十三、四岁。又黑又胖的小脸上污的句子,嵌着一个尖尖的翘鼻子。长长的头发,好久没理了。浓浓的眉毛下闪着一对大眼睛,乌黑的眼珠挺神气地转来转去。 2、树丛被拨开了,一个

    生活 2021年10月29日
  • 抖音刷评论,抖音刷评论会被限流吗?

    技术抖音刷评论,抖音刷评论会被限流吗?抖音运营目前已经进入了新的发展阶段,抖音用户逐渐多了起来,同时抖音上的管理也越来越严格,小伙伴在刷粉的时候会是担心自己的账号会不会被限流,今天我们就来了解以下抖音刷赞,抖音刷评论。

    测评 2021年11月10日
  • 如何使用Angular JS + Express JS入门搭建网站

    技术如何使用Angular JS + Express JS入门搭建网站这期内容当中小编将会给大家带来有关如何使用Angular JS + Express JS入门搭建网站,文章内容丰富且以专业的角度为大家分析和叙述,阅读

    攻略 2021年10月29日