MySQL 的 常用语句介绍(重点 SELECT 语句)

MySQL 的 常用语句

1、安装 MySQL

[root@Sybil ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@Sybil ~]# yum install mariadb.server -y
Updated:
  mariadb-server.x86_64 1:5.5.65-1.el7           

Dependency Updated:
  mariadb.x86_64 1:5.5.65-1.el7               mariadb-libs.x86_64 1:5.5.65-1.el7

Complete!
[root@Sybil ~]# systemctl start mariadb
[root@Sybil ~]# ss -tnl
State       Recv-Q Send-Q         Local Address:Port                Peer Address:Port              
LISTEN      0      50                         *:3306                           *:*                  
LISTEN      0      128                        *:22                             *:*                  
LISTEN      0      100                127.0.0.1:25                             *:*                  
LISTEN      0      128                       :::22                            :::*                  
LISTEN      0      100                      ::1:25                            :::*                  

2、登陆 MySQL,创建数据库 和 表

# 登陆 MySQL
[root@Sybil ~]# mysql -uroot -p
Enter password: root

# 查看现有数据
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
5 rows in set (0.01 sec)

# 创建数据库 JIAOLEE_FAMILY
MariaDB [(none)]> CREATE DATABASE JIAOLEE_FAMILY;
Query OK, 1 row affected (0.00 sec)

# 查看现有数据库 JIAOLEE_FAMILY 已经创建成功
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| JIAOLEE_FAMILY     |
| mysql              |
+--------------------+
6 rows in set (0.00 sec)

# 使用数据库 JIAOLEE_FAMILY 
MariaDB [(none)]> USE JIAOLEE_FAMILY;
Database changed

