Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Câu lệnh SQL WHERE

Câu lệnh SQL WHERE Giới thiệu

  • Mệnh đề WHERE được sử dụng để bao gồm một điều kiện khi tìm nạp dữ liệu từ các bảng.
  • Khi bạn phải chỉ định một điều kiện phải tuân theo trong khi dữ liệu được lấy từ các bảng, trong trường hợp đó, mệnh đề được sử dụng.
  • Mệnh đề Where được sử dụng để lọc các bản ghi mà bạn truy xuất từ ​​câu lệnh select để bạn nhận được một tập hợp con dữ liệu nhỏ hơn.
  • Mệnh đề where cũng được sử dụng để thực hiện hoạt động nối.
  • Mệnh đề where chỉ trả về những bản ghi từ bảng đáp ứng điều kiện được chỉ định với nó.
  • Mệnh đề này không chỉ được sử dụng với Truy vấn CHỌN mà còn có thể được sử dụng với Truy vấn CẬP NHẬT và XÓA.
  1. Sử dụng mệnh đề where với truy vấn SELECT
  • Mệnh đề where với truy vấn SELECT để truy xuất tất cả các cột từ bảng.
  • Để truy xuất tất cả các bản ghi từ bảng, hãy dấu hoa thị Biểu tượng (*) được sử dụng.

Cú pháp:

          SELECT *FROM TABLE_NAME WHERE condition;

Ví dụ:

Đầu tiên, chúng ta sẽ tạo một cơ sở dữ liệu với tên “bookdb”. Sau đó, trong cơ sở dữ liệu đó, chúng ta sẽ tạo một bảng “sổ sách” và chèn các bản ghi vào bảng. Chúng tôi sẽ xem xét cùng một cơ sở dữ liệu và cùng một bảng cho các ví dụ tiếp theo.

Bây giờ, chúng ta sẽ áp dụng mệnh đề where với truy vấn SELECT để truy xuất tất cả các cột từ bảng có giá sách bằng 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) 

Chỉ có một bản ghi có Book_ID =4, có giá bằng 200. Do đó tất cả các cột của bản ghi cụ thể đó đều được hiển thị.

  • Mệnh đề where với truy vấn SELECT để truy xuất một hoặc nhiều cột cụ thể từ một bảng.
  • Để truy xuất các cột cụ thể từ một bảng, tên của tất cả các cột sẽ được truy xuất phải được chỉ định trong chính truy vấn.
  • Các tên cột cụ thể sẽ được truy xuất sẽ được phân tách bằng dấu phẩy.

Cú pháp:

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

Ví dụ:

Chúng tôi sẽ áp dụng mệnh đề where với truy vấn SELECT để truy xuất các cột cụ thể (Book_ID, Book_Price) từ sách bảng trong đó giá của cuốn sách bằng 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) 

Chỉ có một bản ghi có Book_ID =4, có giá bằng 200. Do đó, Book_ID và Book_Price của bản ghi cụ thể đó được hiển thị.

  • Sử dụng mệnh đề where với truy vấn UPDATE

Cú pháp:

UPDATE TABLE_NAME SET column_name = newvalue WHERE column_name1 = value1;

Ví dụ:

Chúng tôi sẽ áp dụng mệnh đề where với truy vấn UPDATE trên bảng sách để cập nhật Book_Name và Book_Author của một bản ghi cụ thể bằng cách chỉ định Book_ID làm điều kiện trong mệnh đề 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) 

Chỉ có một bản ghi có Book_ID =3, chúng tôi đã thay đổi Book_name và Book_Author của bản ghi đó. Do đó, bảng cập nhật được hiển thị.

  • Sử dụng mệnh đề where với truy vấn DELETE

Cú pháp:

DELETE FROM TABLE_NAME WHERE column_name1 = value1;

Ví dụ:

Chúng tôi sẽ áp dụng mệnh đề where với truy vấn DELETE trên bảng sách cho

xóa sách có Book_ID cụ thể bằng cách chỉ định Book_ID làm điều kiện trong mệnh đề 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) 

Chỉ có một bản ghi có Book_ID =5, chúng tôi đã xóa toàn bộ bản ghi đó khỏi bảng sách. Do đó, bảng cập nhật được hiển thị.

Nhà điều hành có Tuyên bố WHERE

Bạn có thể sử dụng các toán tử với mệnh đề where. Các toán tử này có thể được sử dụng cùng với mệnh đề where trong các truy vấn SELECT, UPDATE và DELETE.

  1. Bằng (=)

