Rate this post

Trong thế giới quản lý và phân tích dữ liệu sử dụng SQL, toán tử đóng một vai trò quan trọng trong việc xây dựng các truy vấn phức tạp và hiệu quả. Toán tử trong SQL là những ký hiệu đặc biệt hoặc từ khóa được sử dụng để thực hiện các phép tính số học, so sánh, logic trên giá trị hoặc biểu thức, giúp chúng ta lọc, so sánh và đánh giá dữ liệu một cách linh hoạt. Từ việc tìm kiếm dữ liệu đơn giản đến việc thực hiện các phép tính phức tạp và điều kiện kiểm tra, toán tử là công cụ không thể thiếu trong việc tạo ra các câu lệnh SQL mạnh mẽ và tối ưu.

Bài viết này sẽ khám phá các loại toán tử cơ bản trong SQL, bao gồm toán tử số học, toán tử so sánh, và toán tử logic. Mỗi loại toán tử sẽ được giới thiệu qua định nghĩa, cú pháp, và ví dụ minh họa, giúp người đọc hiểu rõ cách sử dụng và áp dụng chúng một cách hiệu quả trong các truy vấn SQL của mình.

Toán tử trong SQL là gì?

Toán tử trong SQL là các từ khóa hoặc ký hiệu được thiết kế đặc biệt để thực hiện các loại phép toán trên một hoặc nhiều toán hạng. Các toán tử này đóng một vai trò trung tâm trong việc xây dựng các điều kiện và biểu thức trong mệnh đề WHERE của truy vấn SQL, cho phép người dùng lọc và tinh chỉnh dữ liệu một cách mạnh mẽ và linh hoạt.

Toán tử Đơn Phân và Nhị Phân trong SQL

  • Toán tử Đơn Phân (Unary Operator): Đây là loại toán tử sử dụng chỉ một toán hạng để thực hiện một phép toán. Một ví dụ điển hình của toán tử đơn phân là việc sử dụng ký hiệu ‘-‘ để chỉ định giá trị âm của một số. Cú pháp:
  SQL_Operator SQL_Operand

Ví dụ, để lấy giá trị âm của số 5, bạn sẽ sử dụng: -5.

  • Toán tử Nhị Phân (Binary Operator): Loại toán tử này yêu cầu hai toán hạng để thực hiện một phép toán. Các toán tử so sánh như ‘=’, ‘>’, ‘<‘, ‘>=’, ‘<=’, và ‘!=’ là những ví dụ của toán tử nhị phân, với mục đích so sánh giá trị của hai toán hạng. Cú pháp:
  Operand1 SQL_Operator Operand2

Ví dụ, để kiểm tra xem số 10 có lớn hơn số 5 không, bạn sẽ sử dụng: 10 > 5.

Lưu ý khi Sử Dụng Toán tử SQL

Các toán tử SQL đóng vai trò quan trọng trong việc xác định logic của các truy vấn, giúp lọc dữ liệu theo các điều kiện cụ thể. Sử dụng chính xác các toán tử này cho phép bạn truy xuất chính xác dữ liệu bạn cần từ một hoặc nhiều bảng trong cơ sở dữ liệu. Khi thiết kế truy vấn, quan trọng là phải chọn loại toán tử phù hợp với nhu cầu lọc dữ liệu cụ thể, đồng thời đảm bảo rằng các toán hạng được sử dụng tương thích với toán tử để tránh các lỗi truy vấn.

Sự hiểu biết về cách sử dụng các toán tử SQL một cách hiệu quả sẽ tăng cường khả năng kiểm soát và phân tích dữ liệu của bạn, mở rộng khả năng truy vấn và tối ưu hóa hiệu suất cơ sở dữ liệu.

Thứ tự ưu tiên của toán tử SQL

Thứ tự ưu tiên của toán tử trong SQL xác định cách các phép toán trong cùng một biểu thức được thực hiện. Việc hiểu rõ thứ tự này là cần thiết để đảm bảo kết quả của các truy vấn là chính xác, đặc biệt khi biểu thức bao gồm nhiều loại toán tử khác nhau. SQL Server, MySQL, và các hệ quản trị cơ sở dữ liệu khác tuân theo quy tắc ưu tiên toán tử tương tự như trong toán học, với một số điều chỉnh và bổ sung cụ thể cho SQL.

