Что такое предложение WHERE в MySQL?
Предложение WHERE в MySQL - это ключевое слово, используемое для определения точных критериев данных или строк, на которые повлияет указанный оператор SQL. Предложение WHERE можно использовать с операторами SQL, такими как INSERT, UPDATE, SELECT и DELETE, для фильтрации записей и выполнения различных операций с данными.
Мы рассмотрели, как запрашивать данные из базы данных с помощью оператора SELECT в предыдущем руководстве. Оператор SELECT вернул все результаты из запрошенной таблицы базы данных.
Однако бывают случаи, когда мы хотим ограничить результаты запроса определенным условием. Предложение WHERE в SQL пригодится в таких ситуациях.
Синтаксис предложения WHERE
Базовый синтаксис предложения WHERE при использовании в операторе MySQL SELECT WHERE следующий.
SELECT * FROM tableName WHERE condition;
ЗДЕСЬ
- «SELECT * FROM tableName» - это стандартный оператор SELECT.
- «WHERE» - это ключевое слово, ограничивающее наш выборочный набор результатов запроса, а «condition» - это фильтр, который будет применяться к результатам. Фильтр может быть диапазоном, одним значением или подзапросом.
Давайте теперь посмотрим на практический пример .
Предположим, мы хотим получить личные данные участника из таблицы members с номером членства 1, для этого мы воспользуемся следующим скриптом.
SELECT * FROM `members` WHERE `membership_number` = 1;
Выполнение вышеуказанного сценария в рабочей среде MySQL на «myflixdb» приведет к следующим результатам.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
Предложение WHERE в сочетании с оператором - AND LOGICAL
Условие WHERE в MySQL при использовании вместе с логическим оператором AND выполняется только в том случае, если выполняются ВСЕ указанные критерии фильтрации. Давайте теперь посмотрим на практический пример. Предположим, мы хотим получить список всех фильмов категории 2, выпущенных в 2008 году, для этого мы воспользуемся сценарием, показанным ниже.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Выполнение вышеуказанного сценария в рабочей среде MySQL для «myflixdb» дает следующие результаты.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
Предложение WHERE в сочетании с оператором - OR LOGICAL
Предложение WHERE при использовании вместе с оператором OR выполняется только в том случае, если выполняется какой-либо или весь указанный критерий фильтра. Следующий сценарий получает все фильмы в категории 1 или категории 2.SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Выполнение вышеуказанного сценария в рабочей среде MySQL для «myflixdb» дает следующие результаты.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
Предложение WHERE в сочетании с ключевым словом - IN
Предложение WHERE в MySQL при использовании вместе с ключевым словом IN влияет только на строки, значения которых соответствуют списку значений, предоставленному в ключевом слове IN. Оператор MySQL IN помогает сократить количество предложений OR, которые вам, возможно, придется использовать. Следующий запрос MySQL WHERE IN дает строки, в которых member_number равно 1, 2 или 3SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Выполнение вышеуказанного сценария в рабочей среде MySQL для «myflixdb» дает следующие результаты.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
Предложение WHERE в сочетании с - NOT IN Keyword
Предложение WHERE при использовании вместе с ключевым словом NOT IN НЕ влияет на строки, значения которых совпадают со списком значений, указанным в ключевом слове NOT IN. Следующий запрос дает строки, в которых членство_номер НЕ равно 1, 2 или 3.SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Выполнение вышеуказанного сценария в рабочей среде MySQL для «myflixdb» дает следующие результаты.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Предложение WHERE в сочетании с операторами - COMPARISON
Операторы сравнения меньше (), равно (=), не равно () могут использоваться с предложением WHERE.= Равно
Следующий скрипт получает всех членов женского пола из таблицы members с помощью оператора сравнения «равно».SELECT * FROM `members` WHERE `gender` = 'Female';
Выполнение вышеуказанного сценария в рабочей среде MySQL для «myflixdb» дает следующие результаты.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> Больше чем
Следующий скрипт получает все платежи, превышающие 2000, из таблицы платежей. ВЫБЕРИТЕ * ИЗ `платежей` ГДЕ` amount_paid`> 2000; Выполнение вышеуказанного сценария в рабочей среде MySQL для «myflixdb» дает следующие результаты.payment_id | membership_number | payment_date | description | amount_paid | external_reference_number |
---|---|---|---|---|---|
1 | 1 | 23-07-2012 | Movie rental payment | 2500 | 11 |
3 | 3 | 30-07-2012 | Movie rental payment | 6000 | NULL |
<> Не равно
Следующий скрипт получает все фильмы, идентификатор категории которых не равен 1.SELECT * FROM `movies` WHERE `category_id`<> 1;Выполнение вышеуказанного сценария в рабочей среде MySQL для «myflixdb» дает следующие результаты.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
Резюме
- Предложение SQL WHERE используется для ограничения количества строк, затронутых запросом SELECT, UPDATE или DELETE.
- Условие WHERE в SQL может использоваться вместе с логическими операторами, такими как AND и OR, операторами сравнения, такими как, = и т. Д.
- При использовании с логическим оператором И должны быть соблюдены все критерии.
- При использовании с логическим оператором ИЛИ должен быть соблюден любой из критериев.
- Ключевое слово IN используется для выбора строк, соответствующих списку значений.
Логическая головоломка Предположим, мы хотим получить список взятых напрокат фильмов, которые не были возвращены вовремя 25.06.2012. Для этого мы можем использовать предложение оператора SQL WHERE вместе с оператором сравнения «меньше» и логическим оператором AND.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Выполнение вышеуказанного сценария в рабочей среде MySQL дает следующие результаты.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |