欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL之select、distinct、limit的使用

 更新時(shí)間:2021年11月10日 14:18:23   作者:李子捌  
這篇文章主要介紹了MySQL之select、distinct、limit的使用,下面文章圍繞select、distinct、limit的相關(guān)資料展開聚集內(nèi)容,需要的朋友可以參考一下

1、簡介

這篇博客將會(huì)非?;A(chǔ),如果有MySQL經(jīng)驗(yàn)的可以跳過,寫這篇博客的原因是給初學(xué)者看的。下面將會(huì)講解如何使用select查看指定表的單個(gè)列、多個(gè)列以及全部列。

首先準(zhǔn)備一張表,表結(jié)構(gòu)如下所示:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `name` varchar(255) NOT NULL COMMENT '用戶名',
  `age` int(11) NOT NULL COMMENT '年齡',
  `sex` smallint(6) NOT NULL COMMENT '性別',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

表數(shù)據(jù)如下所示:

INSERT INTO `user` VALUES (1, '李子捌', 18, 1);
INSERT INTO `user` VALUES (2, '張三', 22, 1);
INSERT INTO `user` VALUES (3, '李四', 38, 1);
INSERT INTO `user` VALUES (4, '王五', 25, 1);
INSERT INTO `user` VALUES (5, '六麻子', 13, 0);
INSERT INTO `user` VALUES (6, '田七', 37, 1);

SET FOREIGN_KEY_CHECKS = 1;

注意在MySQL4.1之后,數(shù)據(jù)庫關(guān)鍵字是完全不區(qū)分大小寫;數(shù)據(jù)庫名、表名、列名默認(rèn)不區(qū)分大小寫,但是可以修改(不建議修改)。

2、select

2.1 查詢單個(gè)列

首先使用use指定需要操作的數(shù)據(jù)庫。

mysql> use liziba;
Database changed

接著使用selectuser表中查詢name列,select緊跟著列名稱,from后面緊跟著表名稱。

select column_name from table_name;

mysql> select name from user;
+--------+
| name   |
+--------+
| 李子捌 |
| 張三   |
| 李四   |
| 王五   |
| 六麻子 |
| 田七   |
+--------+
6 rows in set (0.00 sec)

2.2 查詢多個(gè)列

查詢多個(gè)列和單個(gè)列的區(qū)別在于,select后面緊跟多個(gè)列名,用英文逗號分割即可。

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 查詢所有列

查詢所有列有兩種方式,第一種是上面兩種推導(dǎo)出的方式,列出所有的列名。

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)

提示:是程序員使用的大忌, 如果我們不需要獲取表的所有列且表的列名是移植的,就不應(yīng)該使用查詢?nèi)繑?shù)據(jù),而是應(yīng)該指定數(shù)據(jù)庫列查詢,這樣可以提升查詢的性能。

3、distinct

如果需要查詢列值不重復(fù)的數(shù)據(jù),可以使用distinct關(guān)鍵字去重。

我們在上面的表中插入一條新的數(shù)據(jù),數(shù)據(jù)age和李子捌相等,sex也相同。

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

此時(shí)可以看到年齡列有相等的值

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)

此時(shí)我們想獲取user表中的用戶有哪些年齡。我們可以使用distinct關(guān)鍵字,應(yīng)用于需要去重的列前面。

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

這里有一個(gè)問題需要注意, distinct關(guān)鍵字去重會(huì)作用于所有的字段,如果distinct關(guān)鍵字后面跟了多個(gè)字段,那么多個(gè)字段的值都不相等才算不重復(fù)。

比如說user表中不存在age,name同時(shí)都不重復(fù)的數(shù)據(jù),此時(shí)distinct關(guān)鍵字并不是沒生效,而是本身就不存在。

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


如果distinct關(guān)鍵字后跟的字段值都不相等,那么distinct關(guān)鍵字仍然能去重。比如李子捌和謝禮的年齡和性別均相等,此時(shí)distinct關(guān)鍵字會(huì)過濾一條數(shù)據(jù)。

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

前面的查詢會(huì)返回滿足條件的所有記錄,如果我們只需要指定數(shù)量的記錄,可以使用limit關(guān)鍵字限制返回的行;這種場景多用于數(shù)據(jù)分頁。