Trong bảng sau, các toán tử ở trên cùng có mức độ ưu tiên cao và các toán tử xuất hiện ở dưới cùng có mức độ ưu tiên thấp.

Toán tử Ký hiệuToán tử SQL
**Toán tử lũy thừa
+, –Toán tử định danh, Toán tử phủ định
*, /Toán tử nhân, Toán tử chia
+, -, ||Toán tử cộng (cộng), toán tử trừ (trừ), toán tử nối chuỗi
=,! =, <,>, <=,> =, IS NULL, LIKE, BETWEEN, INToán tử so sánh
NOTtoán tử phủ định logic
&& hoặc ANDtoán tử kết hợp
ORtoán tử bao gồm

Ví dụ Minh Họa

Xét ví dụ SQL sau:

SELECT Salary * 3 - 20 FROM Employees;

Trong ví dụ này, giả sử Salary là 5. Biểu thức Salary * 3 - 20 được đánh giá như sau do thứ tự ưu tiên của các toán tử:

  • Phép nhân (*) có ưu tiên cao hơn phép trừ (-), vì vậy Salary * 3 được thực hiện trước, tạo ra kết quả là 15.
  • Sau đó, 15 - 20 được thực hiện, dẫn đến kết quả cuối cùng là -5.

Hiểu rõ thứ tự ưu tiên giúp đảm bảo rằng bạn có thể xây dựng các biểu thức chính xác trong truy vấn SQL, từ đó tránh được những kết quả không mong muốn do việc đánh giá không chính xác các phép toán.

Các loại toán tử

Các toán tử SQL được phân loại theo các danh mục sau:

  • Toán tử số học SQL
  • Toán tử so sánh SQL
  • Toán tử lôgic SQL
  • Toán tử tập hợp SQL
  • Toán tử khôn ngoan trong SQL
  • Toán tử đơn nguyên SQL

Hãy thảo luận về từng toán tử với các loại của chúng.

Toán tử số học SQL

Các toán tử số học trong SQL cung cấp khả năng thực hiện các phép tính trên dữ liệu số, từ đó cho phép bạn thao tác và biến đổi dữ liệu một cách linh hoạt. Dưới đây là một cái nhìn sâu hơn về cách sử dụng các toán tử số học cụ thể trong SQL cùng với các ví dụ minh họa.

Toán tử Cộng SQL (+)

Toán tử này thực hiện phép cộng giữa hai hoặc nhiều toán hạng.

Ví dụ: Tính tổng lương và thưởng hàng tháng cho nhân viên:

SELECT Emp_Id, Emp_Name, (Emp_Salary + Emp_MonthlyBonus) AS TotalIncome
FROM Employee_details;

Toán tử Trừ SQL (-)

Toán tử này thực hiện phép trừ giữa hai toán hạng.

Ví dụ: Trừ tiền phạt khỏi lương của nhân viên:

SELECT Emp_Id, Emp_Name, (Emp_Salary - Penalty) AS NetSalary
FROM Employee_details;

Toán tử Nhân SQL (*)

Toán tử này thực hiện phép nhân giữa hai toán hạng.

Ví dụ: Tính gấp đôi lương của nhân viên:

SELECT Emp_Id, Emp_Name, (Emp_Salary * 2) AS DoubleSalary
FROM Employee_details;

Toán tử Chia SQL (/)

Toán tử này thực hiện phép chia giữa hai toán hạng.

Ví dụ: Chia lương của nhân viên cho 2:

SELECT Emp_Id, Emp_Name, (Emp_Salary / 2) AS HalfSalary
FROM Employee_details;

Toán tử Mô-đun SQL (%)

Toán tử này thực hiện phép chia lấy phần dư giữa hai toán hạng.

Ví dụ: Tính phần dư khi chia lương của nhân viên cho 3:

SELECT Emp_Id, Emp_Name, (Emp_Salary % 3) AS ModSalary
FROM Employee_details;