# 创建新表
MariaDB [JIAOLEE_FAMILY]> CREATE TABLE `FAMILY_MEMBERS` (
    -> `ID` int(11) NOT NULL AUTO_INCREMENT ,
    -> `Name` varchar(30) NOT NULL ,
    -> `Age` int(11) DEFAULT NULL ,
    -> `Gender` enum('M', 'F') NOT NULL ,
    -> `Birth_Date` date NOT NULL ,
    -> PRIMARY KEY (`ID`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.04 sec)

# 查看新创建的表
MariaDB [JIAOLEE_FAMILY]> SHOW TABLES;
+--------------------------+
| Tables_in_JIAOLEE_FAMILY |
+--------------------------+
| FAMILY_MEMBERS           |
+--------------------------+
1 row in set (0.00 sec)

# 查看新创建的表的列信息
MariaDB [JIAOLEE_FAMILY]> DESC FAMILY_MEMBERS;
+------------+---------------+------+-----+---------+----------------+
| Field      | Type          | Null | Key | Default | Extra          |
+------------+---------------+------+-----+---------+----------------+
| ID         | int(11)       | NO   | PRI | NULL    | auto_increment |
| Name       | varchar(30)   | NO   |     | NULL    |                |
| Age        | int(11)       | YES  |     | NULL    |                |
| Gender     | enum('M','F') | NO   |     | NULL    |                |
| Birth_Date | date          | NO   |     | NULL    |                |
+------------+---------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

3、在表中添加内容

MariaDB [JIAOLEE_FAMILY]> INSERT INTO FAMILY_MEMBERS (Name, Age, Gender, Birth_Date) VALUES ('Sybil', 1, 'F', '2020-02-02');
Query OK, 1 row affected (0.00 sec)

MariaDB [JIAOLEE_FAMILY]> INSERT INTO FAMILY_MEMBERS (Name, Age, Gender, Birth_Date) VALUES ('Tang', 6, 'F', '2014-05-05');
Query OK, 1 row affected (0.07 sec)

MariaDB [JIAOLEE_FAMILY]> INSERT INTO FAMILY_MEMBERS (Name, Age, Gender, Birth_Date) VALUES ('Tang', 6, 'F', '2014-05-05');
Query OK, 1 row affected (0.01 sec)

MariaDB [JIAOLEE_FAMILY]> INSERT INTO FAMILY_MEMBERS (Name, Age, Gender, Birth_Date) VALUES ('Tang', 6, 'F', '2014-05-05');
Query OK, 1 row affected (0.01 sec)

4、查看表中内容

  • 注意:在庞大的数据库中进行表内容查看时,一定要带 WHERE 条件,不然查询数据过于庞大,会对服务器造成较大压力。
# 查看数据库表中的所有内容, FROM 后面跟 表 的名称
MariaDB [JIAOLEE_FAMILY]> SELECT * FROM FAMILY_MEMBERS;
+----+--------+------+--------+------------+
| ID | Name   | Age  | Gender | Birth_Date |
+----+--------+------+--------+------------+
|  1 | Jiao   |   31 | M      | 1989-10-01 |
|  2 | Lee    |   18 | F      | 1999-10-01 |
|  3 | Tang   |    6 | F      | 2014-05-05 |
|  5 | Neo    |    6 | M      | 2014-10-01 |
|  6 | Sybil  |    1 | F      | 2020-02-02 |
|  7 | Luna   |    1 | F      | 2020-10-01 |
|  8 | Pang   |    1 | F      | 2020-10-01 |
|  9 | Fufu   |   65 | M      | 1955-06-06 |
| 10 | Lanlan |   55 | F      | 1965-06-06 |
| 11 | Huahua |   55 | F      | 1962-10-12 |
| 12 | Jinjin |   55 | M      | 1963-10-12 |
| 13 | Sybil  |    1 | F      | 2020-02-02 |
| 14 | Sybil  |    1 | F      | 2020-02-02 |
| 15 | Sybil  |    1 | F      | 2020-02-02 |
| 16 | Tang   |    6 | F      | 2014-05-05 |
| 17 | Tang   |    6 | F      | 2014-05-05 |
| 18 | Tang   |    6 | F      | 2014-05-05 |
+----+--------+------+--------+------------+
17 rows in set (0.00 sec)

4、SELECT 语句

  • 1、 列名称 要使用 反引号(TAB键上面的符号) 进行标注
  • 2、表中的 列内容 用 单引号 或者 双引号 进行标注

4.1 查询 Name 列为 Tang 的所有行信息

MariaDB [JIAOLEE_FAMILY]> SELECT * FROM FAMILY_MEMBERS WHERE `Name` = 'Tang';
+----+------+------+--------+------------+
| ID | Name | Age  | Gender | Birth_Date |
+----+------+------+--------+------------+
|  3 | Tang |    6 | F      | 2014-05-05 |
| 16 | Tang |    6 | F      | 2014-05-05 |
| 17 | Tang |    6 | F      | 2014-05-05 |
| 18 | Tang |    6 | F      | 2014-05-05 |
+----+------+------+--------+------------+
4 rows in set (0.01 sec)

4.2 查询 Name 列为 Tang 的所有行信息(列信息只显示 ID 、Name 和 Age)

MariaDB [JIAOLEE_FAMILY]> SELECT `ID`, `Name`, `Age` FROM FAMILY_MEMBERS WHERE `Name` = 'Tang';
+----+------+------+
| ID | Name | Age  |
+----+------+------+
|  3 | Tang |    6 |
| 16 | Tang |    6 |
| 17 | Tang |    6 |
| 18 | Tang |    6 |
+----+------+------+
4 rows in set (0.00 sec)

4.3 查询 Name 列为 Tang 的所有行信息,使用 DISTINCT 可使结果去重(列信息只显示 Name 和 Age,完全一样的行结果才会去重)

MariaDB [JIAOLEE_FAMILY]> SELECT `Name`, `Age` FROM FAMILY_MEMBERS WHERE `Name` = 'Tang';
+------+------+
| Name | Age  |
+------+------+
| Tang |    6 |
| Tang |    6 |
| Tang |    6 |
| Tang |    6 |
+------+------+
4 rows in set (0.00 sec)

MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `Name`, `Age` FROM FAMILY_MEMBERS WHERE `Name` = 'Tang';
+------+------+
| Name | Age  |
+------+------+
| Tang |    6 |
+------+------+
1 row in set (0.00 sec)
# 虽然使用了去重,但是 ID 不一样,所以结果还是会显示所有
MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `ID`, `Name`, `Age` FROM FAMILY_MEMBERS WHERE `Name` = 'Tang';
+----+------+------+
| ID | Name | Age  |
+----+------+------+
|  3 | Tang |    6 |
| 16 | Tang |    6 |
| 17 | Tang |    6 |
| 18 | Tang |    6 |
+----+------+------+
4 rows in set (0.00 sec)

4.4 查询 Gender 列为 F 的所有行信息,结果需要去重

MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT * FROM FAMILY_MEMBERS WHERE `Gender` = 'F';
+----+--------+------+--------+------------+
| ID | Name   | Age  | Gender | Birth_Date |
+----+--------+------+--------+------------+
|  2 | Lee    |   18 | F      | 1999-10-01 |
|  3 | Tang   |    6 | F      | 2014-05-05 |
|  6 | Sybil  |    1 | F      | 2020-02-02 |
|  7 | Luna   |    1 | F      | 2020-10-01 |
|  8 | Pang   |    1 | F      | 2020-10-01 |
| 10 | Lanlan |   55 | F      | 1965-06-06 |
| 11 | Huahua |   55 | F      | 1962-10-12 |
| 13 | Sybil  |    1 | F      | 2020-02-02 |
| 14 | Sybil  |    1 | F      | 2020-02-02 |
| 15 | Sybil  |    1 | F      | 2020-02-02 |
| 16 | Tang   |    6 | F      | 2014-05-05 |
| 17 | Tang   |    6 | F      | 2014-05-05 |
| 18 | Tang   |    6 | F      | 2014-05-05 |
+----+--------+------+--------+------------+
13 rows in set (0.00 sec)

4.5 查询 Gender 列为 F 的所有行信息,结果需要去重,结果只需显示 Name 列 和 Gender 列

MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `Name`, `Gender`  FROM FAMILY_MEMBERS WHERE `Gender` = 'F';
+--------+--------+
| Name   | Gender |
+--------+--------+
| Lee    | F      |
| Tang   | F      |
| Sybil  | F      |
| Luna   | F      |
| Pang   | F      |
| Lanlan | F      |
| Huahua | F      |
+--------+--------+
7 rows in set (0.00 sec)

4.6 查询 Gender 列为 F 的所有行信息,结果需要去重并按 Name 列进行排序,结果只需显示 Name 列 和 Gender 列(排序使用 ORDER BY,升序 ASC ,降序 DESC)

MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `Name`, `Gender`
    -> FROM FAMILY_MEMBERS
    -> WHERE `Gender` = 'F'
    -> ORDER BY `Name` ASC;
+--------+--------+
| Name   | Gender |
+--------+--------+
| Huahua | F      |
| Lanlan | F      |
| Lee    | F      |
| Luna   | F      |
| Pang   | F      |
| Sybil  | F      |
| Tang   | F      |
+--------+--------+
7 rows in set (0.00 sec)

4.7 查询 Birth_Date 为 2000 年以后的且 Gender 为 F 的所有行信息,结果去重,并按照 Birth_Date 进行降序排序

MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT *  
    -> FROM FAMILY_MEMBERS
    -> WHERE `Birth_Date` BETWEEN '2000-01-01' AND '2020-12-31' AND `Gender` = 'F'
    -> ORDER BY `Birth_Date` DESC;
+----+-------+------+--------+------------+
| ID | Name  | Age  | Gender | Birth_Date |
+----+-------+------+--------+------------+
|  7 | Luna  |    1 | F      | 2020-10-01 |
|  8 | Pang  |    1 | F      | 2020-10-01 |
| 14 | Sybil |    1 | F      | 2020-02-02 |
|  6 | Sybil |    1 | F      | 2020-02-02 |
| 13 | Sybil |    1 | F      | 2020-02-02 |
| 15 | Sybil |    1 | F      | 2020-02-02 |
| 17 | Tang  |    6 | F      | 2014-05-05 |
| 16 | Tang  |    6 | F      | 2014-05-05 |
|  3 | Tang  |    6 | F      | 2014-05-05 |
| 18 | Tang  |    6 | F      | 2014-05-05 |
+----+-------+------+--------+------------+
10 rows in set (0.00 sec)

4.8 查询 Birth_Date 为 2000 年以后的且 Gender 为 F 的所有行,结果只显示 Name 、Age 和 Birth_Date,且结果需要去重,并按照 Birth_Date 进行降序排序

MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `Name`, `Age`, `Birth_Date`
    -> FROM FAMILY_MEMBERS
    -> WHERE `Birth_Date` BETWEEN '2000-01-01' AND '2020-12-31' AND `Gender` = 'F'
    -> ORDER BY `Birth_Date` DESC;
+-------+------+------------+
| Name  | Age  | Birth_Date |
+-------+------+------------+
| Luna  |    1 | 2020-10-01 |
| Pang  |    1 | 2020-10-01 |
| Sybil |    1 | 2020-02-02 |
| Tang  |    6 | 2014-05-05 |
+-------+------+------------+
4 rows in set (0.00 sec)

4.9 查询 Birth_Date 为 2000 年以后的且 Gender 为 F 的所有行,结果只显示 ID 、Name 、Age 和 Birth_Date,且结果需要去重,并按照 Birth_Date 进行降序排序

MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `ID`, `Name`, `Age`, `Birth_Date`
    -> FROM FAMILY_MEMBERS
    -> WHERE `Birth_Date` BETWEEN '2000-01-01' AND '2020-12-31' AND `Gender` = 'F'
    -> ORDER BY `Birth_Date` DESC;
+----+-------+------+------------+
| ID | Name  | Age  | Birth_Date |
+----+-------+------+------------+
|  7 | Luna  |    1 | 2020-10-01 |
|  8 | Pang  |    1 | 2020-10-01 |
| 14 | Sybil |    1 | 2020-02-02 |
|  6 | Sybil |    1 | 2020-02-02 |
| 13 | Sybil |    1 | 2020-02-02 |
| 15 | Sybil |    1 | 2020-02-02 |
| 17 | Tang  |    6 | 2014-05-05 |
| 16 | Tang  |    6 | 2014-05-05 |
|  3 | Tang  |    6 | 2014-05-05 |
| 18 | Tang  |    6 | 2014-05-05 |
+----+-------+------+------------+
10 rows in set (0.00 sec)

4.10 查询 Birth_Date 为 2000 年以后的且 Gender 为 F 的所有行,结果只显示 ID 、Name 、Age 和 Birth_Date,且结果需要去重,并按照 Birth_Date 进行降序排序,只显示前两行

  • LIMIT N == >> LIMIT 后只有一个 数字 时,表示只显示 前N行
MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `ID`, `Name`, `Age`, `Birth_Date`
    -> FROM FAMILY_MEMBERS
    -> WHERE `Birth_Date` BETWEEN '2000-01-01' AND '2020-12-31' AND `Gender` = 'F'
    -> ORDER BY `Birth_Date` DESC
    -> LIMIT 2;
+----+------+------+------------+
| ID | Name | Age  | Birth_Date |
+----+------+------+------------+
|  7 | Luna |    1 | 2020-10-01 |
|  8 | Pang |    1 | 2020-10-01 |
+----+------+------+------------+
2 rows in set (0.00 sec)

4.11 查询 Birth_Date 为 2000 年以后的且 Gender 为 F 的所有行,结果只显示 ID 、Name 、Age 和 Birth_Date,且结果需要去重,并按照 Birth_Date 进行降序排序,只显示第3行和第4行

  • LIMIT M, N == >> LIMIT 后有两个 数字 时,表示只显示 从 M+1 行 后 的 N 行
MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `ID`, `Name`, `Age`, `Birth_Date`
    -> FROM FAMILY_MEMBERS
    -> WHERE `Birth_Date` BETWEEN '2000-01-01' AND '2020-12-31' AND `Gender` = 'F'
    -> ORDER BY `Birth_Date` DESC
    -> LIMIT 22;
+----+-------+------+------------+
| ID | Name  | Age  | Birth_Date |
+----+-------+------+------------+
| 14 | Sybil |    1 | 2020-02-02 |
|  6 | Sybil |    1 | 2020-02-02 |
+----+-------+------+------------+
2 rows in set (0.00 sec)

4.12 查询 Birth_Date 为 2000 年以后的且 Gender 为 F 的所有行,结果只显示 ID 、Name 、Age 和 Birth_Date,且结果需要去重,并按照 Birth_Date 进行降序排序,只显示第5行和第6行

  • LIMIT M, N == >> LIMIT 后有两个 数字 时,表示只显示 从 M+1 行 后 的 N 行
MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `ID`, `Name`, `Age`, `Birth_Date`
    -> FROM FAMILY_MEMBERS
    -> WHERE `Birth_Date` BETWEEN '2000-01-01' AND '2020-12-31' AND `Gender` = 'F'
    -> ORDER BY `Birth_Date` DESC
    -> LIMIT 42;
+----+-------+------+------------+
| ID | Name  | Age  | Birth_Date |
+----+-------+------+------------+
| 13 | Sybil |    1 | 2020-02-02 |
| 15 | Sybil |    1 | 2020-02-02 |
+----+-------+------+------------+
2 rows in set (0.00 sec)

4.13 查询 Birth_Date 为 2000 年以后的且 Gender 为 F 的所有行,结果只显示 ID 、Name 、Age 和 Birth_Date,且结果需要去重,并按照 Birth_Date 进行降序排序,只显示第5行到第8行

  • LIMIT M, N == >> LIMIT 后有两个 数字 时,表示只显示 从 M+1 行 后 的 N 行
MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `ID`, `Name`, `Age`, `Birth_Date`
    -> FROM FAMILY_MEMBERS
    -> WHERE `Birth_Date` BETWEEN '2000-01-01' AND '2020-12-31' AND `Gender` = 'F'
    -> ORDER BY `Birth_Date` DESC
    -> LIMIT 44;
+----+-------+------+------------+
| ID | Name  | Age  | Birth_Date |
+----+-------+------+------------+
| 13 | Sybil |    1 | 2020-02-02 |
| 15 | Sybil |    1 | 2020-02-02 |
| 17 | Tang  |    6 | 2014-05-05 |
| 16 | Tang  |    6 | 2014-05-05 |
+----+-------+------+------------+
4 rows in set (0.00 sec)

4.14 查询 Birth_Date 为 2000 年以后的且 Gender 为 F 的所有行,结果只显示 ID 、Name 、Age 和 Birth_Date,且结果需要去重,并按照 Birth_Date 进行降序排序,只显示前两行

  • LIMIT M OFFSET N == >> 从 第 N 行 开始,只显示 M 行
MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `ID`, `Name`, `Age`, `Birth_Date`
    -> FROM FAMILY_MEMBERS
    -> WHERE `Birth_Date` BETWEEN '2000-01-01' AND '2020-12-31' AND `Gender` = 'F'
    -> ORDER BY `Birth_Date` DESC
    -> LIMIT 2 OFFSET 0;
+----+------+------+------------+
| ID | Name | Age  | Birth_Date |
+----+------+------+------------+
|  7 | Luna |    1 | 2020-10-01 |
|  8 | Pang |    1 | 2020-10-01 |
+----+------+------+------------+
2 rows in set (0.00 sec)

4.15 查询 Birth_Date 为 2000 年以后的且 Gender 为 F 的所有行,结果只显示 ID 、Name 、Age 和 Birth_Date,且结果需要去重,并按照 Birth_Date 进行降序排序,只显示前四行

  • LIMIT M OFFSET N == >> 从 第 N 行 开始,只显示 M 行
MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `ID`, `Name`, `Age`, `Birth_Date`
    -> FROM FAMILY_MEMBERS
    -> WHERE `Birth_Date` BETWEEN '2000-01-01' AND '2020-12-31' AND `Gender` = 'F'
    -> ORDER BY `Birth_Date` DESC
    -> LIMIT 4 OFFSET 0;
+----+-------+------+------------+
| ID | Name  | Age  | Birth_Date |
+----+-------+------+------------+
|  7 | Luna  |    1 | 2020-10-01 |
|  8 | Pang  |    1 | 2020-10-01 |
| 14 | Sybil |    1 | 2020-02-02 |
|  6 | Sybil |    1 | 2020-02-02 |
+----+-------+------+------------+
4 rows in set (0.00 sec)

4.16 查询 Birth_Date 为 2000 年以后的且 Gender 为 F 的所有行,结果只显示 ID 、Name 、Age 和 Birth_Date,且结果需要去重,并按照 Birth_Date 进行降序排序,只显示第五行到第八行(显示第二个的四行内容)

  • LIMIT M OFFSET N == >> 从 第 N 行 开始,只显示 M 行
MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `ID`, `Name`, `Age`, `Birth_Date`
    -> FROM FAMILY_MEMBERS
    -> WHERE `Birth_Date` BETWEEN '2000-01-01' AND '2020-12-31' AND `Gender` = 'F'
    -> ORDER BY `Birth_Date` DESC
    -> LIMIT 4 OFFSET 4;
+----+-------+------+------------+
| ID | Name  | Age  | Birth_Date |
+----+-------+------+------------+
| 13 | Sybil |    1 | 2020-02-02 |
| 15 | Sybil |    1 | 2020-02-02 |
| 17 | Tang  |    6 | 2014-05-05 |
| 16 | Tang  |    6 | 2014-05-05 |
+----+-------+------+------------+
4 rows in set (0.00 sec)

4.17 查询 Birth_Date 为 2014-05-05 和 2020-02-02,结果只显示 ID 、Name 、Age 和 Birth_Date,且结果需要去重,并按照 Birth_Date 进行降序排序,只显示前五行

MariaDB [JIAOLEE_FAMILY]> SELECT DISTINCT `ID`, `Name`, `Age`, `Birth_Date`
    -> FROM FAMILY_MEMBERS
    -> WHERE `Birth_Date` IN ('2020-02-02', '2014-05-05')
    -> ORDER BY `Birth_Date` DESC
    -> LIMIT 5 OFFSET 0;
+----+-------+------+------------+
| ID | Name  | Age  | Birth_Date |
+----+-------+------+------------+
|  6 | Sybil |    1 | 2020-02-02 |
| 13 | Sybil |    1 | 2020-02-02 |
| 14 | Sybil |    1 | 2020-02-02 |
| 15 | Sybil |    1 | 2020-02-02 |
|  3 | Tang  |    6 | 2014-05-05 |
+----+-------+------+------------+
5 rows in set (0.00 sec)

4.18 查询 表 中的所有 Gender 为 F 的行,并计算其 行数、平均年龄、最大年龄和最小年龄

MariaDB [JIAOLEE_FAMILY]> SELECT * FROM FAMILY_MEMBERS WHERE `Gender` = 'F';
+----+--------+------+--------+------------+
| ID | Name   | Age  | Gender | Birth_Date |
+----+--------+------+--------+------------+
|  2 | Lee    |   18 | F      | 1999-10-01 |
|  3 | Tang   |    6 | F      | 2014-05-05 |
|  6 | Sybil  |    1 | F      | 2020-02-02 |
|  7 | Luna   |    1 | F      | 2020-10-01 |
|  8 | Pang   |    1 | F      | 2020-10-01 |
| 10 | Lanlan |   55 | F      | 1965-06-06 |
| 11 | Huahua |   55 | F      | 1962-10-12 |
| 13 | Sybil  |    1 | F      | 2020-02-02 |
| 14 | Sybil  |    1 | F      | 2020-02-02 |
| 15 | Sybil  |    1 | F      | 2020-02-02 |
| 16 | Tang   |    6 | F      | 2014-05-05 |
| 17 | Tang   |    6 | F      | 2014-05-05 |
| 18 | Tang   |    6 | F      | 2014-05-05 |
+----+--------+------+--------+------------+
13 rows in set (0.00 sec)

MariaDB [JIAOLEE_FAMILY]> SELECT COUNT(*), AVG(`Age`), MAX(`Age`), MIN(`Age`)
    -> FROM FAMILY_MEMBERS
    -> WHERE `Gender` = 'F';
+----------+------------+------------+------------+
| COUNT(*) | AVG(`Age`) | MAX(`Age`) | MIN(`Age`) |
+----------+------------+------------+------------+
|       13 |    12.1538 |         55 |          1 |
+----------+------------+------------+------------+
1 row in set (0.00 sec)

4.19 SELECT 子查询语句

4.19.1 查询 表 中的所有 Gender 为 F 的行,且按照 Birth_Date 进行降序排序,显示前 10 行

MariaDB [JIAOLEE_FAMILY]> SELECT * 
    -> FROM FAMILY_MEMBERS
    -> WHERE `Gender` = 'F'
    -> ORDER BY `Birth_Date` DESC
    -> LIMIT 10;
+----+-------+------+--------+------------+
| ID | Name  | Age  | Gender | Birth_Date |
+----+-------+------+--------+------------+
|  7 | Luna  |    1 | F      | 2020-10-01 |
|  8 | Pang  |    1 | F      | 2020-10-01 |
| 15 | Sybil |    1 | F      | 2020-02-02 |
| 14 | Sybil |    1 | F      | 2020-02-02 |
|  6 | Sybil |    1 | F      | 2020-02-02 |
| 13 | Sybil |    1 | F      | 2020-02-02 |
| 16 | Tang  |    6 | F      | 2014-05-05 |
| 17 | Tang  |    6 | F      | 2014-05-05 |
|  3 | Tang  |    6 | F      | 2014-05-05 |
| 18 | Tang  |    6 | F      | 2014-05-05 |
+----+-------+------+--------+------------+
10 rows in set (0.00 sec)

4.19.2 查询 表 中的所有 Gender 为 F 的行,且按照 Birth_Date 进行降序排序,显示前 10 行

MariaDB [JIAOLEE_FAMILY]> SELECT *
    -> FROM FAMILY_MEMBERS
    -> WHERE `ID` IN (
    -> SELECT `ID` FROM FAMILY_MEMBERS WHERE `Gender` = 'F'
    -> )
    -> ORDER BY `Birth_Date` DESC
    -> LIMIT 10;
+----+-------+------+--------+------------+
| ID | Name  | Age  | Gender | Birth_Date |
+----+-------+------+--------+------------+
|  7 | Luna  |    1 | F      | 2020-10-01 |
|  8 | Pang  |    1 | F      | 2020-10-01 |
| 15 | Sybil |    1 | F      | 2020-02-02 |
| 14 | Sybil |    1 | F      | 2020-02-02 |
|  6 | Sybil |    1 | F      | 2020-02-02 |
| 13 | Sybil |    1 | F      | 2020-02-02 |
| 16 | Tang  |    6 | F      | 2014-05-05 |
| 17 | Tang  |    6 | F      | 2014-05-05 |
|  3 | Tang  |    6 | F      | 2014-05-05 |
| 18 | Tang  |    6 | F      | 2014-05-05 |
+----+-------+------+--------+------------+
10 rows in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/weixin_44983653/article/details/106497278
今日推荐