Denna handledning är en del av serien Lär dig grundläggande SQL-frågor med MySQL. I den tidigare handledningen har vi diskuterat SQL-frågorna för att hämta raderna eller läsa data från en tabell i MySQL. SELECT-kommandot returnerar alla rader i en tabell såvida vi inte anger gränsen som visas i de tidigare handledningsexemplen. I flera situationer måste vi filtrera de resulterande raderna för att få de begränsade raderna att uppfylla vissa villkor. Vi kan filtrera raderna med hjälp av WHERE-satsen genom att ange filtervillkoret. Vi kan också ange flera villkor med hjälp av nyckelorden AND, OR.
Var klausul
VAR sats kan användas för att läsa filtrerade rader från en tabell baserat på de givna villkoren. Om du är fjärrinloggad i databasen behöver du också SELECT-privilegiet för tabellen för att kunna läsa raderna från en tabell.
# SELECT - Syntax - WHERE
SELECT column_1,column_2,... FROM table_name WHERE <single or multiple conditions>;
Frågeförklaring
MySQL-kommandot SELECT kan användas för att läsa rader eller data från det givna tabellnamnet där det valda uttrycket och namnet på tabellen är obligatoriskt.
Vi kan filtrera den resulterande frågeuppsättningen som returneras av urvalsfrågan med hjälp av WHERE-satsen. Vi kan ange antingen enstaka eller flera villkor för att filtrera resultaten. Sökorden OCH och ELLER kan användas för att tillämpa flera villkor. Vi kan också använda sökorden IN och INTE I för att begränsa kolumnvärdena till en uppsättning värden.
Operatorer
Vi kan använda operatörerna nedan för att utföra jämförelser samtidigt som vi tillämpar filtervillkoren. Jämförelsen kommer att göras med det angivna värdet och de värden som lagras i tabellkolumnen.
= Den kan användas för att kontrollera om värdena för de två operanderna är lika eller inte.
!= Den kontrollerar om värdena för de två operanderna inte är lika.
> Den kontrollerar om värdet på den vänstra operanden är större än värdet på den högra operanden.
< Den kontrollerar om värdet på den vänstra operanden är mindre än värdet på den högra operanden.
>= Den kontrollerar om värdet på den vänstra operanden är större än eller lika med värdet på den högra operanden.
<= Den kontrollerar om värdet på den vänstra operanden är mindre än eller lika med värdet på den högra operanden.
Exempel
Det här avsnittet ger exempel på hur du kan läsa filtrerad data från tabellen med SELECT kommandot med WHERE klausul. Använd den nedan nämnda frågan för att skapa användartabellen med id, förnamn och efternamn för att lagra användardata.
# Create the User Table
CREATE TABLE `user` (
`user_id` bigint(20) NOT NULL,
`first_name` varchar(45),
`last_name` varchar(45)
);
Den nedan nämnda frågan kan användas för att infoga data i användartabellen.
# 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' );
Den ovan nämnda frågan kommer att infoga 10 rader i tabellen med id, förnamn och efternamn för att representera 10 olika användare.
Nu kommer vi att läsa de filtrerade data som infogats av oss i användartabellen. Det kan göras med kommandot SELECT som visas nedan.
# 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
De ovan nämnda frågorna utför olika filteroperationer på string värden med enstaka eller flera villkor. Se till att använda enkla citattecken när du använder filtren för kolumner som har strängdatatypen.
# 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
Ovan nämnda frågor tillämpar villkoren för numeriska datatyper. Vi kan också blanda de olika typerna av värden som visas nedan.
# 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
Så här kan vi läsa den filtrerade data som lagras i MySQL-tabellerna med hjälp av WHERE-satsen.