Tải bản đầy đủ (.pdf) (10 trang)

bài giảng cơ sở dữ liệu SQLServer 2000 doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (753.21 KB, 10 trang )

Bài Giảng Hệ Quản Trị Cơ Sở Dữ Liệu SQLServer 2000

Biên soạn: Dương Thành Phết – Trang 51

5.4.10. Siêu tập hợp Rollup và Cube
ðể thêm các dòng tóm tắt bổ sung tham khảo như là các siêu tập hợp, sử dụng các tóan
tử Rollup và Cube với mệnh ñề Group By
Cú pháp:

Tóan tử Rollup sinh ra các dòng siêu kết hợp
Ví dụ:
Select Sodh,Masp, Sum(SLDat) as TongSLDat
From Chitietdh
Where Sodh in('00001','00002','00003')
Group By sodh,masp With RoLLup

Sinh ra một dòng ñối với mỗi ñơn hàng cùng với thông tin tổng hợp các dòng
với giá trị Null trong MaSP thể hiển tổng số của tất cả các MaSP. Và sinh ra một dòng
tổng cộng cho tất cả các ñơn ñặt hàng
Tóan tử Cube sinh ra các dòng siêu kết hợp
SELECT <DS các cột>
FROM <TênTable>
WHERE <ðiều kiện>
[Group By <DS Các cột gom nhóm> ]
[With ROLLUP | CUBE]
This is trial version
www.adultpdf.com
Bài Giảng Hệ Quản Trị Cơ Sở Dữ Liệu SQLServer 2000

Biên soạn: Dương Thành Phết – Trang 52
Giống như tóan tử Rollup tóan tử Cube chẳng những sinh ra các giá trị trung


bình và tổng cộng ñộng mà còn trả về các dòng tổng bổ sung.
Ví dụ:
Select Sodh,Masp, Sum(SLDat) as TongSLDat
From chitietDH
Where Sodh in('00001','00002')
Group By Sodh,Masp With Cube

5.5. TƯƠNG QUAN DỮ LIỆU
Cách thực hiện kết nối ñể trích dữ liệu từ 1 hoặc nhiều bảng. Các kết quả sẽ xuất hiện
như một bảng ñơn với các cột từ tất cả các bảng ñược chỉ ñịnh trong SELECT Column_List và
so khớp với ñiều kiện tìm kiếm. Khi sử dụng nhiều Table nguồn chúng ta cần chú ý ñến mối
liên kết giữa các Table nguồn.
5.5.1. Khái niệm
 Loại kết nối - JoinType
 Inner Join (Liên kết trong bảng A và B) : Khi chọn các thông tin của bảng A hoặc
bảng B thì các thông tin ấy bắt buột phải có mặt ñồng thời trong cả 2 bảng A,B
 Left Join (Liên kết ngoài bên trái của A với B ):
Khi chọn thông tin của A: Thông tin ấy mặc nhiên ñược lấy
Khi chọn thông tin của B : Thông tin ấy phải có mặt trong A thì mới lấy ñược
 Right Join: (Liên kết ngoài bên phải của A với B ):
Khi chọn thông tin của A: Thông tin ấy phải có mặt trong B thì mới lấy ñược
Khi chọn thông tin của B : Thông tin ấy mặc nhiên ñược lấy
 Full Join (Liên kết ngoài toàn phần):
Khi chọn thông tin của A: Thông tin ấy mặc nhiên ñược lấy
Khi chọn thông tin của B : Thông tin ấy mặc nhiên ñược lấy
 Toán tử kết nối- JoinOperator
This is trial version
www.adultpdf.com
Bài Giảng Hệ Quản Trị Cơ Sở Dữ Liệu SQLServer 2000


Biên soạn: Dương Thành Phết – Trang 53
Trong SQL Server 2000 có toán tử kết nối =
5.5.2. Cú pháp kết nối
Khi thực hiện kết nối các bảng có thể sử dụng 2 cú pháp:

Hoặc