Khi toán tử bằng (=) được sử dụng với mệnh đề where, nó sẽ truy xuất các bản ghi đó từ bảng ở bất kỳ nơi nào giá trị của tên cột có trong bảng bằng giá trị của tên cột được chỉ định trong truy vấn.

Ví dụ:

Chúng tôi sẽ áp dụng mệnh đề where với truy vấn SELECT để lấy các bản ghi đó từ bảng trong đó giá sách bằng 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) 

Chỉ có một bản ghi có Book_ID =4, có giá bằng 200. Do đó tất cả các cột của bản ghi cụ thể đó đều được hiển thị.

  • Lớn hơn (>)

Khi toán tử lớn hơn (>) được sử dụng với mệnh đề Where, nó sẽ truy xuất các bản ghi đó từ bảng ở bất kỳ nơi nào giá trị của tên cột có trong bảng lớn hơn giá trị của tên cột được chỉ định trong truy vấn.

Ví dụ:

Chúng tôi sẽ áp dụng mệnh đề where với truy vấn SELECT để truy xuất các bản ghi đó từ bảng nơi giá sách lớn hơ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) 

Có ba bản ghi có Book_ID =1, 3 và 4 có giá lớn hơn 150. Do đó tất cả các cột của các bản ghi đó đều được hiển thị.

  • Ít hơn (<)

Khi toán tử less than (<) được sử dụng với mệnh đề where, nó sẽ truy xuất các bản ghi đó từ bảng ở bất kỳ nơi nào giá trị của tên cột có trong bảng nhỏ hơn giá trị của tên cột được chỉ định trong truy vấn.

Ví dụ:

Chúng tôi sẽ áp dụng mệnh đề where với truy vấn SELECT để truy xuất các bản ghi đó từ bảng mà giá sách nhỏ hơ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) 

Có hai bản ghi có Book_ID =1 và 2 có giá nhỏ hơn 200. Do đó tất cả các cột của các bản ghi đó được hiển thị.

  • Lớn hơn hoặc bằng (> =)

Khi toán tử lớn hơn hoặc bằng (> =) được sử dụng với mệnh đề where, nó sẽ truy xuất các bản ghi đó từ bảng bất cứ nơi nào giá trị của tên cột hiện diện trong bảng lớn hơn hoặc bằng giá trị của tên cột được chỉ định trong truy vấn.

Ví dụ:

Chúng tôi sẽ áp dụng mệnh đề where với truy vấn SELECT để truy xuất các bản ghi đó từ bảng trong đó giá sách lớn hơn hoặc bằng 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) 

Chúng ta có thể thấy có bốn bản ghi có Book_ID =1, 2, 3 và 4 có giá lớn hơn hoặc bằng 150. Do đó tất cả các cột của các bản ghi đó đều được hiển thị.

  • Nhỏ hơn hoặc bằng (<=)

Khi toán tử nhỏ hơn hoặc bằng (<=) được sử dụng với mệnh đề where, nó sẽ truy xuất các bản ghi đó từ bảng trong đó giá trị của tên cột có trong bảng nhỏ hơn hoặc bằng giá trị của tên cột được chỉ định trong truy vấn.

Ví dụ:

Chúng tôi sẽ áp dụng mệnh đề where với truy vấn SELECT để truy xuất các bản ghi đó từ bảng trong đó giá sách nhỏ hơn hoặc bằng 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) 

Có ba bản ghi có Book_ID =1, 2 và 4 có giá nhỏ hơn hoặc bằng 200. Do đó tất cả các cột của các bản ghi đó được hiển thị.

  • Không Bằng (<>)

Khi toán tử không bằng (<>) được sử dụng với mệnh đề where, nó sẽ truy xuất các bản ghi đó từ bảng ở bất cứ nơi nào giá trị của tên cột được chỉ định trong truy vấn không khớp với giá trị của tên cột có trong bảng.

Ví dụ:

Chúng tôi sẽ áp dụng mệnh đề where với truy vấn SELECT để lấy các bản ghi đó từ bảng mà giá sách không bằng 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) 

Có ba bản ghi có Book_ID =1, 2 và 4 có giá không bằng 250. Do đó tất cả các cột của các bản ghi đó được hiển thị.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tải dữ liệu lớn nhanh hơn

  2. Mối quan hệ một-một trong cơ sở dữ liệu là gì?

  3. Tạo bảng mới trong IRI Workbench

  4. Các tính năng không được dùng nữa để đưa ra khỏi hộp công cụ của bạn - Phần 2

  5. Lỗi ORA-65048 khi thay đổi mật khẩu người dùng trong cơ sở dữ liệu vùng chứa (CDB)