在本教程中,您将学习如何使用MySQL SELECT语句查询表或视图中的数据。 SELECT
语句允许您从表或视图中获取数据。表格包含行和列,如电子表格。通常,您希望查看子集行,列的子集或两者的组合。SELECT
语句的结果称为结果集,它是一个行列表,每个行包含相同数量的列。 请参阅示例数据库中的下employees
表。它有八列包含:: employee number, last name, first name, extension, email, office code, reports to, job title及多条记录。
+----------------+-----------+-----------+-----------+-----------------------+------------+-----------+----------------------+ | 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 |
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;
以下是SELECT
的使用及相关的组合关键字:
在查询语句中要求必须包含SELECT
和FROM
,其它都是可选项。
您将在后续教程中更详细地了解每个子句。在本教程中,我们将重点关注SELECT
语句的基本形式。
SELECT
语句允许您通过在SELECT
子句中指定逗号分隔列的列表来查询表的部分数据。例如,如果您只想查看员工的名字,姓氏和职位,则使用以下查询:
SELECT lastname, firstname, jobtitle FROM employees;
即使 employees
表有很多列,SELECT
语句只返回表中所有行的三列数据,结果如下:
+-----------+-----------+----------------------+ | 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) | ...
如果要获取表中所有列的数据employees
,可以列出SELECT
子句中的所有列名。或者您只需使用星号(*)表示您希望从表的所有列获取数据,如下面的查询:
SELECT * FROM employees;
返回表中的所有列和行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) ...
在实例使用中不推荐使用(*)原因如下:
在本教程中,您已经了解了用于从MySQL中的表中查询数据的基本MySQL SELECT语句。