Този урок е част от поредицата Научете основни SQL заявки с помощта на MySQL. В предишния урок обсъдихме SQL заявките за извличане на редовете или четене на данни от таблица в MySQL. Командата SELECT връща всички редове в таблица, освен ако не посочим ограничението, както е показано в предишните примери за урок. В няколко ситуации трябва да филтрираме получените редове, за да получим ограничените редове, отговарящи на определени условия. Можем да филтрираме редовете с помощта на клаузата WHERE, като посочим условието за филтриране. Можем също да посочим множество условия с помощта на ключовите думи И, ИЛИ.
Клауза Къде
КЪДЕ клаузата може да се използва за четене на филтрирани редове от таблица въз основа на дадените условия. В случай, че сте влезли отдалечено в базата данни, ще ви трябва и привилегията SELECT за таблицата, за да четете редовете от таблица.
# SELECT - Syntax - WHERE
SELECT column_1,column_2,... FROM table_name WHERE <single or multiple conditions>;
Обяснение на заявката
MySQL командата SELECT може да се използва за четене на редове или данни от даденото име на таблица, където изразът за избор и името на таблицата са задължителни.
Можем да филтрираме получения набор от заявки, върнати от заявката за избор, използвайки клаузата WHERE. Можем да посочим или единични, или множество условия, за да филтрираме резултатите. Ключовите думи И и ИЛИ може да се използва за прилагане на множество условия. Можем да използваме и ключовите думи IN иНЕ В за да ограничите стойностите на колоните до набор от стойности.
Оператори
Можем да използваме изброените по-долу оператори, за да извършваме сравнения, докато прилагаме условията на филтъра. Сравнението ще бъде направено с помощта на дадената стойност и стойностите, съхранени в колоната на таблицата.
= Може да се използва за проверка дали стойностите на двата операнда са равни или не.
!= Той проверява дали стойностите на двата операнда не са равни.
> Той проверява дали стойността на левия операнд е по-голяма от стойността на десния операнд.
< Той проверява дали стойността на левия операнд е по-малка от стойността на десния операнд.
>= Той проверява дали стойността на левия операнд е по-голяма или равна на стойността на десния операнд.
<= Той проверява дали стойността на левия операнд е по-малка или равна на стойността на десния операнд.
Примери
Този раздел предоставя примери за четене на филтрирани данни от таблицата с помощта на SELECT команда с КЪДЕ клауза. Използвайте посочената по-долу заявка, за да създадете потребителска таблица с колоните с идентификатор, собствено и фамилно име, за да съхранявате потребителски данни.
# Create the User Table
CREATE TABLE `user` (
`user_id` bigint(20) NOT NULL,
`first_name` varchar(45),
`last_name` varchar(45)
);
Посочената по-долу заявка може да се използва за вмъкване на данни в потребителската таблица.
# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`) VALUES
( 1, 'John', 'Smith' ),
( 2, 'Rick', 'Jones' ),
( 3, 'Catherine', 'Ponting' ),
( 4, 'Harsh', 'Upadhyay' ),
( 5, 'Tajwinder', 'Singh' ),
( 6, 'Leo', NULL ),
( 7, 'Leo', 'Murphy' ),
( 8, 'Ram', 'Choudhary' ),
( 9, 'Nicole', NULL ),
( 10, 'Ram', 'Choudhary' );
Гореспоменатата заявка ще вмъкне 10 реда в таблицата с идентификатор, собствено и фамилно име, които представляват 10 различни потребители.
Сега ще прочетем филтрираните данни, вмъкнати от нас в потребителската таблица. Това може да се направи с помощта на командата SELECT, както е показано по-долу.
# Filter - WHERE - Read all rows having first name set to Leo
SELECT * FROM `user` WHERE `first_name` = 'Leo';
# Result
6 Leo
7 Leo Murphy
# Filter - WHERE - AND - Read all rows having first name set to Leo and last name set to Murphy
SELECT * FROM `user` WHERE `first_name` = 'Leo' AND `last_name` = 'Murphy';
# Result
7 Leo Murphy
# Filter - WHERE - IS NOT - Read all rows having last name without NULL values
SELECT * FROM `user` WHERE `last_name` IS NOT NULL;
# Result
1 John Smith
2 Rick Jones
3 Catherine Ponting
4 Harsh Upadhyay
5 Tajwinder Singh
7 Leo Murphy
8 Ram Choudhary
10 Ram Choudhary
# Filter - WHERE - OR, IN - Read all rows having first name is either John or Harsh
SELECT * FROM `user` WHERE `first_name` = 'John' OR `first_name` = 'Harsh';
SELECT * FROM `user` WHERE `first_name` IN ( 'John', 'Harsh' );
# Result
1 John Smith
4 Harsh Upadhyay
Гореспоменатите заявки изпълняват различни филтриращи операции на sstring стойности, използващи единични или множество условия. Уверете се, че използвате единични кавички, докато прилагате филтрите за колони с тип данни низ.
# Filter - WHERE - Read all rows having id lesser than 5
SELECT * FROM `user` WHERE `user_id` < 5;
# Result
1 John Smith
2 Rick Jones
3 Catherine Ponting
4 Harsh Upadhyay
# Filter - WHERE - LIMIT - Read all rows having id lesser than 5
SELECT * FROM `user` WHERE `user_id` < 5 LIMIT 2;
# Result
1 John Smith
2 Rick Jones
# Filter - WHERE - AND - Read all rows having id greater than 3 and lesser than 6
SELECT * FROM `user` WHERE `user_id` > 3 AND `user_id` < 6;
# Result
4 Harsh Upadhyay
5 Tajwinder Singh
Гореспоменатите заявки прилагат условията за числови типове данни. Можем също да смесваме различни типове стойности, както е показано по-долу.
# Filter - WHERE - AND - Read all rows having first name set to Harsh, id greater than 2 and lesser than 5
SELECT * FROM `user` WHERE `first_name` = 'Harsh' AND `user_id` > 3 AND `user_id` < 6;
# Result
4 Harsh Upadhyay
Ето как можем да четем филтрираните данни, съхранени в MySQL таблиците, използвайки клаузата WHERE.