400 likes | 566 Views
Xác định dữ liệu tồn tại trong bảng. Không sử dụng COUNT(*) để chỉ định 1 table có dữ liệu hay ko : SELECT COUNT(*) FROM DonHang Kết quả truy vấn : Nên sử dụng : SELECT TOP 1 FROM DonHang Kết quả truy vấn :. Sắp xếp kết quả truy vấn.
E N D
Xác định dữ liệu tồn tại trong bảng • Không sử dụng COUNT(*) để chỉ định 1 table có dữ liệu hay ko: SELECT COUNT(*) FROM DonHang Kết quả truy vấn : • Nên sử dụng : SELECT TOP 1 FROM DonHang Kết quả truy vấn :
Sắp xếp kết quả truy vấn • Mặc định các dòng dữ liệu trong kết quả của lệnh truy vấn tuân theo thứ tự của chúng trong bảng dữ liệu hoặc sắp xếp theo chỉ mục. Muốn dữ liệu được sắp xếp tăng hặc giảm theo giá trị của một hoặc nhiều trường, ta sử dụng lệnh ORDER BY • Cú pháp: SELECT COL1,COL2,....... FROM TABLE_NAME WHERE <SEARCHCONDITION> ORDER BY COL-NAME [DESC]
Sắp xếp kết quả truy vấn • Ví dụ: Select * from KhachHang where GioiTinh Like ‘Nam‘ order by MaKH Kết quả :
Phép hợp • Phép hợp được sử dụng trong trường hợp ta cần gộp kết quả của 2 hay nhiều truy vấn thành một kết quả duy nhất • Cú pháp: UNION [ALL] Câu_lệnh_2 [UNION [ALL] Câu_lệnh_3] ... [UNION [ALL] Câu_lệnh_n] [ORDER BY cột_sắp_xếp] [COMPUTE danh_sách_hàm_gộp [BY danh_sách_cột]]
Phép hợp • Ví dụ : Giả sử có 2 table • Câu lệnh Select A,B from Table1 Union Select D,E from Table2
Phép hợp • Kết quả : • Mặc định nếu trong kết quả truy vấn có dòng dữ liệu giống nhau thì trong kết quả truy vấn chỉ giữ lại 1 dòng
Phép giao • Phép giao trả về tất cả các dòng chung giữa các câu lệnh truy vấn • Số lượng các cột và kiểu dữ liệu của các cột trong câu lệnh truy vấn phải được giống nhau trong tất cả các câu lệnh SELECT được sử dụng trong truy vấn. • Khi đảo ngược thứ tự của bảng thì không thay đổi kết quả truy vấn • Phép giao không bỏ qua giá trị NULL
Phép giao • Hiển thị danh sách khách hàng có tồn tại trong bảng HoaDon SELECT MaKH FROM KhachHang INTERSECT SELECT MaKH FROM HoaDon
Phép trừ • Phép trừ trả về các hàng trong kết quả quả truy vấn mà không tồn tại ở bảng thứ 2 • Số lượng các cột và kiểu dữ liệu của các cột trong câu lệnh truy vấn phải được giống nhau trong tất cả các câu lệnh SELECT được sử dụng trong truy vấn • Tất cả các cột trong mệnh đề WHERE phải trong mệnh đề SELECT
Phép trừ • Hiển thị tất cả các khách hàng mà không đặt hàng SELECT MaKH FROM KhachHang MINUS SELECT MaKH FROM HoaDon
JOIN • Inner join Mụcđíchcủanólàkhibạnmuốntruyxuất 1 thông tin nàođómànóđượctìmthấytrong 2 bảng. Nótrảvềkếtquảlàcácbảnghimàtrườngđược join ở haibảngkhớpnhau, cácbảnghichỉxuấthiện ở mộttronghaibảngsẽbịloại. • Cross join Mỗibảnghicủabảng A đượckếthợpvớitấtcảcácbảnghicủabảng B, tạothànhmộttíchĐề-cácgiữahaibảng (sốbảnghitrảvềbằngtíchcủasốbảnghitronghaibảng). • Full outer join Kết quả gồm tất cả các bản ghi của cả hai bảng. Với các bản ghi chỉ xuất hiện trong một bảng thì các cột dữ liệu từ bảng kia được điền giá trị NULL.
INNER JOIN • Outer join Lấy về các bản ghi có mặt trong cả hai bảng và cả các bản ghi chỉ xuất hiện ở một trong hai bảng. • Left-outer join Tất cả các bản ghi từ bảng được chứa trong liên kết, cùng với các bản ghi trong bảng hai mà ở đó các trường hợp cụ thể khớp với các trường hợp tương ứng trong 1 bảng. • Right-outer join Tất cả các bản ghi từ bảng ghi thứ 2 được đưa vào liên kết cùng với các bản ghi từ bảng 1 mà có các trường khớp với các trường trong bảng 2. • SELF join SELF JOIN là một loại sql join được sử dụng để tham gia một table, ngoại trừ hai trường hợp của cùng một table sẽ được tham gia vào truy vấn.
INNER JOIN Cú pháp của Inner Join: Select Column_name1 From Table_name1 Inner Join Table_name2 On Table_name1.Column_name = Table_name2.Column_name Ví dụ: select tongtien_hd from tbl_hoadon inner join tbl_khachhang on tbl_hoadon.email_kh = tbl_khachhang.email_kh where email_kh=4
LEFT-OUTER JOIN Cú pháp của Left-Outer Join: Select * from table_name1 Left join table_name2 ON table_name1.Column_name1=table_name2.Column_name2 Ví dụ: Select * From tbl_khachhang left join tbl_hoadon on tbl_khachhang.Email_kh = tbl_hoadon.Email_kh
RIGHT-OUTER JOIN Cú pháp của Right-Outer Join: select * from table_name1 right join table_name2 on table_name1.column_name1=table_name2.column_name2 Ví dụ: Select * From tbl_khachhang left join tbl_hoadon on tbl_khachhang.Email_kh = tbl_hoadon.Email_kh
FULL-OUTER JOIN Cú pháp của Right-Outer Join: Select * From table_name1 Full outer join table_name2 ON table_name1.Column_name1=table_name2.Column_name2 Ví dụ: Select * From tbl_khachhang full outer join tbl_hoadon on tbl_khachhang.Email_kh = tbl_hoadon.Email_kh
CROSS JOIN Cú pháp của Cross Join: Select * From table_name1 cross join table_name2 Ví dụ: Select * From tbl_khachhang cross join tbl_hoadon
CROSS JOIN • Kết quả :
SELF JOIN Cú pháp của Cross Join: SELECT a.Sales_person_id, a.Name, a.Manager_id, b.Sales_person_id, b.Name FROM sales_person a, sales_person b WHERE a.Manager_id = b.Sales_person_id; Ví dụ:
Aggregate functions • Thuộc tính Hàm tổng hợp(hàm gộp) được sử sụng để tính tổng giá trị hay thống kê cho toàn bảng trên mỗi nhóm dữ liệu. • Các hàm tổng hợp
Aggregate functions Ví dụ: SUM([DISTINCT|ALL]n) SELECT maHocsinh,sum(diemThi) from bangThi where lanThi='1' groupby maHocsinh Kết quả:
Aggregate functions Ví dụ: AVG([DISTINCT|ALL]n) SELECT maHocsinh,avg(diemThi)as diemTB from bangThi where lanThi='2' groupby maHocsinh; Kết quả:
Aggregate functions Ví dụ: MAX ([DISTINCT|ALL]expr) SELECTDISTINCTmax(diemThi)as maxDiemthi from bangThi where lanThi='2'; kết quả:
Aggregate functions Ví dụ: MIN([DISTINCT|ALL]expr) SELECTDISTINCTmin(diemThi)as minDiemthi from bangThi where lanThi='2'; Kết quả:
Aggregate functions Ví dụ: COUNT({*|[DISTINCT|ALL]expr}) SELECTDISTINCTcount(diemThi)as dem from bangThi where lanThi='2'; Kết quả:
Aggregate functions Ví dụ: COUNT(*) SELECTDISTINCTcount(*) from bangThi as soDong; Kết quả:
Group By • Các hàng liên quan có thể nhóm lại với nhau bằng mệnh đề GROUP BY bằng cách chỉ ra một cột để nhóm theo cột đó. • Ví dụ: Có bảng Sales:
Group By • Thực hiện câu lệnh SQL: SELECT Company, SUM(Amount) FROM Sales Kết quả:
Group By • Khi sử dụng GROUP BY: SELECT Company, SUM(Amount) FROM SalesGROUP BY Company Kết quả:
HAVING • Được sử dụng để xác định điều kiện về nhóm • Ví dụ: Sử dụng lại bảng Sales ở trên, với câu lệnh sql: SELECT Company, SUM(Amount) FROM SalesGROUP BY CompanyHAVING SUM(Amount) > 10000
HAVING • Kết quả:
Independent sub-queries • Inner query is independent of outer query. • Inner query is executed first and the results are stored. • Outer query then runs on the stored results.
Using sub-queries (2) • Trong truy vấn trên, truy vấn con sẽ được thực thi trước:
Using sub-queries (3) • Tiếp theo, truy vấn cha sẽ lấy giá trị được trả về từ truy vấn còn, và thực thi truy vấn của chính nó.
Using sub-queries (4) • Truy vấn con độc lập với truy vấn cha • Truy vấn con được thực thi trước , kết quả của truy vấn đó sẽ được lưu lại • Truy vấn cha sẽ lấy kết quả đó để thực hiện truy vấn của chính nó
So sánh trong Sub-queries • Kết quả trả về ở truy vấn con phải có một cột duy nhất