<< Chapter < Page | Chapter >> Page > |
Các phép toán thường được dùng nhất trên các chuỗi là phép đối chiếu mẫu sử dụng toán tử LIKE. Ta mô tả các mẫu dùng hai ký tự đặc biệt:
"Tìm tên của tất cả các khách hàng tên phố của họ chứa chuỗi con ‘Main’
SELECT Customer_name
FROM Customer
WHERE Customer_street LIKE ‘%Main%’
Nếu trong chuỗi mẫu có chứa các ký tự % _ \ , để tránh nhầm lẫn ký tự với"dấu hiệu thay thế", SQL sử dụng cách viết: ký tự escape (\) đứng ngay trước ký tự"đặc biệt". Ví dụ nếu chuỗi mẫu là ab%cd được viết là ‘ab\%cd’, chuỗi mẫu là ab_cde được viết là ‘ab\_cde’, chuỗi mẫu là ab\cd được viết là ‘ab\\cd’
SQL cho phép đối chiếu không tương xứng bằng cách sử dụng NOT LIKE
SQL cũng cho phép các hàm trên chuỗi: nối hai chuỗi (|), trích ra một chuỗi con, tìm độ dài chuỗi, biến đổi một chuỗi chữ thường sang chuỗi chữ hoa và ngược lại ...
Mệnh đề ORDER BY tạo ra sự trình bày các dòng kết quả của một câu vấn tin theo một trình tự. Để liết kê theo thứ tự alphabet tất cả các khách hàng có vay ở chi nhánh Perryridge:
SELECT DISTINCT Customer_name
FROM Borrower, Loan
WHERE Borrower.Loan_number = Loan.Loan_number AND
Branch_name = ‘Perryridge’
ORDER BY Customer_name;
Mặc nhiên, mệnh đề ORDER BY liệt kê theo thứ tự tăng, tuy nhiên ta có thể làm liệt kê theo thứ tự giảm/tăng bằng cách chỉ rõ bởi từ khoá DESC/ ASC
SELECT *
FROMLoan
ORDER BY Amount DESC, Loan_number ASC;
SQL92 có các phép toán UNION, INTERSECT, EXCEPT chúng hoạt động giống như các phép toán hợp, giao, hiệu trong đại số quan hệ. Các quan hệ tham gia vào các phép toán này phải tương thích (có cùng tập các thuộc tính).
“tìm kiếm tất cả các khách hàng có vay, có tài khoản hoặc cả hai ở ngân hàng”
(SELECT Customer_name
FROM Depositor)
UNION
(SELECT Customer_name
FROM Borrower);
Phép toán hợp UNION tự động loại bỏ các bộ trùng, nếu ta muốn giữ lại các bộ trùng ta phải sử dụng UNION ALL
(SELECT Customer_name
FROM Depositor)
UNION ALL
(SELECT Customer_name
FROM Borrower);
“tìm kiếm tất cả các khách hàng có vay và cả một tài khoản tại ngân hàng”
(SELECT DISTINCT Customer_name
FROM Depositor)
INTERSECT
(SELECT DISTINCT Customer_name
FROM Borrower);
Phép toán INTERESCT tự động loại bỏ các bộ trùng, Để giữ lại các bộ trùng ta sử dụng INTERSECT ALL
(SELECT Customer_name
FROM Depositor)
INTERSECT ALL
(SELECT Customer_name FROM Borrower);
“Tìm kiếm tất cả các khách hàng có tài khoản nhưng không có vay tại ngân hàng”
(SELECT Customer_name
FROM Depositor)
EXCEPT
(SELECT Customer_name
FROM Borrower);
EXCEPT tự động loại bỏ các bộ trùng, nếu muốn giữ lại các bộ trùng phải dùng EXCEPT ALL
(SELECT Customer_name
FROM Depositor)
Notification Switch
Would you like to follow the 'Hệ quản trị cơ sở dữ liệu' conversation and receive update notifications?