Spec-Zone .ru
спецификации, руководства, описания, API

3.3.4.2. Выбор Определенных Строк

Как показано в предыдущем разделе, легко получить всю таблицу. Только опустите WHERE пункт от SELECT оператор. Но обычно Вы не хотите видеть всю таблицу, особенно когда это становится большим. Вместо этого Вы обычно больше интересуетесь отвечанием на определенный вопрос, когда Вы определяете некоторые ограничения на информацию, которую Вы хотите. Давайте смотреть на некоторые запросы выбора с точки зрения вопросов о Ваших домашних животных, на которых они отвечают.

Можно выбрать только определенные строки из своей таблицы. Например, если Вы хотите проверить изменение, которое Вы производили в дате рождения Теплозаправщика, выберите запись Теплозаправщика как это:

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', и т.д. Результатом запроса является то же самое.

Можно определить условия на любом столбце, не только name. Например, если Вы хотите знать, какие животные родились во время или после 1998, тест birth столбец:

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  |+-------+--------+---------+------+------------+-------+