Учебники

8) ГДЕ пункт

Что такое пункт WHERE?

Мы рассмотрели, как запрашивать данные из базы данных с помощью оператора SELECT в предыдущем уроке. Оператор SELECT вернул все результаты из запрашиваемой таблицы базы данных.

Это, однако, времена, когда мы хотим ограничить результаты запроса указанным условием. Предложение SQL WHERE пригодится в таких ситуациях. 

 

MySQL WHERE Предложение с примерами - И, ИЛИ, В, НЕ В

ГДЕ Синтаксис предложения

Основной синтаксис для предложения WHERE при использовании в операторе SELECT следующий.

SELECT * FROM tableName WHERE condition;

ВОТ

  • «SELECT * FROM tableName» — это стандартная инструкция SELECT
  • «WHERE» — это ключевое слово, которое ограничивает наш набор результатов запроса select, а «condition» — фильтр, который будет применен к результатам. Фильтр может быть диапазоном, отдельным значением или подзапросом.

Давайте теперь посмотрим на практический пример .

Предположим, что мы хотим получить личные данные участника из таблицы участников, учитывая номер участника 1, для этого мы будем использовать следующий скрипт.

SELECT * FROM `members` WHERE `membership_number` = 1;

Выполнение вышеупомянутого сценария в MySQL Workbench на «myflixdb» даст следующие результаты.

membership_numberfull_namesgenderdate_of_birthphysical_addresspostal_addresscontct_numberemail
1Janet JonesFemale21-07-1980First Street Plot No 4Private Bag0759 253 542[email protected]

 

Предложение WHERE в сочетании с оператором - AND LOGICAL

Предложение WHERE при использовании вместе с логическим оператором AND выполняется только в том случае, если соблюдены все указанные критерии фильтрации. 

Давайте теперь посмотрим на практический пример - предположим, что мы хотим получить список всех фильмов категории 2, которые были выпущены в 2008 году, мы будем использовать сценарий, показанный ниже, для достижения этой цели.
 
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
 

Выполнение вышеупомянутого сценария в MySQL Workbench против «myflixdb» приводит к следующим результатам.

movie_idtitledirectoryear_releasedcategory_id
2Forgetting Sarah MarshalNicholas Stoller20082

Предложение WHERE в сочетании с оператором OR OR LOGICAL

Предложение WHERE, используемое вместе с оператором OR, выполняется только в том случае, если соблюдены какие-либо или все указанные критерии фильтрации. 
Следующий скрипт получает все фильмы в категории 1 или 2
 
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

Выполнение вышеупомянутого сценария в MySQL Workbench против «myflixdb» приводит к следующим результатам.

 
movie_idtitledirectoryear_releasedcategory_id
1Pirates of the Caribean 4Rob Marshall20111
2Forgetting Sarah MarshalNicholas Stoller20082
 

Предложение WHERE в сочетании с ключевым словом IN

 
Предложение WHERE при использовании вместе с ключевым словом IN влияет только на строки, значения которых соответствуют списку значений, предоставленных в ключевом слове IN. IN помогает уменьшить количество предложений OR, которые вам, возможно, придется использовать 
Следующий запрос выдает строки, в которых значение member_number равно 1, 2 или 3.
 
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Выполнение вышеупомянутого сценария в MySQL Workbench против «myflixdb» приводит к следующим результатам.

membership_numberfull_namesgenderdate_of_birthphysical_addresspostal_addresscontct_numberemail
1Janet JonesFemale21-07-1980First Street Plot No 4Private Bag0759 253 542[email protected]
2Janet Smith JonesFemale23-06-1980Melrose 123NULLNULL[email protected]
3Robert PhilMale12-07-19893rd Street 34NULL12345[email protected]

 

Предложение WHERE в сочетании с ключевым словом NOT IN

Предложение WHERE при использовании вместе с ключевым словом NOT IN НЕ влияет на строки, значения которых соответствуют списку значений, предоставленных в ключевом слове NOT IN.
Следующий запрос выдает строки, в которых значение member_number НЕ равно 1, 2 или 3.
 
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Выполнение вышеупомянутого сценария в MySQL Workbench против «myflixdb» приводит к следующим результатам.

membership_numberfull_namesgenderdate_of_birthphysical_addresspostal_addresscontct_numberemail
4Gloria WilliamsFemale14-02-19842nd Street 23NULLNULLNULL

 

ГДЕ пункт в сочетании с - СРАВНИТЕЛЬНЫЕ ОПЕРАТОРЫ

Операторы сравнения меньше (), равные (=), не равные () могут использоваться с предложением Where
 

= Равно

 
Следующий скрипт получает все женские элементы из таблицы members, используя оператор сравнения, равный.
 
SELECT * FROM `members` WHERE `gender` = 'Female';

Выполнение вышеупомянутого сценария в MySQL Workbench против «myflixdb» приводит к следующим результатам.

membership_numberfull_namesgenderdate_of_birthphysical_addresspostal_addresscontct_numberemail
1Janet JonesFemale21-07-1980First Street Plot No 4Private Bag0759 253 542[email protected]
2Janet Smith JonesFemale23-06-1980Melrose 123NULLNULL[email protected]
4Gloria WilliamsFemale14-02-19842nd Street 23NULLNULLNULL

 

> Больше чем

Следующий скрипт получает все платежи, превышающие 2000, из таблицы платежей.
ВЫБЕРИТЕ * ОТ `платежей` ГДЕ` сумма_платы`> 2000;
Выполнение вышеупомянутого сценария в MySQL Workbench против «myflixdb» приводит к следующим результатам.
 
payment_idmembership_numberpayment_datedescriptionamount_paidexternal_reference_number
1123-07-2012Movie rental payment250011
3330-07-2012Movie rental payment6000NULL
 

<> Не равно 

Следующий скрипт получает все фильмы, чей идентификатор категории не равен 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Выполнение вышеупомянутого сценария в MySQL Workbench против «myflixdb» приводит к следующим результатам.
 
movie_idtitledirectoryear_releasedcategory_id
2Forgetting Sarah MarshalNicholas Stoller20082
5Daddy's Little GirlsNULL20078
6Angels and DemonsNULL20076
7Davinci CodeNULL20076
9Honey moonersJohn Schultz20058
 

Резюме

  • Предложение SQL WHERE используется для ограничения количества строк, затронутых запросом SELECT, UPDATE или DELETE.
  • Предложение WHERE может использоваться вместе с логическими операторами, такими как AND и OR, операторами сравнения, такими как, = и т. Д.
  • При использовании с логическим оператором AND все критерии должны быть выполнены.
  • При использовании с логическим оператором ИЛИ должен быть выполнен любой из критериев.
  • Ключевое слово IN используется для выбора строк, соответствующих списку значений.

Логические

 
Предположим, мы хотим получить список арендованных фильмов, которые не были возвращены вовремя 25/06/2012. Для этого мы можем использовать предложение WHERE вместе с оператором сравнения «меньше» и логическим оператором «И».
 
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Выполнение вышеупомянутого сценария в MySQL Workbench дает следующие результаты.
 
reference_numbertransaction_datereturn_datemembership_numbermovie_idmovie_returned
1421-06-201224-06-2012220