Trong ví dụ này, giả sử bạn có một bảng Employee_details với các cột Emp_Id, Emp_Name, Emp_Salary, và Emp_MonthlyBonus hoặc Penalty. Các truy vấn trên minh họa cách sử dụng các toán tử số học cơ bản để thực hiện các phép toán trên dữ liệu số, cho phép bạn tính toán tổng thu nhập, lương ròng sau khi trừ phạt, lương gấp đôi, một nửa lương, và phần dư của lương khi chia cho một số khác. Điều này chứng tỏ tính linh hoạt và mạnh mẽ của SQL trong việc xử lý và phân tích dữ liệu số trong cơ sở dữ liệu.

Toán tử so sánh trong SQL

Toán tử so sánh trong SQL là công cụ mạnh mẽ, cho phép so sánh giữa các giá trị trong cơ sở dữ liệu và kiểm tra mối quan hệ giữa chúng như bằng nhau, lớn hơn hoặc nhỏ hơn. Các toán tử này thường được sử dụng trong mệnh đề WHERE của truy vấn SQL để lọc ra những dữ liệu thỏa mãn điều kiện cụ thể.

Toán tử Bằng SQL (=)

Toán tử = trả về giá trị TRUE khi hai toán hạng bên trái và bên phải có giá trị bằng nhau.

Ví dụ: Tìm tất cả nhân viên có mức lương là 30000.

SELECT * FROM Employee_details WHERE Emp_Salary = 30000;

Toán tử Không Bằng SQL (!= hoặc <>)

Toán tử != hoặc <> được sử dụng để trả về giá trị TRUE khi hai toán hạng không bằng nhau.

Ví dụ: Lấy tất cả nhân viên có mức lương không phải là 45000.

SELECT * FROM Employee_details WHERE Emp_Salary != 45000;

Toán tử Lớn Hơn SQL (>)

Toán tử > kiểm tra xem giá trị của toán hạng bên trái có lớn hơn giá trị của toán hạng bên phải không.

Ví dụ: Lấy tất cả nhân viên có ID lớn hơn 202.

SELECT * FROM Employee_details WHERE Emp_Id > 202;

Toán tử Lớn Hơn hoặc Bằng SQL (>=)

Toán tử >= trả về giá trị TRUE nếu toán hạng bên trái lớn hơn hoặc bằng toán hạng bên phải.

Ví dụ: Lấy tất cả nhân viên có ID lớn hơn hoặc bằng 202.

SELECT * FROM Employee_details WHERE Emp_Id >= 202;

Toán tử Nhỏ Hơn SQL (<)

Toán tử < cho biết giá trị của toán hạng bên trái nhỏ hơn giá trị của toán hạng bên phải.

Ví dụ: Lấy tất cả nhân viên có ID nhỏ hơn 204.

SELECT * FROM Employee_details WHERE Emp_Id < 204;

Toán tử Nhỏ Hơn hoặc Bằng SQL (<=)

Toán tử <= kiểm tra xem toán hạng bên trái có nhỏ hơn hoặc bằng toán hạng bên phải không.

Ví dụ: Lấy tất cả nhân viên có ID nhỏ hơn hoặc bằng 203.

SELECT * FROM Employee_details WHERE Emp_Id <= 203;

Các toán tử so sánh này đều đóng vai trò thiết yếu trong việc xây dựng các câu lệnh SQL, giúp phân tích và truy vấn dữ liệu một cách chính xác và linh hoạt. Thông qua việc áp dụng các toán tử này, người dùng có thể dễ dàng lọc và xác định các bộ dữ liệu cụ thể từ một lượng lớn dữ liệu trong cơ sở dữ liệu.

Các toán tử logic trong SQL

Các toán tử logic trong SQL là công cụ mạnh mẽ, cho phép bạn thực hiện các phép toán Boolean và so sánh dữ liệu dựa trên các điều kiện cụ thể. Các toán tử này cực kỳ hữu ích trong việc lọc dữ liệu và truy vấn cơ sở dữ liệu để tìm kiếm thông tin chính xác và có ý nghĩa.

Toán tử ALL

Toán tử ALL cho phép bạn so sánh một giá trị với mọi giá trị trong một tập hợp hoặc truy vấn con. Điều này hữu ích khi bạn cần đảm bảo rằng một điều kiện áp dụng cho tất cả các bản ghi của một truy vấn.

Ví dụ:

SELECT Emp_Name FROM Employee_details
WHERE Emp_Salary > ALL (SELECT Emp_Salary FROM Employee_details WHERE Emp_City = 'Jaipur');

