sql >> Database teknologi >  >> RDS >> Database

SQL WHERE-erklæring

SQL WHERE-erklæring Introduktion

  • WHERE-sætning bruges til at inkludere en betingelse, mens data hentes fra tabeller.
  • Når du skal angive en betingelse, der skal overholdes, mens data hentes fra tabeller, i det tilfælde hvor klausulen bruges.
  • Hvor klausul bruges til at filtrere de poster, du henter fra select-sætningen, så du får en mindre delmængde af data.
  • Hvor klausul også bruges til at udføre join-operationer.
  • Hvor klausul kun returnerer de poster fra tabellen, som opfylder den betingelse, der er angivet med den.
  • Denne klausul bruges ikke kun med SELECT Query, men kan også bruges med UPDATE og DELETE Queries.
  1. Brug af where-sætning med SELECT-forespørgsel
  • Where-sætning med SELECT-forespørgsel for at hente alle kolonnerne fra en tabel.
  • For at hente alle poster fra en tabel, stjerne (*) symbol bruges.

Syntaks:

          SELECT *FROM TABLE_NAME WHERE condition;

Eksempel:

Først vil vi oprette en database med navnet "bookdb". Så i den database vil vi oprette en tabel "bog" og indsætte poster i tabellen. Vi vil overveje den samme database og også den samme tabel for efterfølgende eksempler.

Nu vil vi anvende where-sætning med SELECT-forespørgsel for at hente alle kolonnerne fra tabellen, hvor prisen på bogen er lig med 200.

 mysql> CREATE DATABASE bookdb;
 Query OK, 1 row affected (0.07 sec)
 mysql> USE bookdb;
 Database changed
 mysql> CREATE TABLE book(Book_ID INT NOT NULL AUTO_INCREMENT, Book_Name VARCHAR(100) NOT NULL, Book_Author VARCHAR(40) NOT NULL, Book_Price INT NOT NULL, PRIMARY KEY(Book_ID));
 Query OK, 0 rows affected (0.24 sec)
 mysql> INSERT INTO book(Book_Name,Book_Author,Book_Price) VALUES ("Learn MySQL","Abdul S", 180);
 Query OK, 1 row affected (0.07 sec)
 mysql> INSERT INTO book(Book_Name,Book_Author,Book_Price) VALUES ("MySQL Explained","Andrew Comeau", 150);
 Query OK, 1 row affected (0.04 sec)
 mysql> INSERT INTO book(Book_Name,Book_Author,Book_Price) VALUES ("MySQL Cookbook","Paul DuBois", 250);
 Query OK, 1 row affected (0.08 sec)
 mysql> INSERT INTO book(Book_Name,Book_Author,Book_Price) VALUES ("murach's MySQL","Joel Murach", 200);
 Query OK, 1 row affected (0.07 sec)
 mysql> INSERT INTO book(Book_Name,Book_Author,Book_Price) VALUES ("Head First SQL","Lynn Beighley", 300);
 Query OK, 1 row affected (0.07 sec)
 mysql> SELECT *FROM book;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       2 | MySQL Explained             | Andrew Comeau      |        150 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 +---------+-----------------------------+--------------------+------------+
 4 rows in set (0.00 sec)
 mysql> SELECT *FROM book WHERE Book_Price=200;
 +---------+----------------+-------------+------------+
 | Book_ID | Book_Name      | Book_Author | Book_Price |
 +---------+----------------+-------------+------------+
 |       4 | murach's MySQL | Joel Murach |        200 |
 +---------+----------------+-------------+------------+
 1 row in set (0.00 sec) 

Der er kun én post med Book_ID =4, hvis pris er lig med 200. Derfor vises alle kolonnerne i den pågældende post.

  • Where-sætning med SELECT-forespørgsel for at hente en eller mere end én specifik kolonne fra en tabel.
  • For at hente specifikke kolonner fra en tabel skal navnene på alle de kolonner, der skal hentes, angives i selve forespørgslen.
  • De specifikke kolonnenavne, som skal hentes, vil blive adskilt med komma.

