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

Toán tử SQL Equals (=) cho người mới bắt đầu

Toán tử bằng (= ) có lẽ là toán tử được sử dụng phổ biến nhất trong SQL. Nó so sánh sự bằng nhau của hai biểu thức. Ngay cả khi bạn chỉ mới bắt đầu hành trình SQL của mình, bạn có thể sẽ biết toán tử này.

Bảng nguồn

Hãy tưởng tượng cơ sở dữ liệu của chúng ta chứa bảng sau. Đây là bảng chúng tôi sẽ sử dụng cho các ví dụ trên trang này.

SELECT * FROM Pets;

Kết quả:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+
(8 rows affected)

Ví dụ

Nếu chúng tôi muốn nhận tất cả vật nuôi với một người chủ nhất định, chúng tôi có thể làm điều này:

SELECT *
FROM Pets
WHERE OwnerId = 3;

Kết quả:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
+---------+-------------+-----------+-----------+------------+

Truy vấn của chúng tôi sử dụng toán tử bằng (= ) để so sánh sự bình đẳng về giá trị của OwnerId cột và 3 .

Trong trường hợp này, chủ sở hữu số 3 có 3 vật nuôi.

Chuỗi

Khi so sánh với một giá trị chuỗi, hãy sử dụng dấu ngoặc kép xung quanh chuỗi. Ví dụ:nếu chúng tôi muốn nhận thông tin về tất cả các vật nuôi có tên là Fluffy, chúng tôi có thể làm như sau:

SELECT *
FROM Pets
WHERE PetName = 'Fluffy';

Kết quả:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
+---------+-------------+-----------+-----------+------------+

Truy vấn của chúng tôi sử dụng toán tử bằng (= ) để so sánh sự bình đẳng về giá trị của PetName cột và chuỗi Fluffy .

Trong trường hợp của chúng tôi, chúng tôi có thể thấy rằng khách sạn vật nuôi hiện có hai vật nuôi tên là Fluffy.

Nhiều điều kiện

Nếu bạn có nhiều điều kiện, bạn có thể sử dụng nhiều toán tử bằng.

Như thế này:

SELECT * FROM Pets 
WHERE PetName = 'Fluffy' OR PetName = 'Tweet';

Kết quả:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
+---------+-------------+-----------+-----------+------------+

Chúng ta có thể thấy rằng nó trả về các hàng có PetName cột là Fluffy hoặc Tweet .

Giảm thiểu điều kiện

Bạn có thể sử dụng NOT toán tử để phủ định điều kiện được cung cấp bởi toán tử bằng. Đây là một ví dụ:

SELECT *
FROM Pets
WHERE NOT PetName = 'Fluffy';

Kết quả:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

Một cách khác để thực hiện việc này là sử dụng toán tử không bằng với, là <> hoặc != (hoặc cả hai) tùy thuộc vào DBMS của bạn.

Giá trị NULL

Bạn có thể nhận thấy rằng bảng mẫu ban đầu của chúng tôi chứa một vài NULL trong cột DOB.

Một cột chứa NULL nghĩa là nó không có giá trị. Điều này khác với 0 hoặc false , hoặc thậm chí là một chuỗi trống.

Bạn không thể sử dụng toán tử bằng để so sánh với NULL . Trên thực tế, điều này có thể phụ thuộc vào DBMS của bạn và cấu hình của nó. Nhưng bây giờ, hãy xem điều gì sẽ xảy ra nếu tôi cố gắng so sánh cột DOB với NULL .

SELECT * FROM Pets 
WHERE DOB = NULL;

Kết quả:

(0 rows affected)

Cách kiểm tra NULL là sử dụng IS .

Do đó, chúng ta cần viết lại câu lệnh trên như sau.

SELECT * FROM Pets 
WHERE DOB IS NULL;

Kết quả:

+---------+-------------+-----------+-----------+-------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB   |
|---------+-------------+-----------+-----------+-------|
| 7       | 3           | 2         | Bark      | NULL  |
| 8       | 2           | 4         | Meow      | NULL  |
+---------+-------------+-----------+-----------+-------+

NULL các giá trị có thể là một điều khó khăn đối với người mới bắt đầu. Trên thực tế, chúng có thể là một điều khó khăn đối với các nhà phát triển có kinh nghiệm! Trong SQL, NULL có nghĩa hơi khác với NULL trong hầu hết các ngôn ngữ lập trình khác.

Nhưng điều quan trọng cần nhớ là, trong SQL, NULL có nghĩa là thiếu một giá trị. Không có giá trị. Do đó, chúng tôi không thể nói rằng nó bằng hoặc không bằng thứ khác, bởi vì không có giá trị nào để bắt đầu.

Nếu bạn quan tâm, hãy xem SQL Server ANSI_NULLS Explained để xem cách bạn có thể thay đổi cách NULL các giá trị được xử lý trong SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng chính của sys.dm_os_wait_stats

  2. Tôi cần gì để chạy SQL?

  3. Làm việc với JDBC và Spring

  4. ScaleGrid ra mắt Hỗ trợ Google Cloud Platform (GCP) cho Lưu trữ cơ sở dữ liệu được quản lý

  5. Đổi tên các chỉ mục bằng thủ tục sp_rename