除非最终检索它们并利用它们来做点事情,否则将记录放入数据库没什么好处。这就是 select 语句的用途,即帮助取出数据。select 大概是 sql 语言中最常用的语句,而且怎样使用它也最为讲究;用它来选择记录可能相当复杂,可能会涉及许多表中列之间的比较。本
除非最终检索它们并利用它们来做点事情,否则将记录放入数据库没什么好处。这就是 select 语句的用途,即帮助取出数据。select 大概是 sql 语言中最常用的语句,而且怎样使用它也最为讲究;用它来选择记录可能相当复杂,可能会涉及许多表中列之间的比较。本节介绍select语句关于查询的最基本功能。
select 语句的语法如下:
select selection_list 选择哪些列
from table_list 从何处选择行
where primary_constraint 行必须满足什么条件
group by grouping_columns 怎样对结果分组
having secondary_constraint 行必须满足的第二条件
order by sorting_columns 怎样对结果排序
limit count 结果限定
注意:所有使用的关键词必须精确地以上面的顺序给出。例如,一个having子句必须跟在group by子句之后和order by子句之前。
除了词“select”和说明希望检索什么的 column_list 部分外,语法中的每样东西都是可选的。有的数据库还需要 from 子句。mysql 有所不同,它允许对表达式求值而不引用任何表。
普通查询
select最简单的形式是从一张表中检索每样东西:
mysql> select * from pet;
其结果为:
+----------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+--------+---------+------+------------+------------+
| fluffy | harold | cat | f | 1993-02-04 | null |
| claws | gwen | cat | m | 1994-03-17 | null |
| buffy | harold | dog | f | 1989-05-13 | null |
| chirpy | gwen | bird | f | 1998-09-11 | null |
| fang | benny | dog | m | 1990-08-27 | null |
| bowser | diane | dog | m | 1990-08-31 | 1995-07-29 |
| whistler | gwen | bird | null | 1997-12-09 | null |
| slim | benny | snake | m | 1996-04-29 | null |
| puffball | diane | hamster | f | 1999-03-30 | null |
+----------+--------+---------+------+------------+------------+
查询特定行:
你能从你的表中只选择特定的行。例如,如果你想要验证你对bowser的出生日期所做的改变,像这样精选bowser的记录:
mysql> select * from pet where name = bowser;
其结果为:
+--------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+-------+---------+------+------------+------------+
| bowser | diane | dog | m | 1990-08-31 | 1995-07-29 |
+--------+-------+---------+------+------------+------------+
你可以对照前一个例子来验证。
查询特定列
如果你不想要看到你的表的整个行,就命名你感兴趣的列,用逗号分开。例如,如果你想要知道你的动物什么时候出生的,精选name和birth列:
mysql> select name, birth from pet where owner=gwen;
其结果为:
+----------+------------+
| name | birth |
+----------+------------+
| claws | 1994-03-17 |
| chirpy | 1998-09-11 |
| whistler | 1997-12-09 |
+----------+------------+
进行表达式计算
前面的多数查询通过从表中检索值已经产生了输出结果。mysql 还允许作为一个公式的结果来计算输出列的值。表达式可以简单也可以复杂。下面的查询求一个简单表达式的值(常量)以及一个涉及几个算术运算符和两个函数调用的较复杂的表达式的值。例如,计算browser生活的天数:
mysql> select death-birth from pet where name=bowser;
其结果是:
+-------------+
| death-birth |
+-------------+
| 49898 |
+-------------+
由于mysql允许对表达式求值而不引用任何表。所以也可以这样使用:
mysql>select (2+3*4.5)/2.5;
其结果为:
+---------------+
| (2+3*4.5)/2.5 |
+---------------+
| 6.200 |
+---------------+