如上一节所示,检索整个表很容易。只需从 SELECT 语句中省略 WHERE 子句。但通常你不想看到整个表,尤其是当它变大时。相反,您通常对回答特定问题更感兴趣,在这种情况下,您可以对所需信息指定一些限制条件。让我们根据他们回答的有关您的宠物的问题来看看一些选择查询。

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

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

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

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

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

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

    例如,您可以结合条件来定位雌性类别的狗:

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

    前面的查询使用 AND 逻辑运算符。还有一个 OR 运算符:

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

    AND 和 OR 可以混合使用,尽管 AND 的优先级高于 OR。如果您同时使用这两个运算符,最好使用括号来明确指示应如何对条件进行分组:

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