MySQL学习入门教程:select语句查询或查看表中的数据
了解如何使用MySQL语句SELECT
从表或视图中查询数据。
MySQL SELECT 语句简介
使用SELECT
语句从表或视图中获取数据。表格由行和列组成,就像电子表格一样。通常我们只想查看行的子集、列的子集或两者的组合。语句 SELECT
的结果称为结果集。这是一个行列表,其中每行由相同数量的列组成。
请参阅示例数据库 (yiibaidb
) 中的下表员工
的结构。它有 8
列:员工人数、姓氏、名字、分机号、电子邮件地址、办公室代码、报告、职位等。语句
SELECT
确定查看哪些列和行。例如,如果您只对所有员工的名字、姓氏和职务感兴趣,或者只想查看职务为 销售代表 的每个员工的信息,则语句 SELECT
可以提供帮助。您执行这些操作。
让我们看一下指令 Select
的语法:
SELECT
column_1, column_2, ...
FROM
table_1
[INNER | LEFT |RIGHT] JOIN table_2 ON conditions
WHERE
conditions
GROUP BY column_1
HAVING group_conditions
ORDER BY column_1
LIMIT offset, length;
sqlSelect
该指令由不同的子句组成,如下表所示:
Select
After 是以逗号分隔的列或星号的列表 (*
),表示应返回所有列。FROM
指定要请求数据的表或视图。JOIN
根据某些资格条件从其他表中检索数据。WHERE
过滤结果集中的行。GROUP BY
将一组行分为小组,并对每个小组应用聚合函数。过滤器HAVING
基于子句GROUP BY
定义的小组。ORDER BY
指定用于排序的列列表。LIMIT
限制返回的行数。
语句中的SELECT
和FROM
语句是必需的,其他部分是可选的。
在后续教程中更详细地查看每个条款。在本教程中,我们将重点关注 SELECT
语句的简单形式使用。
MySQL SELECT 语句示例
SELECT
语句允许您通过在 SELECT
子句中指定以逗号分隔的列列表来查询表的部分数据。例如,如果您只想查看员工的名字、姓氏和职务,请使用以下查询:
SELECT
lastname, firstname, jobtitle
FROM
employees;
SQL 即使员工表中有很多列, 请注意以下两个语句返回的列之间的差异 - Statement-1 为了检索 它会返回 在本教程中,您已经了解并熟悉了 MySQL SELECT语句仅返回列数据表中所有行中的三行,如下图所示:
Shellmysql> SELECT lastname, firstname, jobtitle FROM employees;
+-----------+-----------+----------------------+
| lastname | firstname | jobtitle |
+-----------+-----------+----------------------+
| Murphy | Diane | President |
| Patterson | Mary | VP Sales |
| Firrelli | Jeff | VP Marketing |
| Patterson | William | Sales Manager (APAC) |
| Bondur | Gerard | Sale Manager (EMEA) |
| Bow | Anthony | Sales Manager (NA) |
| Jennings | Leslie | Sales Rep |
| Thompson | Leslie | Sales Rep |
| Firrelli | Julie | Sales Rep |
| Patterson | Steve | Sales Rep |
| Tseng | Foon Yue | Sales Rep |
| Vanauf | George | Sales Rep |
| Bondur | Loui | Sales Rep |
| Hernandez | Gerard | Sales Rep |
| Castillo | Pamela | Sales Rep |
| Bott | Larry | Sales Rep |
| Jones | Barry | Sales Rep |
| Fixter | Andy | Sales Rep |
| Marsh | Peter | Sales Rep |
| King | Tom | Sales Rep |
| Nishi | Mami | Sales Rep |
| Kato | Yoshimi | Sales Rep |
| Gerard | Martin | Sales Rep |
+-----------+-----------+----------------------+
23 rows in set
SQLStatement-2SELECT lastname, firstname, jobtitle FROM employees;
SQLSELECT * FROM employees;
雇员表中所有列的数据,您可以在表
Selectsecement
select子句中列出所有列名,或使用普通星号 (
*
) 表示您要从表的所有列中检索数据。运行以下查询:
Shellmysql> SELECT * FROM employees;
+----------------+-----------+-----------+-----------+-----------------------+------------+-----------+----------------------+
| employeeNumber | lastName | firstName | extension | email | officeCode | reportsTo | jobTitle |
+----------------+-----------+-----------+-----------+-----------------------+------------+-----------+----------------------+
| 1002 | Murphy | Diane | x5800 | dmurphy@yiibai.com | 1 | NULL | President |
| 1056 | Patterson | Mary | x4611 | mpatterso@yiibai.com | 1 | 1002 | VP Sales |
| 1076 | Firrelli | Jeff | x9273 | jfirrelli@yiibai.com | 1 | 1002 | VP Marketing |
| 1088 | Patterson | William | x4871 | wpatterson@yiibai.com | 6 | 1056 | Sales Manager (APAC) |
| 1102 | Bondur | Gerard | x5408 | gbondur@gmail.com | 4 | 1056 | Sale Manager (EMEA) |
| 1143 | Bow | Anthony | x5428 | abow@gmail.com | 1 | 1056 | Sales Manager (NA) |
| 1165 | Jennings | Leslie | x3291 | ljennings@yiibai.com | 1 | 1143 | Sales Rep |
| 1166 | Thompson | Leslie | x4065 | lthompson@yiibai.com | 1 | 1143 | Sales Rep |
| 1188 | Firrelli | Julie | x2173 | jfirrelli@yiibai.com | 2 | 1143 | Sales Rep |
| 1216 | Patterson | Steve | x4334 | spatterson@yiibai.com | 2 | 1143 | Sales Rep |
| 1286 | Tseng | Foon Yue | x2248 | ftseng@yiibai.com | 3 | 1143 | Sales Rep |
| 1323 | Vanauf | George | x4102 | gvanauf@yiibai.com | 3 | 1143 | Sales Rep |
| 1337 | Bondur | Loui | x6493 | lbondur@yiibai.com | 4 | 1102 | Sales Rep |
| 1370 | Hernandez | Gerard | x2028 | ghernande@gmail.com | 4 | 1102 | Sales Rep |
| 1401 | Castillo | Pamela | x2759 | pcastillo@gmail.com | 4 | 1102 | Sales Rep |
| 1501 | Bott | Larry | x2311 | lbott@yiibai.com | 7 | 1102 | Sales Rep |
| 1504 | Jones | Barry | x102 | bjones@gmail.com | 7 | 1102 | Sales Rep |
| 1611 | Fixter | Andy | x101 | afixter@yiibai.com | 6 | 1088 | Sales Rep |
| 1612 | Marsh | Peter | x102 | pmarsh@yiibai.com | 6 | 1088 | Sales Rep |
| 1619 | King | Tom | x103 | tking@gmail.com | 6 | 1088 | Sales Rep |
| 1621 | Nishi | Mami | x101 | mnishi@gmail.com | 5 | 1056 | Sales Rep |
| 1625 | Kato | Yoshimi | x102 | ykato@gmail.com | 5 | 1621 | Sales Rep |
| 1702 | Gerard | Martin | x2312 | mgerard@gmail.com | 4 | 1102 | Sales Rep |
+----------------+-----------+-----------+-----------+-----------------------+------------+-----------+----------------------+
23 rows in set
employees
表中的所有列和行。应使用星号 (*
) 进行测试。建议您显式检索数据列,原因如下: *
) 可能会返回未使用列的数据。它会在 MySQL 数据库服务器和应用程序之间产生不必要的I/O 磁盘和网络流量。 *
) 并且有人通过添加更多列来更改表数据时,您会得到与预期不同的结果集。 *
) 可能会将敏感信息暴露给未经授权的用户。 SELECT
语句的使用,并使用 SELECT
语句访问了 MySQL 表中的数据。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。