Ví dụ: Liệt kê kết quả học tập sinh viên khoa “TH” thông tin gồm : Masv, Hosv,
Tensv, Phai, Ngaysinh, Makhoa, Mamh, Diem
SELECT Sinhvien.masv, Sinhvien.hosv, Sinhvien.tensv, Sinhvien.phai,
Sinhvien.ngaysinh, Sinhvien.makhoa, Ketqua.mamh, Ketqua.diem;
FROM sinhvien , Ketqua
WHERE sinhvien.masv=ketqua.masv and Sinhvien.makhoa = "TH"
Hoặc
SELECT Sinhvien.masv, Sinhvien.hosv, Sinhvien.tensv, Sinhvien.phai,
Sinhvien.ngaysinh, Sinhvien.makhoa, Ketqua.mamh, Ketqua.diem;
FROM sinhvien INNER JOIN ketqua ON Sinhvien.masv = Ketqua.masv;
WHERE Sinhvien.makhoa = "TH"
Ghi chú: Tập kết quả của 2 cú pháp này sẽ giống nhau. Tuy nhiên có một sự khác nhau
Ví dụ: Liệt kê các sản phẩm thuộc loại 1 chưa có ñặt hàng
Cú pháp 1:
Select MaSp, TenSP, QuiCach
From SanPham
Where MaLoai=1 and MaSP Not In (Select MaSP From ChitietDH)
Cú pháp 2:
Select MaSp, TenSP, QuiCach
From SanPham Left Join ChiTietDH ON SanPham.MaSP=ChiTietDh.MaSP
Where MaLoai=1
Nhận xét:
 ðối với các câu truy vấn thông thường thì sử dụng cú pháp 1 rõ ràng và dễ hiểu hơn

