Database
 sql >> Baza danych >  >> RDS >> Database

Instrukcja SQL WHERE

Oświadczenie SQL WHERE Wprowadzenie

  • Klauzula WHERE jest używana do włączenia warunku podczas pobierania danych z tabel.
  • Kiedy musisz określić warunek, który musi być spełniony, gdy dane są pobierane z tabel, w takim przypadku, gdy używana jest klauzula.
  • Gdzie klauzula jest używana do filtrowania rekordów, które pobierasz z instrukcji select, dzięki czemu otrzymujesz mniejszy podzbiór danych.
  • Gdzie klauzula jest również używana do wykonywania operacji łączenia.
  • Gdzie klauzula zwraca tylko te rekordy z tabeli, które spełniają określony w niej warunek.
  • Ta klauzula jest używana nie tylko z zapytaniem SELECT, ale może być również używana z zapytaniami UPDATE i DELETE.
  1. Używanie klauzuli where z zapytaniem SELECT
  • Klauzula WHERE z zapytaniem SELECT do pobrania wszystkich kolumn z tabeli.
  • Aby pobrać wszystkie rekordy z tabeli, gwiazdka Używany jest symbol (*).

Składnia:

          SELECT *FROM TABLE_NAME WHERE condition;

Przykład:

Najpierw utworzymy bazę danych o nazwie „bookdb”. Następnie w tej bazie utworzymy „książkę” tabeli i wstawimy rekordy do tabeli. W kolejnych przykładach rozważymy tę samą bazę danych i tę samą tabelę.

Teraz zastosujemy klauzulę where z zapytaniem SELECT, aby pobrać wszystkie kolumny z tabeli, w której cena książki jest równa 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) 

Jest tylko jeden rekord z Book_ID =4, którego cena jest równa 200. Dlatego wyświetlane są wszystkie kolumny tego konkretnego rekordu.

  • Klauzula WHERE z zapytaniem SELECT do pobrania jednej lub więcej niż jednej określonej kolumny z tabeli.
  • Aby pobrać określone kolumny z tabeli, nazwy wszystkich kolumn, które mają być pobrane, powinny być określone w samym zapytaniu.
  • Określone nazwy kolumn, które mają zostać pobrane, zostaną oddzielone przecinkiem.

Składnia:

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

Przykład:

Zastosujemy klauzulę where z zapytaniem SELECT, aby pobrać określone kolumny (Book_ID, Book_Price) z książki tabela, w której cena książki wynosi 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) 

Jest tylko jeden rekord z Book_ID =4, którego cena jest równa 200. W związku z tym wyświetlane są Book_ID i Book_Price tego konkretnego rekordu.

  • Używanie klauzuli where z zapytaniem UPDATE

Składnia:

UPDATE TABLE_NAME SET column_name = newvalue WHERE column_name1 = value1;

Przykład:

Zastosujemy klauzulę WHERE z zapytaniem UPDATE w tabeli książek, aby zaktualizować Nazwa_księgi i Autor_książki określonego rekordu przez określenie identyfikatora Księgi jako warunku w klauzuli WHER.

 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) 

Jest tylko jeden rekord z ID_księgi =3, zmieniliśmy nazwę księgi i autora księgi tego rekordu. Dlatego wyświetlana jest zaktualizowana tabela.

  • Używanie klauzuli where z zapytaniem DELETE

Składnia:

DELETE FROM TABLE_NAME WHERE column_name1 = value1;

Przykład:

Zastosujemy klauzulę where z zapytaniem DELETE w tabeli książek do

usuń książkę o określonym identyfikatorze Book_ID, określając identyfikator Book_ID jako warunek w klauzuli where.

 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) 

Jest tylko jeden rekord z Book_ID =5, usunęliśmy cały ten rekord z tabeli księgi. Dlatego wyświetlana jest zaktualizowana tabela.

Operatorzy z oświadczeniem WHERE

Operatorów można używać z klauzulą ​​where. Operatorów tych można używać razem z klauzulą ​​WHERE w zapytaniach SELECT, UPDATE i DELETE.

  1. Równe(=)

