Để đếm số bảng ghi của bảng dữ liệu, ta dùng hàm COUNT với cú
pháp câu lệnh như sau:
SELECT COUNT(*) AS total_founds
FROM table_name
Ngoài ra để đếm số bảng ghi thỏa một điều kiện lọc nào đó ta có
thể thêm vào mệnh đề WHERE trong câu truy vấn trên với cú pháp như sau:
SELECT COUNT(*) AS total_founds
FROM table_name
WHERE conditions
Chú ý: COUNT(*) trả về số dòng của bảng dữ liệu
tính luôn ngay cả khi một cột trong dòng đó có giá trị NULL. Để đếm những bảng
ghi có giá trị khác NULL trên một cột nào đó ta dùng cú pháp sau:
SELECT COUNT(column)
FROM table_name
So sánh 2 bảng
Trong lập trình CSDL, đôi khi bạn
phải so sánh 2 bảng (hoặc hai bảng ảo hay nhiều hơn) để tìm ra những bảng ghi
không phù hợp và sự khác biệt giữa 2 bảng ghi trong 2 bảng có cùng giá trị
khóa.
Ví dụ: khi sao chuyển csdl, ta có
một csdl cũ và một csdl mới. Hai csdl này có lược đồ khác nhau. Nhiệm vụ của
chúng ta là chuyển toàn bộ dữ liệu từ csdl cũ sang csdl mới. Làm thế nào để
chúng ta có thể kiểm chứng được kết quả? Khi ấy, chúng ta phải sử
dụng kĩ thuật được đề cập đến trong bài này để xem xét kết quả. Những
bảng ghi nào thiếu trong csdl củ? những bảng ghi nào được sao chép sai trong
csdl mới?
Một trong những cách nhanh nhất và
dễ nhất là sử dụng UNION. Ý tưởng là ghép 2 bảng dữ liệu với tất cả các cột mà
chúng ta muốn so sánh. Rồi chúng ta gộp kết quả này trên các cột mà chúng ta
muốn so sánh. Nếu tất cả các cột được sao chép đúng thì CONT(*) = 2. Ngược lại,
nếu có bảng ghi ở bảng dữ liệu này mà lại không xuất hiện trong bảng dữ liệu
kia thì COUNT(*) = 1.
Cú pháp:
SELECT MIN (tbl_name) AS tbl_name, PK, column_list
FROM
(
SELECT ' source_table ' as tbl_name, S.PK, S.column_list
FROM source_table AS S
UNION ALL
SELECT 'destination_table' as tbl_name, D.PK, D.column_list
FROM destination_table AS D
) AS alias_table
GROUP BY PK, column_list
HAVING COUNT (*) = 1
ORDER BY PK
Nếu 2 bảng đạt yêu cầu thì không có dòng dữ liệu
nào được trả về trong câu truy vấn trên.
Nối xâu
Hầu hết các hệ quản trị CSDL đều cho
phép chúng ta nối các xâu lại với nhau bằng cách này hay cách khác.
Ví dụ: để nối 2 xâu lại với nhau
· MS SQL Server sử dụng toán tử +
· Oracle sử dụng toán tử || hoặc hàm concat
· MySQL sử dụng hàm concat
Cú pháp:
CONCAT(str1,str2,...)
Hàm này nối hai hay nhiều xâu lại
với nhau và trả về một xâu kết quả duy nhất. Nếu tham số là giá trị số thì nó
cũng sẽ được chuyển kiểu thành xâu. Nếu tất cả các tham số là NULL thì giá trị
trả về là NULL.
Ví dụ 1:
SELECT CONCAT(contactLastname,', ',contactFirstname) fullname
FROM customers
LIMIT 5
(Video minh họa)
Để nối các xâu lại với nhau đồng
thời chỉ định kí tự phân cách giữa các xâu (là dấu , hay khoảng trắng, .v.v.)
chúng ta sử dụng hàm sau:
CONCAT_WS(seperator,str1,str2,...)
Ghi chú: tham số đầu tiên (seperator) xác định kí tự phân cách.
Tiếp theo là các xâu con sẽ được nối lại thành một xâu lớn hơn.
Ví dụ 2:
SELECT CONCAT_WS(', ',contactLastname,contactFirstname) fullname
FROM customers
LIMIT 5
(video minh họa)
Ví dụ 3:
SELECT CONCAT_WS(char(13),
CONCAT_WS(' ',contactLastname,contactFirstname),
addressLine1,
addressLine2,
CONCAT_WS(' ',postalCode,city),
country,
CONCAT_WS(char(13),'')
) AS Customer_Address
FROM customers
LIMIT 2
Không có nhận xét nào:
Đăng nhận xét