Skip to content

Latest commit

 

History

History
70 lines (54 loc) · 3.18 KB

File metadata and controls

70 lines (54 loc) · 3.18 KB

4.3.4.2 Selecting Particular Rows

如上一节所示,很容易检索整个表。只需省略SELECT语句中的WHERE子句即可。但通常你不想看到整个表,特别是当它数据变得很多的时候。相反,你通常更有兴趣回答一个特定的问题,在这种情况下,你指定一些约束你想要的信息。让我们看看一些选择查询的问题。

您可以从表中选择特定的行。例如,如果您想要验证您对Bowser的出生日期所做的更改,请选择Bowser的记录,如下所示:

mysql>SELECT * FROM pet WHERE name = 'Bowser';
+--------+-------+---------+------+------------+------------+
| name   | owner | species | sex  | birth      | death      |
+--------+-------+---------+------+------------+------------+
| Bowser | Diane | dog     | m    | 1989-08-31 | 1995-07-29 |
+--------+-------+---------+------+------------+------------+

输出确认年份正确记录为1989年,而不是1979年。

字符串比较通常不区分大小写,因此您可以指定名称为“bowser”,“BOWSER”等。查询结果相同。

您可以在任何列上的指定条件,而不仅仅是名称。例如,如果你想知道哪些动物出生在1998年或之后,测试出生栏:

mysql>SELECT * FROM pet WHERE birth >= '1998-1-1';
+----------+-------+---------+------+------------+-------+
| name     | owner | species | sex  | birth      | death |
+----------+-------+---------+------+------------+-------+
| Chirpy   | Gwen  | bird    | f    | 1998-09-11 | NULL  |
| Puffball | Diane | hamster | f    | 1999-03-30 | NULL  |
+----------+-------+---------+------+------------+-------+

您可以组合条件,例如,定位雌性狗:

mysql>SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';
+-------+--------+---------+------+------------+-------+
| name  | owner  | species | sex  | birth      | death |
+-------+--------+---------+------+------------+-------+
| Buffy | Harold | dog     | f    | 1989-05-13 | NULL  |
+-------+--------+---------+------+------------+-------+

上述查询使用AND逻辑运算符。此外,还有一个OR运算符:

mysql>SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';
+----------+-------+---------+------+------------+-------+
| name     | owner | species | sex  | birth      | death |
+----------+-------+---------+------+------------+-------+
| Chirpy   | Gwen  | bird    | f    | 1998-09-11 | NULL  |
| Whistler | Gwen  | bird    | NULL | 1997-12-09 | NULL  |
| Slim     | Benny | snake   | m    | 1996-04-29 | NULL  |
+----------+-------+---------+------+------------+-------+

AND和OR可以混合,虽然AND具有比OR更高的优先级。如果使用两个运算符,最好使用括号来明确指示条件应如何分组:

mysql>SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm')
    ->OR (species = 'dog' AND sex = 'f');
+-------+--------+---------+------+------------+-------+
| name  | owner  | species | sex  | birth      | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL  |
| Buffy | Harold | dog     | f    | 1989-05-13 | NULL  |
+-------+--------+---------+------+------------+-------+