W przypadku użycia operatora równego (=) z klauzulą ​​WHERE, zostaną one pobrane z tabeli, jeśli wartość nazwy kolumny w tabeli jest równa wartości nazwy kolumny określonej w zapytaniu.

Przykład:

Zastosujemy klauzulę where z zapytaniem SELECT, aby pobrać te rekordy z tabeli, w której cena książki jest równa 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) 

Jest tylko jeden rekord z Book_ID =4, którego cena jest równa 200. Dlatego wyświetlane są wszystkie kolumny tego konkretnego rekordu.

  • Większe niż(>)

Gdy operator większa niż (>) jest używany z klauzulą ​​Where, pobierze te rekordy z tabeli, jeśli wartość nazwy kolumny w tabeli jest większa niż wartość nazwy kolumny określonej w zapytaniu.

Przykład:

Zastosujemy klauzulę where z zapytaniem SELECT, aby pobrać te rekordy z tabeli, w których cena książki jest większa niż 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) 

Istnieją trzy rekordy z Book_ID =1, 3 i 4, których ceny są większe niż 150. Dlatego wyświetlane są wszystkie kolumny tych rekordów.

  • Mniej niż(<)

Kiedy operator less than(<) jest używany z klauzulą ​​WHERE, będzie pobierał te rekordy z tabeli, jeśli wartość nazwy kolumny w tabeli jest mniejsza niż wartość nazwy kolumny określonej w zapytaniu.

Przykład:

Zastosujemy klauzulę where z zapytaniem SELECT, aby pobrać te rekordy z tabeli, w których cena książki jest mniejsza niż 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) 

Istnieją dwa rekordy z Book_ID =1 i 2, których ceny są mniejsze niż 200. Dlatego wyświetlane są wszystkie kolumny tych rekordów.

  • Większe lub równe (>=)

Gdy operator większy lub równy (>=) jest używany z klauzulą ​​WHERE, będzie on pobierał te rekordy z tabeli, jeśli wartość nazwy kolumny obecnej w tabeli jest większa lub równa wartości nazwy kolumny określonej w zapytanie.

Przykład:

Zastosujemy klauzulę where z zapytaniem SELECT, aby pobrać te rekordy z tabeli, w których cena książki jest większa lub równa 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) 

Widzimy, że istnieją cztery rekordy z Book_ID =1, 2, 3 i 4, których ceny są większe lub równe 150. Stąd wyświetlane są wszystkie kolumny tych rekordów.

  • Mniejsze lub równe (<=)

W przypadku użycia operatora mniejszego lub równego (<=) z klauzulą ​​WHERE, będzie on pobierał te rekordy z tabeli, gdy wartość nazwy kolumny w tabeli jest mniejsza lub równa wartości nazwy kolumny określonej w zapytanie.

Przykład:

Zastosujemy klauzulę where z zapytaniem SELECT, aby pobrać te rekordy z tabeli, w których cena książki jest mniejsza lub równa 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) 

Istnieją trzy rekordy z Book_ID =1, 2 i 4, których ceny są mniejsze lub równe 200. Dlatego wyświetlane są wszystkie kolumny tych rekordów.

  • Różne (<>)

Gdy operator not equal(<>) jest używany z klauzulą ​​where, pobierze te rekordy z tabeli, jeśli wartość nazwy kolumny określonej w zapytaniu nie jest zgodna z wartością nazwy kolumny obecnej w tabeli.

Przykład:

Zastosujemy klauzulę where z zapytaniem SELECT, aby pobrać te rekordy z tabeli, w których cena książki nie jest równa 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) 

Istnieją trzy rekordy z Book_ID =1, 2 i 4, których ceny nie są równe 250. Dlatego wyświetlane są wszystkie kolumny tych rekordów.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Samouczek łączenia SQL

  2. Jak utworzyć widok w SQL

  3. Czy zawsze potrzebujesz bazy danych dla swojej aplikacji?

  4. Pomiar wydajności bazy danych pod presją

  5. Rodzaje SQL JOIN