Syntaks:

SELECT COLUMN_NAME1,….,COLUMN_NAMEn FROM TABLE_NAME WHERE condition;

Eksempel:

Vi anvender where-klausul med SELECT-forespørgsel for at hente specifikke kolonner (Book_ID, Book_Price) fra bogen tabel, hvor prisen på bogen er lig med 200.

 mysql> SELECT * FROM book;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       2 | MySQL Explained             | Andrew Comeau      |        150 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 +---------+-----------------------------+--------------------+------------+
 4 rows in set (0.00 sec)
 mysql> SELECT Book_ID,Book_Price FROM book where Book_Price=200;
 +---------+------------+
 | Book_ID | Book_Price |
 +---------+------------+
 |       4 |        200 |
 +---------+------------+
 1 row in set (0.00 sec) 

Der er kun én post med Book_ID =4, hvis pris er lig med 200. Derfor vises Book_ID og Book_Price for den pågældende post.

  • Brug af where-sætning med UPDATE-forespørgsel

Syntaks:

UPDATE TABLE_NAME SET column_name = newvalue WHERE column_name1 = value1;

Eksempel:

Vi vil anvende where-klausul med UPDATE-forespørgsel på bogtabellen for at opdatere Book_Name og Book_Author for en bestemt post ved at angive Book_ID som en betingelse i where-klausulen.

 mysql> SELECT *FROM book;
 +---------+-----------------+---------------+------------+
 | Book_ID | Book_Name       | Book_Author   | Book_Price |
 +---------+-----------------+---------------+------------+
 |       1 | Learn MySQL     | Abdul S       |        180 |
 |       2 | MySQL Explained | Andrew Comeau |        150 |
 |       3 | MySQL Cookbook  | Paul DuBois   |        250 |
 |       4 | murach's MySQL  | Joel Murach   |        200 |
 |       5 | Head First SQL  | Lynn Beighley |        300 |
 +---------+-----------------+---------------+------------+
 5 rows in set (0.00 sec)
 mysql> UPDATE book SET Book_name="Database Management Systems", Book_Author="Raghu Ramakrishnan" WHERE Book_ID=3;
 Query OK, 1 row affected (0.19 sec)
 Rows matched: 1  Changed: 1  Warnings: 0
 mysql> SELECT *FROM book;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       2 | MySQL Explained             | Andrew Comeau      |        150 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 |       5 | Head First SQL              | Lynn Beighley      |        300 |
 +---------+-----------------------------+--------------------+------------+
 5 rows in set (0.00 sec) 

Der er kun én post med Book_ID =3, vi har ændret bognavnet og bogforfatteren for denne post. Derfor vises en opdateret tabel.

  • Brug af where-sætning med DELETE-forespørgsel

Syntaks:

DELETE FROM TABLE_NAME WHERE column_name1 = value1;

Eksempel:

Vi vil anvende where-klausulen med DELETE-forespørgsel på bogtabellen til

slet en bog med et bestemt Book_ID ved at angive Book_ID som en betingelse i where-klausulen.

 mysql> SELECT *FROM book;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       2 | MySQL Explained             | Andrew Comeau      |        150 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 |       5 | Head First SQL              | Lynn Beighley      |        300 |
 +---------+-----------------------------+--------------------+------------+
 5 rows in set (0.00 sec)
 mysql> DELETE FROM book WHERE Book_ID=5;
 Query OK, 1 row affected (0.23 sec)
 mysql> SELECT *FROM book;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       2 | MySQL Explained             | Andrew Comeau      |        150 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 +---------+-----------------------------+--------------------+------------+
 4 rows in set (0.00 sec) 

Der er kun én post med Book_ID =5, vi har slettet hele den post fra bogtabellen. Derfor vises en opdateret tabel.

Operatører med WHERE-erklæring

