sql >> Databasteknik >  >> RDS >> Database

SQL WHERE-sats

SQL WHERE-uttalande Introduktion

  • WHERE-satsen används för att inkludera ett villkor när data hämtas från tabeller.
  • När du måste ange ett villkor som måste följas medan data hämtas från tabeller, i det fallet där klausul används.
  • Där klausul används för att filtrera de poster som du hämtar från select-satsen så att du får en mindre delmängd av data.
  • Där klausul också används för att utföra join-operationer.
  • Där sats endast returnerar de poster från tabellen som uppfyller det villkor som anges med den.
  • Denna klausul används inte bara med SELECT Query, utan kan också användas med UPDATE och DELETE Queries.
  1. Använda where-sats med SELECT-fråga
  • Where-sats med SELECT-fråga för att hämta alla kolumner från en tabell.
  • För att hämta alla poster från en tabell, asterisk (*) symbol används.

Syntax:

          SELECT *FROM TABLE_NAME WHERE condition;

Exempel:

Först skapar vi en databas med namnet "bookdb". Sedan kommer vi i den databasen att skapa en tabell "bok" och infoga poster i tabellen. Vi kommer att överväga samma databas och även samma tabell för efterföljande exempel.

Nu kommer vi att tillämpa where-satsen med SELECT-frågan för att hämta alla kolumner från tabellen där bokens pris är lika 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) 

Det finns bara en post med Book_ID =4, vars pris är lika med 200. Därför visas alla kolumner i den specifika posten.

  • Where-sats med SELECT-fråga för att hämta en eller flera specifik kolumn från en tabell.
  • För att hämta specifika kolumner från en tabell bör namnen på alla kolumner som ska hämtas anges i själva frågan.
  • De specifika kolumnnamnen som ska hämtas kommer att separeras med kommatecken.

Syntax:

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

Exempel:

Vi kommer att tillämpa where-satsen med SELECT-frågan för att hämta specifika kolumner (Book_ID, Book_Price) från boken tabell där priset på boken är lika 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) 

Det finns bara en post med Book_ID =4, vars pris är lika med 200. Därför visas Book_ID och Book_Price för just den posten.

  • Använder where-sats med UPDATE-fråga

Syntax:

UPDATE TABLE_NAME SET column_name = newvalue WHERE column_name1 = value1;

Exempel:

Vi kommer att tillämpa where-satsen med UPDATE-frågan på boktabellen för att uppdatera Book_Name och Book_Author för en viss post genom att ange Book_ID som ett villkor i where-satsen.

 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) 

Det finns bara en post med Book_ID =3, vi har ändrat Book_name och Book_Author för den posten. Därför visas uppdaterad tabell.

  • Använder where-sats med DELETE-frågan

Syntax:

DELETE FROM TABLE_NAME WHERE column_name1 = value1;

Exempel:

Vi kommer att tillämpa where-klausulen med DELETE-frågan på boktabellen till

ta bort en bok med ett visst Book_ID genom att ange Book_ID som ett villkor i where-satsen.

 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) 

Det finns bara en post med Book_ID =5, vi har tagit bort hela posten från boktabellen. Därför visas uppdaterad tabell.

Operatorer med WHERE-deklaration

Du kan använda operatorer med where-satsen. Dessa operatorer kan användas tillsammans med where-satsen i SELECT-, UPDATE- och DELETE-frågor.

  1. Lika (=)

När operatorn lika med (=) används med where-satsen, kommer den att hämta dessa poster från tabellen varhelst värdet på kolumnnamnet som finns i en tabell är lika med värdet på kolumnnamnet som anges i frågan.

Exempel:

Vi kommer att tillämpa where-satsen med SELECT-frågan för att hämta dessa poster från tabellen där bokens pris är lika 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) 

Det finns bara en post med Book_ID =4, vars pris är lika med 200. Därför visas alla kolumner i den specifika posten.

  • Större än(>)

När operatorn större än (>) används med Where-satsen, kommer den att hämta dessa poster från tabellen varhelst värdet på kolumnnamnet som finns i en tabell är större än värdet på kolumnnamnet som anges i frågan.

Exempel:

Vi kommer att tillämpa where-satsen med SELECT-frågan för att hämta dessa poster från tabellen där bokens pris är högre än 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) 

Det finns tre poster med Book_ID =1, 3 och 4 vars priser är högre än 150. Därför visas alla kolumner i dessa poster.

  • Mindre än (<)

När operatorn less than(<) används med where-satsen, kommer den att hämta dessa poster från tabellen varhelst värdet på kolumnnamnet som finns i en tabell är mindre än värdet på kolumnnamnet som anges i frågan.

Exempel:

Vi kommer att tillämpa where-satsen med SELECT-frågan för att hämta dessa poster från tabellen där bokens pris är mindre än 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) 

Det finns två poster med Book_ID =1 och 2 vars priser är lägre än 200. Därför visas alla kolumner i dessa poster.

  • Större än eller lika med (>=)

När operatorn larger than eller equal(>=) används med where-satsen, kommer den att hämta dessa poster från tabellen varhelst värdet på kolumnnamnet som finns i en tabell är större än eller lika med värdet på kolumnnamnet som anges i fråga.

Exempel:

Vi kommer att tillämpa where-satsen med SELECT-frågan för att hämta de poster från tabellen där bokens pris är högre än eller lika 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 att det finns fyra poster med Book_ID =1, 2, 3 och 4 vars priser är större än eller lika med 150. Därför visas alla kolumner i dessa poster.

  • Mindre än eller lika med (<=)

När operatorn mindre än eller lika (<=) används med where-satsen, kommer den att hämta dessa poster från tabellen där värdet på kolumnnamnet som finns i en tabell är mindre än eller lika med värdet på kolumnnamnet som anges i frågan.

Exempel:

Vi kommer att tillämpa where-satsen med SELECT-frågan för att hämta dessa poster från tabellen där bokens pris är mindre än eller lika 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) 

Det finns tre poster med Book_ID =1, 2 och 4 vars priser är mindre än eller lika med 200. Därför visas alla kolumner i dessa poster.

  • Inte lika (<>)

När operatorn inte equal(<>) används med where-satsen, kommer den att hämta dessa poster från tabellen varhelst värdet på kolumnnamnet som anges i frågan inte matchar värdet på kolumnnamnet som finns i en tabell.

Exempel:

Vi kommer att tillämpa where-satsen med SELECT-frågan för att hämta de poster från tabellen där bokens pris inte är lika 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) 

Det finns tre poster med Book_ID =1, 2 och 4 vars priser inte är lika med 250. Därför visas alla kolumner i dessa poster.


  1. Hur man ansluter Android till MySQL med Mysql JDBC-drivrutinen

  2. SQL HAVING-klausul för nybörjare

  3. Hur funktionen QUOTENAME() fungerar i SQL Server (T-SQL)

  4. Backend-versionen stöds inte för att designa databasdiagram eller tabeller