Trong ví dụ này, truy vấn sẽ trả về tên của những nhân viên có mức lương cao hơn mức lương của tất cả nhân viên sống ở Jaipur.

Toán tử AND

Toán tử AND kết hợp nhiều điều kiện và chỉ trả về TRUE khi tất cả các điều kiện đều được thoả mãn.

Ví dụ:

SELECT * FROM Employee_details
WHERE Emp_Salary = 25000 AND Emp_City = 'Delhi';

Truy vấn này sẽ trả về thông tin của những nhân viên có mức lương là 25000 và sống ở Delhi.

Toán tử OR

Toán tử OR trả về TRUE nếu ít nhất một trong các điều kiện được thoả mãn.

Ví dụ:

SELECT * FROM Employee_details
WHERE Emp_Salary = 25000 OR Emp_City = 'Delhi';

Truy vấn này sẽ trả về thông tin của những nhân viên có mức lương là 25000 hoặc sống ở Delhi.

Toán tử BETWEEN

Toán tử BETWEEN cho phép bạn lọc dữ liệu trong một khoảng cụ thể, bao gồm cả giới hạn trên và dưới.

Ví dụ:

SELECT * FROM Employee_details
WHERE Emp_Salary BETWEEN 20000 AND 40000;

Truy vấn này sẽ trả về thông tin của những nhân viên có mức lương từ 20000 đến 40000.

Toán tử IN

Toán tử IN cho phép bạn kiểm tra xem một giá trị có tồn tại trong một danh sách các giá trị cụ thể hay không.

Ví dụ:

SELECT * FROM Employee_details
WHERE Emp_Id IN (202, 204, 205);

Truy vấn này sẽ trả về thông tin của những nhân viên có ID là 202, 204, hoặc 205.

Toán tử NOT

Toán tử NOT đảo ngược giá trị của một điều kiện, trả về TRUE khi điều kiện không được thoả mãn.

Ví dụ:

SELECT * FROM Employee_details
WHERE NOT Emp_City = 'Delhi';

Truy vấn này sẽ trả về thông tin của những nhân viên không sống ở Delhi.

Toán tử LIKE

Toán tử LIKE được sử dụng để tìm kiếm mẫu văn bản với các ký tự đại diện.

Ví dụ:

SELECT * FROM Employee_details
WHERE Emp_Name LIKE 'S%';

Truy vấn này sẽ trả về thông tin của những nhân viên có tên bắt đầu bằng chữ “S”.

Toán tử ANY

Toán tử ANY so sánh giá trị với bất kỳ giá trị nào trong một tập hợp hoặc truy vấn con và trả về TRUE nếu ít nhất một trong các so sánh là đúng.

Ví dụ:

SELECT * FROM Employee_details
WHERE Emp_Salary > ANY (SELECT Emp_Salary FROM Employee_details WHERE Emp_City = 'Delhi');

Truy vấn này sẽ trả về thông tin của những nhân viên có mức lương cao hơn mức lương của bất kỳ nhân viên nào sống ở Delhi.

Các toán tử logic trong SQL cung cấp một cách linh hoạt và mạnh mẽ để tạo ra các truy vấn phức tạp và đa dạng, cho phép bạn lọc và phân tích dữ liệu một cách chính xác. Sự kết hợp giữa các toán tử này với mệnh đề WHERE, cũng như sự sử dụng các toán tử như LIKE với ký tự đại diện, mở ra khả năng truy xuất và tương tác với dữ liệu theo nhiều cách mà không giới hạn ở các so sánh đơn giản.

Nhưng cũng cần lưu ý, khi sử dụng các toán tử logic, đặc biệt là OR, ANDNOT, có thể dễ dàng tạo ra các truy vấn phức tạp với hiệu suất không tối ưu. Để đảm bảo hiệu suất truy vấn, hãy cân nhắc việc tối ưu hóa truy vấn và sử dụng chỉ mục (indexes) một cách thông minh.

Toán tử SET trong SQL

Toán tử UNION

Toán tử UNION loại bỏ bản ghi trùng lặp và kết hợp kết quả của hai hoặc nhiều câu lệnh SELECT thành một tập hợp kết quả duy nhất.

Ví dụ:

SELECT Emp_Name FROM Employee_details1
UNION
SELECT Emp_Name FROM Employee_details2;