limit的取值需大于等于0的整數(shù) ,如果傳入負(fù)數(shù)和小數(shù)會(huì)報(bào)錯(cuò)。

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給定的值大于表的行記錄值,那么將會(huì)返回所有數(shù)據(jù)。比如我們通過select count(1)查詢user表的記錄數(shù)值,一共7條數(shù)據(jù),此時(shí)我們傳入8,并不會(huì)報(bào)錯(cuò),MySQL將會(huì)放回user表中的所有數(shù)據(jù)。

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可以跟兩個(gè)參數(shù)分別表示起始值和結(jié)束值,閉區(qū)間(包含起始值和結(jié)束值)。如果跟一個(gè)參數(shù),則表示結(jié)束值,起始值默認(rèn)為0。 注意MySQL數(shù)據(jù)的索引起始值為0。

limit 2 , 4表示查詢第三條數(shù)據(jù)到第五條數(shù)據(jù),其行號為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)

到此這篇關(guān)于MySQL之select、distinct、limit的使用的文章就介紹到這了,更多相關(guān)MySQL之select、distinct、limit使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql創(chuàng)建Bitmap_Join_Indexes中的約束與索引

    mysql創(chuàng)建Bitmap_Join_Indexes中的約束與索引

    現(xiàn)象:創(chuàng)建Bitmap Join Indexes時(shí)出現(xiàn)ORA-25954報(bào)錯(cuò): 維的主鍵或唯一約束條件缺失。 53vi.Com 原因:受到約束與索引的影響。
    2008-04-04
  • MySQL DATE_ADD和ADDDATE函數(shù)實(shí)現(xiàn)向日期添加指定時(shí)間間隔

    MySQL DATE_ADD和ADDDATE函數(shù)實(shí)現(xiàn)向日期添加指定時(shí)間間隔

    這篇文章主要介紹了MySQL DATE_ADD和ADDDATE函數(shù)實(shí)現(xiàn)向日期添加指定時(shí)間間隔,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 有關(guān)mysql的一些小技巧

    有關(guān)mysql的一些小技巧

    有關(guān)mysql的一些小技巧,有需要的朋友可以參考下
    2013-02-02
  • Windows下mysql修改root密碼的4種方法

    Windows下mysql修改root密碼的4種方法

    這篇文章主要為大家詳細(xì)介紹了windows下mysql修改root密碼的4種方法,大家可以根據(jù)的自己的實(shí)際情況進(jìn)行選擇,感興趣的小伙伴們可以參考一下
    2016-05-05
  • MYSQL?Binlog恢復(fù)誤刪數(shù)據(jù)庫詳解

    MYSQL?Binlog恢復(fù)誤刪數(shù)據(jù)庫詳解

    MySQL一旦誤刪數(shù)據(jù)庫之后恢復(fù)數(shù)據(jù)很麻煩,這里記錄一下艱辛的恢復(fù)過程,這篇文章主要給大家介紹了關(guān)于如何利用MySQL的binlog恢復(fù)誤刪數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • MySQL導(dǎo)出sql腳本文件操作指南

    MySQL導(dǎo)出sql腳本文件操作指南

    mysql數(shù)據(jù)庫是非常常用的一種數(shù)據(jù)庫,屬于中小型數(shù)據(jù)庫,常用于網(wǎng)站業(yè)務(wù)和一些WEB系統(tǒng)業(yè)務(wù),下面這篇文章主要給大家介紹了關(guān)于MySQL導(dǎo)出sql腳本文件操作的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • MySQL數(shù)據(jù)同步到Doris的四種方式

    MySQL數(shù)據(jù)同步到Doris的四種方式

    這篇文章給大家介紹了MySQL數(shù)據(jù)同步到Doris的四種方式,CSV文件方式,JDBC 編碼方式,JDBC Catalog 方式和Binlog Load 方式,并通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • mysql批量插入BulkCopy的實(shí)現(xiàn)

    mysql批量插入BulkCopy的實(shí)現(xiàn)

    本文主要介紹了mysql批量插入BulkCopy的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • MySQL?8.0.35數(shù)據(jù)庫下載安裝以及環(huán)境變量的配置方法

    MySQL?8.0.35數(shù)據(jù)庫下載安裝以及環(huán)境變量的配置方法

    很多朋友剛開始接觸mysql數(shù)據(jù)庫服務(wù)器,這篇文章主要給大家介紹了關(guān)于MySQL?8.0.35數(shù)據(jù)庫下載安裝以及環(huán)境變量的配置方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 提升MYSQL查詢效率的10個(gè)SQL語句優(yōu)化技巧

    提升MYSQL查詢效率的10個(gè)SQL語句優(yōu)化技巧

    MySQL數(shù)據(jù)庫執(zhí)行效率對程序的執(zhí)行速度有很大的影響,有效的處理優(yōu)化數(shù)據(jù)庫是非常有用的。尤其是大量數(shù)據(jù)需要處理的時(shí)候
    2018-03-03

最新評論