如何使⽤SQLSELECT语句从单个表中查询数据
在本教程中,您将学习如何使⽤SQL SELECT语句从单个表中查询数据。
1. SQL SELECT语句简介
要查询表中的数据,请使⽤SQL SELECT语句。SELECT语句包含⽤于选择列,,,以及执⾏简单计算的语法。
SELECT语句是SQL中最复杂的命令之⼀,因此,在本教程中,我们将仅介绍基础知识。
下⾯说明了从单个表中检索数据的SELECT语句的基本语法。
SELECT
column1, column2, column3, ...
FROM
table_name;
在此语法中,指定查询SELECT⼦句中的数据是使⽤逗号分隔列的列表,并在FROM⼦句中指定表名。在评估SELECT语句时,数据库系统⾸先计算FROM⼦句,然后再计算SELECT⼦句。
如果要查询表的所有列中的数据,可以使⽤星号(*)运算符⽽不是列列表,如下所⽰。
SELECT
*
FROM
table_name;
请注意,SQL不区分⼤⼩写。所以数据库系统处理SELECT和select都是相同操作。但是,为了使SQL语句更具可读性,我们将使⽤SQL关键字的⼤写字母(如SELECT和FROM)和⼩写字母(如表名和列名)等标识符。
除了SELECT和FROM⼦句之外,SELECT语句还可以包含许多其他⼦句,例如 -
- ⽤于根据指定条件过滤数据
ORDER BY - ⽤于对结果集进⾏排序
LIMIT - ⽤于限制返回的⾏
JOIN - ⽤于查询来⾃多个相关表的数据
GROUP BY - ⽤于根据⼀列或多列对数据进⾏分组
HAVING - ⽤于过滤分组
您将在后续教程中了解这些⼦句的使⽤。
2. SQL SELECT语句⽰例
我们将使⽤中的employees表进⾏演⽰。
3. SQL SELECT - 查询所有列⽰例
要查询表中的所有列,请使⽤星号(*)⽽不是指定每列。例如,以下语句从employees表中检索所有数据:
SELECT
*
FROM
employees;
执⾏上⾯⽰例代码,得到以下结果 -
+-------------+------------+-----------+---------------------------+----------------+------------+--------+--------+------------+---------------+
| employee_id | first_name | last_name | email                    | phone_number  | hire_date  | job_id | salary | manager_id | department_id |
+-------------+------------+-----------+---------------------------+----------------+------------+--------+--------+------------+---------------+
|        100 | Steven    | Lee      | steven.lee@yiibai    | 0532-********  | 1987-06-17 |      4 | 24000  | NULL      |            9 |
|        101 | Neena      | Wong      | neena.wong@kaops      | 0551-*******  | 1989-09-21 |      5 | 17000  |        100 |            9 |
|        102 | Lex        | Liang    | lex.liang@kaops      | 0571-********  | 1993-01-13 |      5 | 17000  |        100 |            9 |
|        103 | Alexander  | Lee      | alexander.lee@kaops  | 020-********  | 1990-01-03 |      9 | 9000  |        102 |            6 |
... ...
sql语句查询不包含|        201 | Michael    | Zhou      | michael.zhou@yiibai  | 010-********  | 1996-02-17 |    10 | 13000  |        100 |            2 |
|        202 | Pat        | Zhou      | pat.zhou@yiibai      | 0755-********  | 1997-08-17 |    11 | 6000  |        201 |            2 |
|        203 | Susan      | Zhou      | susan.zhou@yiibai    | 0755-********  | 1994-06-07 |      8 | 6500  |        101 |            4 |
|        204 | Hermann    | Wu        | hermann.wu@yiibai    | 0513-********  | 1994-06-07 |    12 | 10000  |        101 |            7 |
|        205 | Shelley    | Wu        | shelley.wu@yiibai    | 0898-********  | 1994-06-07 |      2 | 12000  |        101 |            11 |
|        206 | William    | Wu        | william.wu@yiibai    | 022-********  | 1994-06-07 |      1 | 8300  |        205 |            11 |
+-------------+------------+-----------+---------------------------+----------------+------------+--------+--------+------------+---------------+
40 rows in set
使⽤星号(*)运算符只能⽅便地通过SQL客户端应⽤程序以交互⽅式查询数据。但是,如果在应⽤程序的嵌⼊语句中使⽤星号(*)运算符,则可
能存在⼀些潜在问题。
⾸先,因为表的结构将发展以适应新的业务需求,例如,可以添加新列并删除现有列。如果使⽤星号(*)运算符并且未更改应⽤程序代码以使其与新表结构⼀起使⽤,则应⽤程序可能⽆法正常运⾏。
星号(*)运算符的另⼀个问题是它可能会增加数据库服务器和应⽤程序之间传输的不必要数据,因为应⽤程序可能只需要表的部分数据。
4. SQL SELECT - 查询特定列
SELECT语句⽤于准确指定要以任何顺序检索数据的列,它不必按表中定义的顺序排列。
例如,如果想要查看所有员⼯的员⼯ID,名字,姓⽒和雇⽤⽇期,则使⽤以下查询:
SELECT
employee_id,
first_name,
last_name,
hire_date
FROM
employees;
请注意,结果集仅包含SELECT⼦句中指定的四列。如下所⽰ -
+-------------+------------+-----------+------------+
| employee_id | first_name | last_name | hire_date  |
+-------------+------------+-----------+------------+
|        100 | Steven    | Lee      | 1987-06-17 |
|        101 | Neena      | Wong      | 1989-09-21 |
|        102 | Lex        | Liang    | 1993-01-13 |
|        103 | Alexander  | Lee      | 1990-01-03 |
... ...
|        202 | Pat        | Zhou      | 1997-08-17 |
|        203 | Susan      | Zhou      | 1994-06-07 |
|        204 | Hermann    | Wu        | 1994-06-07 |
|        205 | Shelley    | Wu        | 1994-06-07 |
|        206 | William    | Wu        | 1994-06-07 |
+-------------+------------+-----------+------------+
40 rows in set
5. SQL SELECT - 执⾏简单的计算
如前所述,SELECT语句⽤于执⾏简单的计算。例如,以下查询使⽤FLOOR(),DATEDIFF()和CURRENT_DATE函数计算员⼯的服务年份。要计算服务年份,将DATEDIFF()函数的结果除以365。FLOOR()函数返回⼩于或等于数值表达式结果的最⼤整数。YoS是下⾯表达式的,⽤于在返回的结果集中显⽰⽤户友好的标题。
FLOOR(DATEDIFF(NOW(), hire_date) / 365)
完整的写法如下所⽰ -
SELECT
employee_id,
first_name,
last_name,
FLOOR(DATEDIFF(NOW(), hire_date) / 365) AS YoS
FROM
employees;
执⾏上⾯查询语句,得到以下结果 -
+-------------+------------+-----------+-----+
| employee_id | first_name | last_name | YoS |
+-------------+------------+-----------+-----+
|        100 | Steven    | Lee      |  31 |
|        101 | Neena      | Wong      |  29 |
|        102 | Lex        | Liang    |  26 |
|        103 | Alexander  | Lee      |  29 |
|        104 | Bruce      | Wong      |  27 |
|        105 | David      | Liang    |  21 |
|        106 | Valli      | Chen      |  20 |
|        107 | Diana      | Chen      |  19 |
|        108 | Nancy      | Chen      |  24 |
... ...
|        203 | Susan      | Zhou      |  24 |
|        204 | Hermann    | Wu        |  24 |
|        205 | Shelley    | Wu        |  24 |
|        206 | William    | Wu        |  24 |
+-------------+------------+-----------+-----+
40 rows in set
此查询适⽤于MySQL。如果使⽤SQL Server,则可以使⽤以下查询:
SELECT
employee_id,
first_name,
last_name,
DATEDIFF(year, hire_date,CURRENT_TIMESTAMP)
FROM
employees;
通过上⾯⽰例和学习,您应该知道如何使⽤SQL SELECT语句从单个表中查询数据。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。