Truy vấn này sẽ trả về danh sách tên nhân viên duy nhất từ cả hai bảng Employee_details1Employee_details2 mà không có bất kỳ bản ghi trùng lặp nào.

Toán tử UNION ALL

Toán tử UNION ALL kết hợp tất cả kết quả từ hai hoặc nhiều câu lệnh SELECT, bao gồm cả bản ghi trùng lặp.

Ví dụ:

SELECT Emp_Name FROM Employee_details1
UNION ALL
SELECT Emp_Name FROM Employee_details2;

Truy vấn này sẽ trả về danh sách tên nhân viên từ cả hai bảng Employee_details1Employee_details2, bao gồm cả bản ghi trùng lặp.

Toán tử INTERSECT

Toán tử INTERSECT trả về kết quả chung từ hai câu lệnh SELECT. Lưu ý rằng không phải tất cả các hệ quản trị cơ sở dữ liệu SQL đều hỗ trợ toán tử INTERSECT.

Ví dụ:

SELECT Emp_City FROM Employee_details1
INTERSECT
SELECT Emp_City FROM Employee_details2;

Truy vấn này sẽ trả về danh sách các thành phố xuất hiện trong cả hai bảng Employee_details1Employee_details2.

Ghi chú về Toán tử Bitwise

Các toán tử Bitwise thực hiện thao tác trên dạng biểu diễn nhị phân của giá trị số nguyên. Chúng không phải là “toán tử một ngôi” như đã đề cập trước đó mà thực sự áp dụng cho hai toán hạng trong thao tác như AND (&), OR (|).

Ví dụ Bitwise AND:

SELECT 6 & 3;

Truy vấn này sẽ trả về 2 vì biểu diễn nhị phân của 6 là 110 và của 3 là 011; khi thực hiện phép AND, kết quả là 010 tương ứng với giá trị 2 trong hệ thập phân.

Ví dụ Bitwise OR:

SELECT 6 | 3;

Truy vấn này sẽ trả về 7 vì biểu diễn nhị phân của 6 là 110 và của 3 là 011; khi thực hiện phép OR, kết quả là 111 tương ứng với giá trị 7 trong hệ thập phân.

Toán tử EXCEPT (hoặc MINUS trong một số RDBMS)

Toán tử EXCEPT trả về kết quả từ tập dữ liệu đầu tiên mà không có trong tập dữ liệu thứ hai.

Ví dụ:

SELECT Emp_City FROM Employee_details1
EXCEPT
SELECT Emp_City FROM Employee_details2;

Truy vấn này sẽ trả về danh sách các thành phố từ bảng Employee_details1 mà không xuất hiện trong bảng Employee_details2.

Toán tử Unary Positive (+) và Negative (-) trong SQL

Toán tử dương một ngôi (+) không thay đổi giá trị số, trong khi toán tử phủ định một ngôi (-) chuyển đổi giá trị số thành giá trị âm.

Ví dụ về toán tử Positive:

SELECT +Emp_Salary FROM Employee_details WHERE Emp_Id = 201;

Truy vấn này chỉ đơn giản trả về mức lương của nhân viên có Emp_Id là 201 như một số dương.

Ví dụ về toán tử Negative:

SELECT -Emp_Salary AS NegativeSalary FROM Employee_details WHERE Emp_Id = 202;

Truy vấn này chuyển đổi mức lương của nhân viên có Emp_Id là 202 thành số âm, biểu thị là NegativeSalary.

Toán tử Unary Bitwise NOT (~)

Toán tử Bitwise NOT (~) chuyển đổi mỗi bit trong số nguyên: 0 thành 1 và 1 thành 0.

Ví dụ:

SELECT ~Emp_Id AS InvertedId FROM Employee_details WHERE Emp_Id = 203;

Truy vấn này sẽ áp dụng toán tử Bitwise NOT lên Emp_Id của nhân viên có Emp_Id là 203 và trả về kết quả dưới tên cột InvertedId.

Lưu ý: Hãy đảm bảo rằng các truy vấn và cách sử dụng toán tử phù hợp với hệ quản trị cơ sở dữ liệu bạn đang sử dụng, vì mỗi hệ thống có thể có cách hỗ trợ và triển khai các toán tử khác nhau.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now