Du kan bruge operatorer med where-sætningen. Disse operatorer kan bruges sammen med where-klausulen i SELECT-, UPDATE- og DELETE-forespørgsler.

  1. Lige(=)

Når operatoren lig med (=) bruges med where-klausulen, vil den hente disse poster fra tabellen, hvor værdien af ​​kolonnenavnet i en tabel er lig med værdien af ​​kolonnenavnet angivet i forespørgslen.

Eksempel:

Vi anvender where-klausulen med SELECT-forespørgsel for at hente disse poster fra tabellen, hvor prisen på bogen er lig med 200.

 mysql> SELECT *FROM book;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       2 | MySQL Explained             | Andrew Comeau      |        150 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 +---------+-----------------------------+--------------------+------------+
 4 rows in set (0.00 sec)
 mysql> SELECT *FROM book WHERE Book_Price=200;
 +---------+----------------+-------------+------------+
 | Book_ID | Book_Name      | Book_Author | Book_Price |
 +---------+----------------+-------------+------------+
 |       4 | murach's MySQL | Joel Murach |        200 |
 +---------+----------------+-------------+------------+
 1 row in set (0.00 sec) 

Der er kun én post med Book_ID =4, hvis pris er lig med 200. Derfor vises alle kolonnerne i den pågældende post.

  • Større end(>)

Når operatoren større end (>) bruges med Where-klausulen, vil den hente disse poster fra tabellen, hvor værdien af ​​kolonnenavnet i en tabel er større end værdien af ​​kolonnenavnet angivet i forespørgslen.

Eksempel:

Vi anvender where-klausulen med SELECT-forespørgsel for at hente disse poster fra tabellen, hvor prisen på bogen er større end 150.

 mysql> SELECT * FROM book;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       2 | MySQL Explained             | Andrew Comeau      |        150 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 +---------+-----------------------------+--------------------+------------+
 4 rows in set (0.00 sec)
 mysql> SELECT * FROM book WHERE Book_Price > 150;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 +---------+-----------------------------+--------------------+------------+
 3 rows in set (0.00 sec) 

Der er tre poster med Book_ID =1, 3 og 4, hvis priser er større end 150. Derfor vises alle kolonnerne i disse poster.

  • Mindre end (<)

Når mindre end(<)-operatoren bruges med where-klausulen, vil den hente disse poster fra tabellen, hvor værdien af ​​kolonnenavnet i en tabel er mindre end værdien af ​​kolonnenavnet angivet i forespørgslen.

Eksempel:

Vi anvender where-klausulen med SELECT-forespørgsel for at hente disse poster fra tabellen, hvor prisen på bogen er mindre end 200.

 mysql> SELECT * FROM book;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       2 | MySQL Explained             | Andrew Comeau      |        150 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 +---------+-----------------------------+--------------------+------------+
 4 rows in set (0.00 sec)
 mysql> SELECT * FROM book WHERE Book_Price < 200;
 +---------+-----------------+---------------+------------+
 | Book_ID | Book_Name       | Book_Author   | Book_Price |
 +---------+-----------------+---------------+------------+
 |       1 | Learn MySQL     | Abdul S       |        180 |
 |       2 | MySQL Explained | Andrew Comeau |        150 |
 +---------+-----------------+---------------+------------+
 2 rows in set (0.00 sec) 

Der er to poster med Book_ID =1 og 2, hvis priser er mindre end 200. Derfor vises alle kolonnerne i disse poster.

  • Større end eller lig med (>=)

Når operatoren larger than eller equal(>=) bruges med where-sætningen, vil den hente disse poster fra tabellen, hvor værdien af ​​kolonnenavnet i en tabel er større end eller lig med værdien af ​​kolonnenavnet angivet i forespørgsel.

Eksempel:

Vi anvender where-klausulen med SELECT-forespørgsel for at hente de poster fra tabellen, hvor prisen på bogen er større end eller lig med 150.

 mysql> SELECT * FROM book;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       2 | MySQL Explained             | Andrew Comeau      |        150 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 +---------+-----------------------------+--------------------+------------+
 4 rows in set (0.00 sec)
 mysql> SELECT * FROM book WHERE Book_Price >= 150;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       2 | MySQL Explained             | Andrew Comeau      |        150 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 +---------+-----------------------------+--------------------+------------+
 4 rows in set (0.00 sec) 

Vi kan se, at der er fire poster med Book_ID =1, 2, 3 og 4, hvis priser er større end eller lig med 150. Derfor vises alle kolonnerne i disse poster.

  • Mindre end eller lig med (<=)

Når mindre end eller lig (<=) operator bruges med where-sætning, vil den hente disse poster fra tabellen, hvor værdien af ​​kolonnenavnet i en tabel er mindre end eller lig med værdien af ​​kolonnenavnet angivet i forespørgslen.

Eksempel:

Vi anvender where-klausulen med SELECT-forespørgsel for at hente de poster fra tabellen, hvor prisen på bogen er mindre end eller lig med 200.

 mysql> SELECT * FROM book;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       2 | MySQL Explained             | Andrew Comeau      |        150 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 +---------+-----------------------------+--------------------+------------+
 4 rows in set (0.00 sec)
 mysql> SELECT * FROM book WHERE Book_Price <= 200;
 +---------+-----------------+---------------+------------+
 | Book_ID | Book_Name       | Book_Author   | Book_Price |
 +---------+-----------------+---------------+------------+
 |       1 | Learn MySQL     | Abdul S       |        180 |
 |       2 | MySQL Explained | Andrew Comeau |        150 |
 |       4 | murach's MySQL  | Joel Murach   |        200 |
 +---------+-----------------+---------------+------------+
 3 rows in set (0.00 sec) 

Der er tre poster med Book_ID =1, 2 og 4, hvis priser er mindre end eller lig med 200. Derfor vises alle kolonnerne i disse poster.

  • Ikke ens (<>)

Når ikke equal(<>)-operatoren bruges med where-sætning, vil den hente disse poster fra tabellen, hvor værdien af ​​kolonnenavnet angivet i forespørgslen ikke stemmer overens med værdien af ​​kolonnenavnet, der findes i en tabel.

Eksempel:

Vi vil anvende where-klausulen med SELECT-forespørgsel for at hente de poster fra tabellen, hvor prisen på bogen ikke er lig med 250.

 mysql> SELECT * FROM book;
 +---------+-----------------------------+--------------------+------------+
 | Book_ID | Book_Name                   | Book_Author        | Book_Price |
 +---------+-----------------------------+--------------------+------------+
 |       1 | Learn MySQL                 | Abdul S            |        180 |
 |       2 | MySQL Explained             | Andrew Comeau      |        150 |
 |       3 | Database Management Systems | Raghu Ramakrishnan |        250 |
 |       4 | murach's MySQL              | Joel Murach        |        200 |
 +---------+-----------------------------+--------------------+------------+
 4 rows in set (0.00 sec)
 mysql> SELECT * FROM book WHERE Book_Price <> 250;
 +---------+-----------------+---------------+------------+
 | Book_ID | Book_Name       | Book_Author   | Book_Price |
 +---------+-----------------+---------------+------------+
 |       1 | Learn MySQL     | Abdul S       |        180 |
 |       2 | MySQL Explained | Andrew Comeau |        150 |
 |       4 | murach's MySQL  | Joel Murach   |        200 |
 +---------+-----------------+---------------+------------+
 3 rows in set (0.00 sec) 

Der er tre poster med Book_ID =1, 2 og 4, hvis priser ikke er lig med 250. Derfor vises alle kolonnerne i disse poster.


  1. Flere forespørgsler udført i java i en enkelt sætning

  2. Jeg kan ikke finde my.cnf på min Windows-computer

  3. 3 måder at liste alle lagrede procedurer i en PostgreSQL-database

  4. BULK INSERT med identitet (auto-increment) kolonne