1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cơ sở dữ liệu - Bài 4: Các phát biểu T- SQL dạng lựa chọn dữ liệu

10 34 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

Bài giảng Cơ sở dữ liệu - Bài 4: Các phát biểu T- SQL dạng lựa chọn dữ liệu trình bày các phát biểu Select dạng đơn giản, mệnh đề Order By, từ khóa Distinct, sao chép dữ liệu sang bảng dữ liệu mới với mệnh đề Into,... Mời các bạn cùng tham khảo.

Phát biểu Select dạng đơn giản  Chọn tất cột từ bảng liệu Select * from Tên_bảng Ví dụ 21: Bài 4: Các phát biểu T-SQL dạng lựa chọn liệu 2/8/2018 Microsoft SQL Server 2005 Select * from VATTU Chọn cột xác định từ bảng: Select Danh_sách_các_cột From Tên_bảng Ví dụ 22: Select MaVTu,TenVTu,PhanTram From VATTU  2/8/2018 Phát biểu Select From dạng đơn giản Microsoft SQL Server 2005 Phát biểu Select dạng đơn giản Tạo cột từ biểu thức tính tốn: Cú pháp: Biểu_thức [as] Tên_cột_mới Ví dụ 24: Select STT,rtrim(Hodem)+' '+Rtrim(Ten) as Hoten, Diem From Diem   Đặt tên hiệu cho cột mệnh đề select: Cú pháp: Tên cột [as] Bí_danh Ví dụ 23: Select MaVTu as Ma,TenVTu as Tenvattu,PhanTram From VATTU Tên cột Biểu thức Bí danh 2/8/2018 Microsoft SQL Server 2005 2/8/2018 Microsoft SQL Server 2005 Từ khóa Distinct Phát biểu Select dạng đơn giản  Ví dụ 25: Truy vấn hiển thị liệu bảng CTPNHAP có bổ sung cột Thanhtien (tính = số lượng nhập* đơn giá nhập)  Cho phép loại bỏ ghi trùng lặp (được tính  cột liệu khai báo phát biểu select) Ví dụ 26: Truy vấn chọn MaVTu không trùng Các cặp MaVTu trùng 2/8/2018 Microsoft SQL Server 2005 2/8/2018 Mệnh đề Order By Microsoft SQL Server 2005 Từ khóa Top  Cho phép xếp liệu kết theo chiều tăng/giảm cột/biểu thức: Select Danh_sách_các_cột From Tên_bảng Order by Danh_sách_tên_cột/Biểu thức [ASC|DESC]  Ví dụ 27: Kết Select * From CTPNHAP Order by SoPn,MaVTu 2/8/2018 Microsoft SQL Server 2005 Cú pháp: Select Top n [Percent] [With ties] From Tên_bảng [Order by ] Trong đó: - Nếu n khơng kèm từ khóa Percent cho phép chọn n ghi - Nếu n có kèm từ khóa Percent cho phép lọc n % ghi - Lựa chọn With ties cho phép trả ghi giá trị với ghi cuối tìm thấy theo trường xếp (bắt buộc phải kèm với Order by)  2/8/2018 Microsoft SQL Server 2005 Từ khóa Top   Từ khóa Top Ví dụ 28: Lọc ghi bảng CTPNHAP (các trường hiển thị gồm MaVTu, SlNhap, DgNhap): Select Top MaVTu, SlNhap, DgNhap from CTPNHAP Ví dụ 29: Lọc % ghi bảng CTPNHAP: Select Top Percent MaVTu, SlNhap, DgNhap from CTPNHAP 2/8/2018 Microsoft SQL Server 2005  Trường hợp khơng có with ties 2/8/2018 Sao chép liệu sang bảng liệu với mệnh đề Into Cú pháp: Select Danh_sách_các_cột Into Tên_bảng_mới From Tên_bảng_dl * Lưu ý: Bảng là: - Bảng liệu - Bảng tạm cục (thêm ký hiệu # trước tên bảng) - Bảng tạm toàn cục (thêm cặp ký hiệu ## trước tên bảng) Microsoft SQL Server 2005 Trường hợp có with ties Microsoft SQL Server 2005 10 Sao chép liệu sang bảng liệu với mệnh đề Into  2/8/2018 Ví dụ 30: Lọc ghi bảng CTPNHAP với số lượng nhập nhỏ Ví dụ 31: Sao chép liệu từ bảng CTPNHAP sang bảng CTPNHAP_tam, có bổ sung cột ThanhTien (tính = số lượng nhập * đơn giá nhập)  Select *, SlNhap*DgNhap as ThanhTien Into #CTPNHAP_tam From CTPNHAP  11 2/8/2018 Microsoft SQL Server 2005 12 Lọc liệu với mệnh đề Where Phát biểu Select với mệnh đề Group By Cú pháp: Where (điều_kiện_lọc) Trong đó: điều_kiện_lọc biểu thức logic thường xây dựng từ phép so sánh: =, , != toán tử like, and, or, not, between and, is null, is not null, in  Ví dụ 32: Lọc ghi từ bảng CTPNHAP mà mã vật tư có chứa xâu ký tự ‘DD’  Select * From CTPNHAP where MaVTu like '%DD%' Thường dùng cần tính tốn giá trị theo nhóm liệu  Cú pháp: Group by Danh_sách_tên_trường Lưu ý: Những trường nằm sau Group by dùng làm tiêu chí nhóm liệu, trường cịn lại sau mệnh đề Select mà khơng tham gia vào Group by phải sử dụng hàm thống kê để tính giá trị, ví dụ: max, min, sum, avg, count, … 2/8/2018 2/8/2018  Microsoft SQL Server 2005 13  Ví dụ 33: Thống kê giá trị cho phiếu nhập (bổ sung cột ThanhTien) Microsoft SQL Server 2005 14 Phát biểu Select với mệnh đề Having Phát biểu Select với mệnh đề Group By 2/8/2018 Microsoft SQL Server 2005 15 Cho phép lọc lại liệu sau sử dụng mệnh đề Group by để nhóm liệu  Cú pháp: Having điều_kiện_lọc_dữ_liệu  Ví dụ 34: Lọc lại liệu ví dụ 33 với điều kiện Sopn'N001'  2/8/2018 Microsoft SQL Server 2005 16 Phát biểu Select với mệnh đề Having Phát biểu Select với mệnh đề Compute  Thống kê liệu cuối kết truy vấn  Cú pháp: Compute count/max/min/sum/avg(Tên_cột) Lưu ý: Trường hợp điều kiện lọc liên quan đến cột tạo, cần viết lại biểu thức tạo cột khơng sử dụng tên cột Ví dụ 35: Sửa điều kiện lọc ví dụ 34 thành ThanhTien>60000000  Ví dụ 36: Tổng Số lượng nhập, Đơn giá nhập cho bảng CTPNHAP Kết thống kê Không sử dụng tên cột ThanhTien 2/8/2018 Microsoft SQL Server 2005 17 2/8/2018 Phát biểu Select với mệnh đề Compute by  Thống kê liệu theo nhóm giá trị trường thống kê nằm sau By Microsoft SQL Server 2005 18 Phát biểu Select với mệnh đề Compute by  Ví dụ 37: Thống kê tổng SlNhap, tổng DgNhap theo Sopn Cú pháp: Order By Tên_cột Compute count/max/min/sum/avg(Tên_cột) By Tên_cột Lưu ý: Tên_cột nhóm liệu đứng sau Order By Tên_cột đứng sau By cuối không xuất danh sách Tên_cột đứng sau Compute  2/8/2018 Microsoft SQL Server 2005 19 2/8/2018 Microsoft SQL Server 2005 20 Phát biểu Select với mệnh đề Join Phát biểu Select với mệnh đề Join Ví dụ 38: Thống kê Nhà cung cấp đặt hàng, liệu hiển thị gồm: Tên nhà cung cấp, số đơn hàng, ngày đặt hàng  Liên kết 2/nhiều bảng có quan hệ để lấy liệu chung  Cú pháp: (trường hợp liên kết bảng) Select Danh_sách_cột From Tên_bảng Inner {left/right/full [outer] } Join Tên_bảng_quan_hệ On Điều_kiện_quan_hệ Trong đó: Inner join: liệu bắt buộc phải xuất bảng Left/right/full: liệu bắt buộc phải xuất bên bảng thuộc nhánh trái/nhánh phải/hoặc nhánh trái nhánh phải * Lưu ý: Liên kết Full join sử dụng CSDL, bảng khơng có mối liên kết với  2/8/2018 2/8/2018 21 Microsoft SQL Server 2005 Phát biểu Select với mệnh đề Join Ví dụ 39: Thống kê nhà cung cấp (kể nhà cung cấp chưa đặt hàng) với đơn đặt hàng tương ứng Dùng left join Dùng right join Microsoft SQL Server 2005 22 Phát biểu Select với mệnh đề Join Trường hợp liên kết nhiều bảng: làm tương tự liên kết bảng  Lưu ý: Trường hợp trường chọn xuất bảng, cần rõ giá trị lấy từ bảng  Ví dụ 40: Hiển thị danh sách Tên vật tư (lấy từ bảng VATTU) với số phiếu xuất, số lượng xuất (lấy từ bảng CTPXUAT) ngày xuất (lấy từ bảng PXUAT) tương ứng Select TenVTu, CTPXUAT.SoPX, SlXuat, DgXuat,  Ngayxuat from VATTU inner join CTPXUAT on VATTU.MaVTu = CTPXUAT.MaVTu inner join PXUAT on CTPXUAT.SoPX = PXUAT.SoPX 2/8/2018 Microsoft SQL Server 2005 23 2/8/2018 Microsoft SQL Server 2005 24 Phép tốn Union Phép tốn Union Giải ví dụ 41: Select CTPX.MaVTu,TenVTu,'Xuat' as Loai, sum(SlXuat) as TongSL From CTPXUAT CTPX inner join VATTU VT on CTPX.MaVTu=VT.MaVTu Group by CTPX.MaVTu,TenVTu Union Select CTPN.MaVTu,TenVTu,'Nhap', sum(SlNhap) Bảng kết From CTPNHAP CTPN inner join VATTU VT on CTPN.MaVTu=VT.MaVTu Group by CTPN.MaVTu,TenVTu Order by MaVTu  Cho phép nối liệu tương thích kết từ câu truy vấn select  Cú pháp: Select Danh_sách_cột1 From Tên_bảng1 Union Select Danh_sách_cột2 From Tên_bảng2 [Order by Danh_sách_cột_sxếp]  Ví dụ 41: Hiển thị danh sách Mã vật tư, Tên vật tư kèm theo Loại nhập/xuất với Tổng số lượng nhập/xuất tương ứng 2/8/2018 Microsoft SQL Server 2005 25 2/8/2018 Lấy liệu kết lệnh select không kết lệnh select2  Cú pháp: Select Danh_sách_cột1 From Tên_bảng1 Except Select Danh_sách_cột2 From Tên_bảng2 [Order by Danh_sách_cột_sxếp] Ví dụ 42: Hiển thị danh sách mã vật tư, tên vật tư vật tư nhập vào kho chưa xuất lần Bảng CTPNHAP Bang CTPXUAT Truy vấn kết  Microsoft SQL Server 2005 26 Minh họa ví dụ 42 Phép tốn Except 2/8/2018 Microsoft SQL Server 2005 27 2/8/2018 Microsoft SQL Server 2005 28 Minh họa ví dụ 43 Phép tốn Intersect Lấy liệu vừa kết lệnh truy vấn select vừa kết lệnh truy vấn select2  Cú pháp: Select Danh_sách_cột1 From Tên_bảng1 Intersect Select Danh_sách_cột2 From Tên_bảng2 [Order by Danh_sách_cột_sxếp] Ví dụ 43: Hiển thị danh sách mã vật tư, tên vật tư vật tư nhập vào kho xuất lần Bảng CTPNHAP Bang CTPXUAT Truy vấn kết  2/8/2018  Microsoft SQL Server 2005 29 2/8/2018 Microsoft SQL Server 2005 30 Phân trang với phát biểu with Phân trang với phát biểu with Xét ví dụ 44 tạo bảng liệu với cột phân trang Nếu muốn hiển thị dòng liệu thứ thứ bảng vừa tạo, ta thực câu lệnh hình: 2/8/2018 Microsoft SQL Server 2005 31 2/8/2018 Microsoft SQL Server 2005 32 Lựa chọn ngẫu nhiên với NewID()  Ví dụ 45: Lấy ghi ngẫu nhiên từ bảng CTPNHAP, ta sử dụng câu lệnh Bảng CTPNHAP Select top * From CTPNHAP Order by NewID() Kết lần thực truy vấn thứ Kết lần thực truy vấn thứ hai 2/8/2018 Microsoft SQL Server 2005 33 Truy vấn Khái niệm: Là câu lệnh truy vấn chọn lựa lồng vào câu lệnh truy vấn khác  Được đặt cặp dấu ngoặc đơn  Chỉ phép tham chiếu đến cột biểu thức trả giá trị  Trả giá trị đơn lẻ danh sách giá trị  Cấp độ lồng truy vấn không giới hạn  2/8/2018 Truy vấn Microsoft SQL Server 2005 34 Truy vấn  Truy vấn trả giá trị đơn: Ví dụ 46: Hiển thị danh sách đơn đặt hàng gần nhất: Select * From DONDH Where NgayDh=(Select max(NgayDh) From DONDH) Ví dụ 47: Tìm phần trăm số lượng đặt hàng vật tư tổng cộng số lượng đặt hàng toàn vật tư Dữ liệu hiển thị gồm tên vật tư, tổng số lượng đặt theo vật tư, tổng toàn số lượng đặt, phần trăm 2/8/2018 Microsoft SQL Server 2005 35 Giải ví dụ 47: Select TenVTu, sum(SlDat)as TongSLDat, (select sum(SlDat) from CTDONDH) as Tongcong, (convert(money,Sum(SlDat))/(select sum(SlDat) from CTDONDH)*100) as PhanTram From CTDONDH CTDH inner join VATTU VT on CTDH.MaVTu=VT.MaVTu Group by TenVTu 2/8/2018 Microsoft SQL Server 2005 36 Truy vấn Truy vấn Truy vấn trả danh sách giá trị: Thường sử dụng kèm với In, not in, exists, phép so sánh =,,, Ví dụ 48: Select TenNCC,DienThoai from NHACC Where MaNCC in (Select MaNCC from DONDH where convert(char(7),NgayDh,21)='2002-01')  2/8/2018 Microsoft SQL Server 2005 37 * Sử dụng exists truy vấn: Ví dụ 49: Select TenNCC,DienThoai From NHACC NCC Where exists (Select * From DONDH DH where convert(char(7),NgayDh,21)='2002-01' and NCC.MaNCC=DH.MaNCC) 2/8/2018 Microsoft SQL Server 2005 38 Truy vấn Sử dụng phép so sánh thông thường: =,,, truy vấn để trả danh sách giá trị  bắt buộc phải kết hợp từ khóa Any, All phía trước câu truy vấn * Lưu ý: In tương đương với Any Not in tương đương với All Ví dụ 50: Danh sách nhà cung cấp chưa đặt hàng: Select TenNCC,DienThoai from NHACC where MaNCC not in (select distinct MaNCC from DONDH)  2/8/2018 Microsoft SQL Server 2005 39 10 ... Microsoft SQL Server 2005 29 2/8/2018 Microsoft SQL Server 2005 30 Phân trang với phát biểu with Phân trang với phát biểu with Xét ví dụ 44 tạo bảng liệu với cột phân trang Nếu muốn hiển thị dòng liệu. .. Group By 2/8/2018 Microsoft SQL Server 2005 15 Cho phép lọc lại liệu sau sử dụng mệnh đề Group by để nhóm liệu  Cú pháp: Having điều_kiện_lọc _dữ_ liệu  Ví dụ 34: Lọc lại liệu ví dụ 33 với điều kiện... 2/8/2018 Microsoft SQL Server 2005 17 2/8/2018 Phát biểu Select với mệnh đề Compute by  Thống kê liệu theo nhóm giá trị trường thống kê nằm sau By Microsoft SQL Server 2005 18 Phát biểu Select với

Ngày đăng: 11/05/2021, 00:06

TỪ KHÓA LIÊN QUAN