Database
 sql >> база данни >  >> RDS >> Database

SQL изявление WHERE

Изявление WHERE на SQL Въведение

  • Клаузата WHERE се използва за включване на условие при извличане на данни от таблици.
  • Когато трябва да посочите условие, което трябва да се спазва, докато данните се изтеглят от таблици, в този случай, когато се използва клауза.
  • Клаузата Къде се използва за филтриране на записите, които извличате от оператора select, така че да получите по-малко подмножество от данни.
  • Клаузата Where се използва и за извършване на операции за присъединяване.
  • Клаузата Where връща само онези записи от таблицата, които отговарят на посоченото с нея условие.
  • Тази клауза не се използва само със заявка SELECT, но може да се използва и със заявки UPDATE и DELETE.
  1. Използване на клауза where със заявка SELECT
  • Клауза Къде със заявка SELECT за извличане на всички колони от таблица.
  • За да извлечете всички записи от таблица, звездичка Използва се символ (*).

Синтаксис:

          SELECT *FROM TABLE_NAME WHERE condition;

Пример:

Първо, ще създадем база данни с име “bookdb”. След това в тази база данни ще създадем таблица „книга“ и ще вмъкнем записи в таблицата. Ще разгледаме същата база данни и същата таблица за следващите примери.

Сега ще приложим клаузата where със заявка SELECT, за да извлечем всички колони от таблицата, където цената на книгата е равна на 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) 

Има само един запис с Book_ID =4, чиято цена е равна на 200. Следователно се показват всички колони на този конкретен запис.

  • Клауза Къде със заявка SELECT за извличане на една или повече от една конкретни колони от таблица.
  • За да извлечете конкретни колони от таблица, имената на всички колони, които трябва да бъдат извлечени, трябва да бъдат посочени в самата заявка.
  • Конкретните имена на колони, които трябва да бъдат извлечени, ще бъдат разделени със запетая.

Синтаксис:

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

Пример:

Ще приложим клауза where със заявка SELECT, за да извлечем конкретни колони (Book_ID, Book_Price) от книгата таблица, където цената на книгата е 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) 

Има само един запис с Book_ID =4, чиято цена е равна на 200. Следователно се показват Book_ID и Book_Price на този конкретен запис.

  • Използване на клауза where със заявка UPDATE

Синтаксис:

UPDATE TABLE_NAME SET column_name = newvalue WHERE column_name1 = value1;

Пример:

Ще приложим клауза where със заявка UPDATE към таблицата book, за да актуализираме Book_Name и Book_Author на конкретен запис, като посочим Book_ID като условие в клаузата 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 | 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) 

Има само един запис с Book_ID =3, променихме Book_name и Book_Author на този запис. Следователно се показва актуализирана таблица.

  • Използване на клауза where със заявка DELETE

Синтаксис:

DELETE FROM TABLE_NAME WHERE column_name1 = value1;

Пример:

Ще приложим клаузата where със заявка DELETE към таблицата с книги към

изтрийте книга с конкретен Book_ID, като посочите Book_ID като условие в клаузата 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) 

Има само един запис с Book_ID =5, ние изтрихме целия този запис от таблицата на книгата. Следователно се показва актуализирана таблица.

Оператори с оператор WHERE

Можете да използвате оператори с клаузата where. Тези оператори могат да се използват заедно с клаузата where в заявките SELECT, UPDATE и DELETE.

  1. Равно(=)

Когато се използва оператор равен на (=) с клауза where, той ще извлече тези записи от таблицата навсякъде, където стойността на името на колоната, присъстваща в таблица, е равна на стойността на името на колоната, посочена в заявката.

Пример:

Ще приложим клаузата where със заявка SELECT, за да извлечем тези записи от таблицата, където цената на книгата е равна на 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) 

Има само един запис с Book_ID =4, чиято цена е равна на 200. Следователно се показват всички колони на този конкретен запис.

  • По-голямо от(>)

Когато се използва оператор по-голям от (>) с клауза Where, той ще извлече тези записи от таблицата, когато стойността на името на колоната, присъстваща в таблица, е по-голяма от стойността на името на колоната, посочена в заявката.

Пример:

Ще приложим клаузата where със заявка SELECT, за да извлечем тези записи от таблицата, където цената на книгата е по-голяма от 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) 

Има три записа с Book_ID =1, 3 и 4, чиито цени са по-големи от 150. Следователно се показват всички колони на тези записи.

  • По-малко от(<)

Когато операторът по-малко от(<) се използва с клауза where, той ще извлече тези записи от таблицата, когато стойността на името на колоната, присъстваща в таблица, е по-малка от стойността на името на колоната, посочена в заявката.

Пример:

Ще приложим клаузата where със заявка SELECT, за да извлечем тези записи от таблицата, където цената на книгата е по-малка от 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) 

Има два записа с Book_ID =1 и 2, чиито цени са по-малки от 200. Следователно се показват всички колони на тези записи.

  • По-голямо или равно (>=)

Когато операторът по-голям или равен(>=) се използва с клауза where, той ще извлече тези записи от таблицата, когато стойността на името на колоната, присъстваща в таблица, е по-голяма или равна на стойността на името на колоната, посочена в заявка.

Пример:

Ще приложим клаузата where със заявка SELECT, за да извлечем тези записи от таблицата, където цената на книгата е по-голяма или равна на 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) 

Виждаме, че има четири записа с Book_ID =1, 2, 3 и 4, чиито цени са по-големи или равни на 150. Следователно се показват всички колони на тези записи.

  • По-малко или равно (<=)

Когато операторът по-малко или равен (<=) се използва с клауза where, той ще извлече тези записи от таблицата, когато стойността на името на колоната, присъстваща в таблица, е по-малка или равна на стойността на името на колоната, посочено в заявката.

Пример:

Ще приложим клаузата where със заявка SELECT, за да извлечем тези записи от таблицата, където цената на книгата е по-малка или равна на 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) 

Има три записа с Book_ID =1, 2 и 4, чиито цени са по-малки или равни на 200. Следователно се показват всички колони на тези записи.

  • Не е равно (<>)

Когато не се използва операторът equal(<>) с клауза where, той ще извлече тези записи от таблицата, когато стойността на името на колоната, посочена в заявката, не съвпада със стойността на името на колоната, присъстваща в таблица.

Пример:

Ще приложим клаузата where със заявка SELECT, за да извлечем тези записи от таблицата, където цената на книгата не е равна на 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) 

Има три записа с Book_ID =1, 2 и 4, чиито цени не са равни на 250. Следователно се показват всички колони на тези записи.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Правилата на Код в SQL

  2. SQL, добавяне на данни към таблица

  3. Статистика на изчакването на коляното:PAGEIOLATCH_SH

  4. Основни SQL заявки

  5. Функционални единици