MySQL数据库——MySQL SELECT:数据表查询语句

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

在 MySQL 中可以使用 SELECT 语句来查询数据。查询数据是指从数据库中根据需求使用不同的查询方式来获取不同的数据是使用频率最高、最重要的操作。

SELECT 的语法格式如下

SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]

其中各条子句的含义如下

  • {*|<字段列名>}包含星号通配符的字段列表表示所要查询字段的名称。
  • <表 1><表 2>…表 1 和表 2 表示查询数据的来源可以是单个或多个。
  • WHERE <表达式>是可选项如果选择该项将限定查询数据必须满足该查询条件。
  • GROUP BY< 字段 >该子句告诉 MySQL 如何显示查询出来的数据并按照指定的字段分组。
  • [ORDER BY< 字段 >]该子句告诉 MySQL 按什么样的顺序显示查询出来的数据可以进行的排序有升序ASC和降序DESC默认情况下是升序。
  • [LIMIT[<offset>]<row count>]该子句告诉 MySQL 每次显示查询出来的数据条数。

下面先介绍一些简单的 SELECT 语句关于 WHERE、GROUP BY、ORDER BY 和 LIMIT 等限制条件后面我们会一一讲解。

查询表中所有字段

查询所有字段是指查询表中所有字段的数据。MySQL 提供了以下 2 种方式查询表中的所有字段。

  • 使用“*”通配符查询所有字段
  • 列出表的所有字段

1使用“*”查询表的所有字段

SELECT 可以使用“*”查找表中所有字段的数据语法格式如下

SELECT * FROM 表名;

使用“*”查询时只能按照数据表中字段的顺序进行排列不能改变字段的排列顺序。

例 1

从 tb_students_info 表中查询所有字段的数据SQL 语句和运行结果如下所示。

mysql> use test_db;
Database changed
mysql> SELECT * FROM tb_students_info;
+----+--------+---------+------+------+--------+------------+
| id | name   | dept_id | age  | sex  | height | login_date |
+----+--------+---------+------+------+--------+------------+
|  1 | Dany   |       1 |   25 | F    |    160 | 2015-09-10 |
|  2 | Green  |       3 |   23 | F    |    158 | 2016-10-22 |
|  3 | Henry  |       2 |   23 | M    |    185 | 2015-05-31 |
|  4 | Jane   |       1 |   22 | F    |    162 | 2016-12-20 |
|  5 | Jim    |       1 |   24 | M    |    175 | 2016-01-15 |
|  6 | John   |       2 |   21 | M    |    172 | 2015-11-11 |
|  7 | Lily   |       6 |   22 | F    |    165 | 2016-02-26 |
|  8 | Susan  |       4 |   23 | F    |    170 | 2015-10-01 |
|  9 | Thomas |       3 |   22 | M    |    178 | 2016-06-07 |
| 10 | Tom    |       4 |   23 | M    |    165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.26 sec)

结果显示使用“*”通配符时将返回所有列数据列按照创建表时的顺序显示。

注意一般情况下除非需要使用表中所有的字段数据否则最好不要使用通配符“*”。虽然使用通配符可以节省输入查询语句的时间但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。使用“*”的优势是当不知道所需列的名称时可以通过“*”获取它们。

2列出表的所有字段

SELECT 关键字后面的字段名为需要查找的字段因此可以将表中所有字段的名称跟在 SELECT 关键字后面。如果忘记了字段名称可以使用 DESC 命令查看表的结构。

有时由于表的字段比较多不一定能记得所有字段的名称因此该方法很不方便不建议使用。

例 2

查询 tb_students_info 表中的所有数据SQL 语句还可以书写如下

SELECT id,name,dept_id,age,sex,height,login_date FROM tb_students_info;

运行结果和例 1 相同。

这种查询方式比较灵活如果需要改变字段显示的顺序只需调整 SELECT 关键字后面的字段列表顺序即可。

虽然列出表的所有字段的方式比较灵活但是查询所有字段时通常使用“*”通配符。使用“*”这种方式比较简单尤其是表中的字段很多的时候这种方式的优势更加明显。当然如果需要改变字段显示的顺序可以选择列出表的所有字段。

查询表中指定的字段

查询表中的某一个字段的语法格式为

SELECT < 列名 > FROM < 表名 >;

例 3

查询 tb_students_info 表中 name 列所有学生的姓名SQL 语句和运行结果如下所示。

mysql> SELECT name FROM tb_students_info;
+--------+
| name   |
+--------+
| Dany   |
| Green  |
| Henry  |
| Jane   |
| Jim    |
| John   |
| Lily   |
| Susan  |
| Thomas |
| Tom    |
+--------+
10 rows in set (0.00 sec)

输出结果显示了 tb_students_info 表中 name 字段下的所有数据。

使用 SELECT 声明可以获取多个字段下的数据只需要在关键字 SELECT 后面指定要查找的字段名称不同字段名称之间用逗号“”分隔开最后一个字段后面不需要加逗号语法格式如下

SELECT <字段名1>,<字段名2>,…,<字段名n> FROM <表名>;

例 4

从 tb_students_info 表中获取 id、name 和 height 三列SQL 语句和运行结果如下所示。

mysql> SELECT id,name,height
    -> FROM tb_students_info;
+----+--------+--------+
| id | name   | height |
+----+--------+--------+
|  1 | Dany   |    160 |
|  2 | Green  |    158 |
|  3 | Henry  |    185 |
|  4 | Jane   |    162 |
|  5 | Jim    |    175 |
|  6 | John   |    172 |
|  7 | Lily   |    165 |
|  8 | Susan  |    170 |
|  9 | Thomas |    178 |
| 10 | Tom    |    165 |
+----+--------+--------+
10 rows in set (0.00 sec)

输出结果显示了 tb_students_info 表中 id、name 和 height 三个字段下的所有数据。

黑马程序员 MySQL数据库入门到精通从mysql安装到mysql高级、mysql优化全囊括

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql数据库