SELECT <Tên Table>.<Tên cột> [, . . .]
FROM <DS Các Table>
WHERE <Tên Table 1>.<Tên cột> <Toán tử> <Tên Table2>.<Tên cột>[, . .]
SELECT <Tên Table>.<Tên cột>[, . . .]
FROM <Tên Table 1> [Loại kết nối> <Tên Table 2> ON
<Tên Table 1>.<Tên cột>=<Tên Table 2>.<Tên cột> [, . . .]
WHERE <BT ði
ều kiện>

This is trial version
www.adultpdf.com
Bài Giảng Hệ Quản Trị Cơ Sở Dữ Liệu SQLServer 2000

Biên soạn: Dương Thành Phết – Trang 54
 ðối câu truy vấn liên kết thì cú pháp 2 ngắn gọn hơn. Tuy nhiên nếu câu truy vấn có
nhiều bảng thì sẽ phức tạp hơn.
 Sử dụng cú pháp nào tùy theo người sử dụng.
5.5.3. Làm việc với các truy vấn con
Một truy vấn con có thể trả về một cột ñơn hoặc một giá trị ñơn ở bất kỳ nơi ñâu 1 giá
trị ñơn có thể sử dụng. Và có thể ñược so sanh bởi các toá tử so sánh. Các từ khoá In và Exist
Ví dụ: Liệt kê các sản phẩm Mã loại là 1 có ñặt hàng
Cú pháp 1: Select MaSp, TenSP, QuiCach
From SanPham
Where MaLoai=1 and MaSP In (Select MaSP From ChitietDH)
Cú pháp 2: Select MaSp, TenSP, QuiCach
From SanPham
Where Exists (Select * From ChiTietDh
Whrere MaSP=SanPham.MaSP and MaLoai=1)
5.5.4. Tạo Union Query – Query hợp nhất


Danh sách vùng chọn phải giống nhau trong các mệnh ñề SELECT
Ví dụ: Lliệt kê ds khách mời dự họp tất niên gồm khách hàng và nhân viên
Select TenKH AS TenKM, DiaChiKh As DiaChiKM, DienThoaiKh As DienThoaiKM
From KhachHang
UNION
Select Trim(HoNV)+” “+ Trim(TenNV) , DiaChiNV, DienThoaiNV
From NhanVien
5.5.5. Select Into
Phát biểu Select InTo cho phép tạo kết quả mới dựa trên kết quả truy vấn. Bảng mới
ñược tạo dựa trên các cột xác ñịnh trong danh sách chọn lựa.
Cú pháp:
SELECT <DS Các cột>
FROM <DS Các Table>
[WHERE <ðiều kiện>]
UNION
SELECT <DS Các cột>
FROM <DS Các Table>
[WHERE <ðiều kiện>]
UNION . . . .
This is trial version
www.adultpdf.com
Bài Giảng Hệ Quản Trị Cơ Sở Dữ Liệu SQLServer 2000

Biên soạn: Dương Thành Phết – Trang 55

Ví dụ: Select * Into TempKhachHang rom KhachHang
Có 2 loại bảng:
Bảng thường trực : Sử dụng Select InTo ñịnh nghĩa một bảng và ñưa dữ liệu vào
trong ñó
Bảng tạm thời : Các bảng này sẽ nằm trong CSDL TempDb

Ví dụ:
Select * Into #TempKhachHang
From KhachHang
Ghi chú : Nếu muốn thêm các dòng vào một bảng ñã có ta sử dụng INSERT Hoặc INSERT
INTO
Ví dụ:
INSERT TempKhachHang
Select * From KhachHang
Select <DS Các cột> Into <Tên Table>
From <DS Các Table>
[Where <ðiều kiện>]

This is trial version
www.adultpdf.com
Bài Giảng Hệ Quản Trị Cơ Sở Dữ Liệu SQLServer 2000

Biên soạn: Dương Thành Phết – Trang 56
Chương 06
VIEW – KHUNG NHÌN
Mục tiêu
 Giới thiệu
 Tạo View
 Xoá View
 ðiều chỉnh View
6.1. GIỚI THIỆU
View là phương tiện cho phép ta lưu 1 câu truy vấn thành một ñối tượng trong CSDL
sau khi tạo xong ta có thể làm việc với View tương tư như làm việc với Table. Tuy nhiên
View chỉ là khung nhìn, dữ liệu thực sự chì chứa trong Table mà thôi.
Các View có lợi ích như sau:
 ðiều khiển người sử dụng vào xem dữ liệu khả năng này hữu ích về an tòan và dễ sử

dụng. Người dùng không thể xem dữ liệu mà họ không yêu cầu
 ðơn giản giao diện người sử dụng bằng cách tạo View cho các câu truy vấn thường sử
dụng
 Các View là ñối tượng rất mạnh và hữu dụng trong thiết kế CSDL là phuơng pháp ưa
thích trong vấn ñề chia sẽ thông tin
6.2. TẠO VIEW – BẢNG NHÌN
6.2.1. Sử Dụng Enterprise Manager Tạo View
 Tại cửa sổ EnterPriseManager chọn mục View
 Click phải bên cửa sổ phải chọn New View
Các thao tác tại cửa sổ Design View
 Thêm các Table/View vào cửa sổ thiết kế : Chọn AddTable
 Lọai bớt các Table/View khỏi cửa sổ thiết kế : Chọn Table/ Delete(Nhấn Delete)
 Thiết lập quan hệ khi cần thiết
 Chức năng thanh công cụ
Chức năng

Lưu View

Thực thi View

Cửa sổ xác ñịnh các thuộc tính

Xóa 1 ñối tượng ñược chọn

An hiện khung chứa các bảng

Cập nhật lại dữ liệu
This is trial version
www.adultpdf.com
Bài Giảng Hệ Quản Trị Cơ Sở Dữ Liệu SQLServer 2000


Biên soạn: Dương Thành Phết – Trang 57

An hiện khung lưới chọn lựa thông tin

Lọc dữ liệu

An hiện khung chứa lệnh SQL

Tạo View dạng Group By

An hiện khung chứa kết quả

Thêm mới Table
 Các thành phần tại lưới thiết kế View
Column : Các cột chọn
Alias : Bí danh tên mới cho cột
Table : Tên Table chứa cột chọn
Output : Hiện hay không hiện cột dữ liệu ñã chọn
Sort Type : Chọn lọai sắp xết dữ liệu kết quả
Sort Order : Trật tự ưu tiên sắp xếp
Criteria : ðiều kiện
Or : ðiều kiện hoặc
Ví dụ: Tạo View liệt kê các ñơn ñặt hàng trong tháng hiện tại thông tin gồm : (SoDH,
NgayDat, NgayGiao, MaKH, TenKH, MaSP, TenSP, DonGia, SLDat, ThanhTien)
Biết : ThanhTien=SLDat x DonGia

6.2.2. Sử Dụng SQL Analyzer Tạo View
Tại cửa sổ Query Analyzer thực hiện các câu lệnh theo cú pháp
This is trial version

www.adultpdf.com
Bài Giảng Hệ Quản Trị Cơ Sở Dữ Liệu SQLServer 2000

Biên soạn: Dương Thành Phết – Trang 58

Ví dụ 1:
CREATE VIEW VIEW02
As
SELECT D.SoDH, D.NgayDat, D.NgayGiao, K.MaKH, K.TenKH, C.MaSp,
S.TenSP, S.DonGia, C.SLDat, C.SLDat*S.DonGia As ThanhTien
FROM ChiTietDH C INNER JOIN DonDatHang D ON C.SoDH = D.SoDH
INNER JOIN KhachHang K ON D.MaKH = K.MaKH
INNER JOIN SanPham S ON C.MaSp = S.MaSP
WHERE MONTH(D.NgayDat) = MONTH(GETDATE()) AND
YEAR(D.NgayDat) = YEAR(GETDATE())
ORDER BY D.SoDH, D.NgayDat DESC

Ví dụ 2: CREAT VIEW SanPhamGiaCao
AS
SELECT *
FROM SanPham
WHERE DonGia > 1000000
Ví dụ 3: CREAT VIEW ThongKe (MaLoai, SoSP)
AS
SELECT MaLoai,Count(*)
FROM SanPham
GROUP BY MaLoai
6.3. XÓA VIEW
6.3.1 Sử dụng công cụ Enterprise Manager
 Tại cửa sổ EnterPrise Manager chọn tên View cần xóa

 Chọn Delete (Hoặc nhấn Delete)
 Chọn Drop All
6.3.2 Sử dụng công cụ Query Analyzer
CREATE VIEW <TênView> [(Cột 1[, . . .)]
AS
Select . . . .
From . . . .

This is trial version
www.adultpdf.com
Bài Giảng Hệ Quản Trị Cơ Sở Dữ Liệu SQLServer 2000

Biên soạn: Dương Thành Phết – Trang 59
Tại cửa sổ QueryAnalyzer thực hiện câu lệnh theo cú pháp

Ví dụ:
Drop View View02
6.4 ðIỀU CHỈNH VIEW
6.4.1 Sử dụng công cụ Enterprise Manager
 Tại cửa sổ EnterPrise Manager chọn tên View cần ñiều chỉnh
 Chọn Action/Design View (Hoặc Click phải chọn Design View)
6.4.2 Sử dụng công cụ Query Analyzer
Tại cửa sổ QueryAnalyzer thực hiện câu lệnh theo cú pháp

Ví dụ 1:
ALTER VIEW NVLuongCao
AS
SELECT *
FROM NhanVien
WHERE Luong > 2000000

ALTER VIEW <Tên View>[(Column1[, . . .)]
AS
Select . . . .
From . . .


DROP VIEW <TênView>

This is trial version
www.adultpdf.com
Bài Giảng Hệ Quản Trị Cơ Sở Dữ Liệu SQLServer 2000

Biên soạn: Dương Thành Phết – Trang 60
Chương 07
STORED PROCEDURE - THỦ TỤC LƯU TRỮ
Mục tiêu
 Giới thiệu
 Tạo Stored Procedure sử dụng ngôn ngữ SQL
 Tạo Stored Procedure sử dụng Enterprise Manager
7.1. GIỚI THIỆU
Stored Procedure là tập các phát biểu SQL lưu trữ trên Server. Là phương pháp hiệu
quả cho phép thực hiện lại các phát biểu ñó. Bao gồm:
Các nhóm phát biểu và gọi các thủ tục khác
Chấp nhận tham số truyền vào
SQL hộ trợ 5 loại Stored Procedure
+ System :Nằm trong CSDL Master dùng cho các công việc Quản trị hệ thống
+ Temporary : Nằm trong CSDL Tempdb và tự ñộng bị xóa
+ User_Define : Tạo trong CSDL người dùng
+ Remote: ðược gọi từ Server từ xa hoặc các client kết nối với Server từ xa
+ Extended: Dữ LIệUL bên ngoài môi truờng SQL ñược hiểu như Stored Procedure

mở rộng
7.2. TẠO STORED PROCEDURE SỬ DỤNG NGÔN NGỮ SQL
7.2.1. Tạo mới Stored Procedure

Ví dụ 1:
CREATE PROCEDURE NhanVienLuong
AS
Select *
From NhanVien
Where LuongCB>300000
Ví dụ 2:
CREATE PROC NhanVien
@MaNV Char(2)
CREATE PROC [ EDURE ] <Tên thủ tục>
[ @<Tham số> <Kiểu DL>] [ , n ]
AS
<Các câu lệnhSQL>

This is trial version
www.adultpdf.com

×