Tài liệu giảng dạy Quản trị CDSL SQL Server được dùng làm tài liệu học tập cho sinh viên ngành Công nghệ thông tin, cung cấp những kiến thức cơ bản về quản trị cơ sở dữ liệu SQL Server. Nội dung tài liệu bao gồm 6 chương như sau: Chương 1: Giới thiệu về SQL Server 2005; Chương 2: Ngôn ngữ định nghĩa dữ liệu (DDL); Chương 3: Ngôn ngữ thao tác dữ liệu (DML); Chương 4: Thủ tục lưu trữ (Stored Procedure); Chương 5: Hàm (Funtion); Chương 6: Bẫy lỗi (Trigger). Mời các bạn cùng tham khảo.
TẬP ĐOÀN DỆT MAY VIỆT NAM TRƢỜNG CAO ĐẲNG KINH TẾ - KỸ THUẬT VINATEX TP.HCM TÀI LIỆU GIẢNG DẠY MÔN HỌC: QUẢN TRỊ CƠ SỞ DỮ LIỆU SQL SERVER NGÀNH/NGHỀ: CƠNG NGHỆ THƠNG TIN TRÌNH ĐỘ: CAO ĐẲNG TP HỒ CHÍ MINH, năm 2019 TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng ngun trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU Tài liệu giảng dạy biên soạn dựa tài liệu Hệ quản trị CDSL SQL Server 2005 - Trần Xuân Hải, Nguyễn Tiến Dũng Tài liệu giảng dạy Quản trị CDSL SQL Server dùng làm tài liệu học tập cho sinh viên ngành Cơng nghệ thơng tin, trình bày theo chương trình mơn học xây dựng Tài liệu giảng dạy giúp cho sinh viên kiến thức quản trị sở liệu SQL Server Tài liệu giảng dạy bao gồm: Chương 1: Giới thiệu SQL Server 2005 Chương 2: Ngôn ngữ định nghĩa liệu (DDL) Chương 3: Ngôn ngữ thao tác liệu (DML) Chương 4: Thủ tục lưu trữ (Stored Procedure) Chương 5: Hàm (Funtion) Chương 6: Bẫy lỗi (Trigger) Trong trình biên soạn, có nhiều cố gắng khơng tránh khỏi hạn chế số thiếu sót định, nhóm tác giả mong nhận ý kiến đóng góp quý đọc giả để tài liệu giảng dạy ngày hoàn thiện Xin chân thành cảm ơn TP HCM, ngày … tháng … năm Tham gia biên soạn Ths Trịnh Công Nhựt MỤC LỤC Chương 1: Giới thiệu SQL Server 1.1 Cài đặt SQL Server 2005 .2 1.1.1 Các yêu cần cho hệ thống 32 bit 1.1.2 Các bước cài đặt SQL Server 2005 Express Edition .4 1.2 Một số thao tác SQL Server 2005 13 1.2.1 Tạo CSDL 13 1.2.2 Tạo bảng .14 1.2.3 Xóa bảng, xóa CSDL 16 1.2.4 Mở query editor để viết câu lệnh SQL 16 Chương 2: Ngôn ngữ định nghĩa liệu – DDL 19 2.1 Tạo chỉnh sửa sở liệu 19 2.1.1 Tạo CSDL 19 2.1.2 Chỉnh sửa CSDL 19 2.1.3 Xóa CSDL 19 2.2 Các kiểu liệu 20 2.3 Tạo bảng 21 2.4 Các loại ràng buộc .22 2.4.1 Ràng buộc CHECK 22 2.4.2 Ràng buộc PRIMARY KEY 23 2.4.3 Ràng buộc FOREIGN KEY 24 2.5 Sửa đổi định nghĩa bảng 26 2.6 Xóa bảng 27 2.7 Thêm, cập nhật xóa liệu 28 2.7.1 Thêm liệu 28 2.7.2 Cập nhật liệu 29 2.7.3 Xóa liệu 29 Chương 3: Ngôn ngữ thao tác liệu – DML 39 3.1 Câu lệnh SELECT .39 3.2 Danh sách chọn câu lệnh SELECT 40 3.2.1 Thay đổi tiêu đề cột 41 3.2.2 Sử dụng cấu trúc CASE … WHEN .42 3.2.3 Loại bỏ dòng liệu trùng 42 3.2.4 Lựa chọn số lượng giới hạn 43 3.3 Mệnh đề WHERE – điều kiện truy vấn liệu 44 3.3.1 Các toán tử so sánh 44 3.3.2 Kiểm tra giới hạn liệu .45 3.3.3 Toán tử làm việc tập hợp (IN/NOT IN) 45 3.3.4 Toán tử LIKE/NOT LIKE ký tự đại diện 46 3.3.5 Giá trị NULL 46 3.3.6 Sắp xếp truy vấn 47 3.4 Phép nối .48 3.4.1 Phép nối .48 3.4.2 Phép tự nối 49 3.4.3 Phép nối 50 3.5 Mệnh đề GROUP BY 52 3.5.1 Thống kê toàn liệu 52 3.5.2 Thống kê nhóm .53 3.5.3 Mệnh đề HAVING định điều kiện hàm gộp 53 3.6 Truy vấn 54 3.6.1 Phép so sánh kết truy vấn 54 3.6.2 Toán tử IN/NOT IN .55 3.6.3 Truy vấn với EXISTS 55 3.6.4 Truy vấn mệnh đề HAVING 55 3.7 Khung nhìn – VIEW 56 3.7.1 Tạo khung nhìn 56 3.7.2 Xóa khung nhìn 56 Chương 4: Thủ tục lưu trữ - Strore procedure 61 4.1 Khái niệm 61 4.2 Ngôn ngữ T-SQL 61 4.2.1 Khai báo biến .61 4.2.2 Gán giá trị cho biến 61 4.2.3 Các hàm thường dùng SQL 61 4.2.4 Cấu trúc điều khiển 63 4.3 Tạo – Xóa thủ tục 65 4.3.1 Tạo thủ tục 65 4.3.2 Thực thi thủ tục 65 4.3.3 Biến thủ tục lưu trữ .65 4.3.4 Giá trị trả thủ tục lưu trữ 66 4.3.5 Tham số với giá trị mặc định .67 4.3.6 Sửa đổi thủ tục .68 4.3.7 Xóa thủ tục 68 Chương 5: Hàm 70 5.1 Khái niệm – Phân loại 70 5.2 Hàm vô hướng – Scalar UDF 70 5.3 Hàm nội tuyến – Inline UDF .71 5.4 Hàm bao gồm nhiều câu lệnh bên – Multi statement UDF .72 5.5 Thay đổi hàm .73 5.6 Xóa hàm 74 TÀI LIỆU GIẢNG DẠY MƠN HỌC/MƠ ĐUN Tên mơn học: Quản trị sở liệu SQL Server Mã môn học: MH 19 Thời gian thực môn học: 75 giờ; (Lý thuyết: 15 giờ; Thực hành, thí nghiệm, thảo luận, tập: 55 giờ; Kiểm tra: giờ) I Vị trí, tính chất mơn học: - Vị trí: học sau môn học Cơ sở liệu môn học sở bắt buộc - Tính chất: mơn học chun môn bắt buộc II Mục tiêu môn học: - Về kiến thức: Mơ tả q trình cài đặt quản trị SQL Server Nắm rõ cấu trúc bên CSDL, cấu trúc bảng, ý nghĩa RB khóa chính, khóa ngoại, RB miền giá trị, ý nghĩa việc tạo mục, ý nghĩa việc thiết lập giá trị mặc định, ý nghĩa view, thủ tục nội (store procedure), trigger, chế phân quyền, thao tác import, export, backup restore, Trình bày cú pháp tạo, thay đổi hay xóa CSDL, bảng, khóa chính, khóa ngoại, default, check, rule, unique, index, view, store procedure trigger, thao tác thêm xóa sửa bảng Vận dụng thao tác import, export, backup restore SQL Server - Về kỹ năng: Thao tác tốt hệ quản trị CSDL SQL Server (kể phần quản trị viết mã lệnh) Biết cách vận dụng thao tác (import, export, backup, restore chế phân quyền) để quản trị liệu hệ quản trị CSDL chuyên nghiệp SQL Server Vận dụng cú pháp thao tác CSDL, bảng, view, store procedure, trigger, v.v để hỗ trợ cơng việc lập trình với CSDL - Về lực tự chủ trách nhiệm: Có nhìn sâu hệ quản trị CSDL Nắm vững hệ quản trị CSDL SQL Server (quản trị viết mã lệnh) III Nội dung môn học: Nội dung tổng quát phân bổ thời gian: Số TT Tổng số Chương 1: Giới thiệu SQL Server 2005 Chương 2: Ngôn ngữ định nghĩa liệu 15 11 (DDL) Chương 3: Ngôn ngữ thao tác liệu 15 10 (DML) Chương 4: Thủ tục lưu trữ (Stored 12 10 Procedure) Chương 5: Hàm (Funtion) 15 10 Chương 6: Bẫy lỗi (Trigger) 15 12 Cộng 75 15 55 Nội dung chi tiết: Chƣơng 1: Giới thiệu SQL Server 2005 Thời gian: Mục tiêu: - Trình bày cách cài đặt SQL Server - Cài đặt phần mềm vào máy tính - Nêu thao tác SQL Server - Thực thao tác SQL Server Nội dung chương: 2.1 Cài đặt SQL Server 2005 2.2 Một số thao tác SQL Server 2005 Chƣơng 2: Ngôn ngữ định nghĩa liệu (DDL) Thời gian: 15 Mục tiêu: Trình bày cách tạo chỉnh sửa CSDL Nêu kiểu ràng buộc cách thêm, cập nhật, xóa liệu bảng Tạo chỉnh sửa CSDL Tạo bảng thực ràng buộc bảng Thực xóa bảng, thêm, cập nhật, xóa liệu bảng Nội dung chương: 2.1 Tạo chỉnh sửa CSDL Thời gian: 2.2 Các kiểu liệu Thời gian: 2.3 Tạo bảng Thời gian: 2.4 Các loại ràng buộc Thời gian: 2.5 Sửa đổi định nghĩa bảng Thời gian: - Tên chƣơng, mục Thời gian (giờ) Thực hành, Lý thí nghiệm, Kiểm thuyết thảo luận, tra tập 2 - - - 2.6 Xóa bảng Thời gian: 2.7 Thêm, cập nhật, xóa liệu bảng Thời gian: Kiểm tra Thời gian: Chƣơng 3: Ngôn ngữ thao tác liệu (DML) Thời gian: 15 Mục tiêu: Trình bày cách tạo câu lệnh Select Nêu đươc cú pháp thường dùng câu lệnh Select Tạo câu lệnh Select với cú pháp khác dùng where, phép nối, group by, truy vấn con… Nội dung chương: 2.1 Câu lệnh Select Thời gian: 2.2 Danh sách chọn câu lệnh SELECT Thời gian: 2.3 Mệnh đề Where Thời gian: 2.4 Phép nối Thời gian: 2.5 Group By Thời gian: 2.6 Truy vấn Thời gian: 2.7 Khung nhìn (view) Thời gian: Kiểm tra Thời gian: Chƣơng 4: Thủ tục lƣu trữ (Stored Procedure) Thời gian: 12 Mục tiêu: Nêu cách tạo T_SQL, cách tạo xóa thủ tục Tạo câu lệnh tạo xóa thủ tục SQL Server Nội dung chương: 2.1 Khái niệm Thời gian: 2.2 Ngôn ngữ T_SQL Thời gian: 2.3 Tạo - xóa thủ tục Thời gian: Chƣơng 5: Hàm (Funtion) Thời gian: 15 Mục tiêu: Nêu cách tạo hàm vô hướng, hàm nội tuyến, hàm bao cách thay đổi xóa hàm Tạo, thay đổi xóa hàm hàm vơ hướng, hàm nội tuyến hàm bao Nội dung chương: 2.1 Khái niệm Thời gian: 2.2 Hàm vô hướng (Scalar UDF) Thời gian: 2.3 Hàm nội tuyến (Inline UDF) Thời gian: 2.4 Hàm bao gồm nhiều câu lệnh bên (Multi-statement UDF) Thời gian: 2.5 Thay đổi hàm Thời gian: - 2.6 Xóa hàm Thời gian: Kiểm tra Thời gian: Chƣơng 6: Bẫy lỗi (Trigger) Thời gian: 15 Mục tiêu: Nêu cách sử dụng tạo Trigger Tạo Trigger SQL Server Nội dung: 2.1 Đặc điểm Trigger Thời gian: 2.2 Các trường hợp sử dụng Trigger Thời gian: 2.3 Tạo Trigger Thời gian: IV Điều kiện thực mơn học: Phịng học chun mơn hóa/nhà xưởng: phịng lab tin học Trang thiết bị máy móc: máy vi tính có phần mềm chuyên dụng Học liệu, dụng cụ, nguyên vật liệu: sách, tập, máy tính có phần mềm chun dụng Các điều kiện khác: không V Nội dung phƣơng pháp đánh giá: Nội dung: - Kiến thức: + Trình bày trình cài đặt quản trị SQL Server + Nêu cấu trúc bên CSDL, cấu trúc bảng, ý nghĩa RB khóa chính, khóa ngoại, RB miền giá trị, ý nghĩa việc tạo mục, ý nghĩa việc thiết lập giá trị mặc định, ý nghĩa view, thủ tục nội (store procedure), trigger, chế phân quyền, thao tác import, export, backup restore + Trình bày cú pháp tạo, thay đổi hay xóa CSDL, bảng, khóa chính, khóa ngoại, default, check, rule, unique, index, view, store procedure trigger, thao tác thêm, xóa sửa bảng - Kỹ năng: + Áp dụng thao tác import, export, backup restore SQL Server + Thực thao tác hệ quản trị CSDL SQL Server (kể phần quản trị viết mã lệnh) + Vận dụng thao tác (import, export, backup, restore chế phân quyền) để quản trị liệu hệ quản trị CSDL chuyên nghiệp SQL Server + Sử dụng cú pháp thao tác CSDL, bảng, view, store procedure, trigger, v.v để hỗ trợ công việc lập trình với CSDL - Năng lực tự chủ trách nhiệm: + Tích cực tham gia tự học, tham gia xây dựng bài, làm việc nhóm Phương pháp: Các kiến thức kỹ đánh giá qua nội dung tự nghiên cứu, Chuơng Hàm (Function) 5.1 Khái niệm - phân loại Hàm người dùng định nghĩa chia làm loại: (1) scalar (hàm vô hướng), (2) inline table-valued (hàm nội tuyến, giá trị trả dạng bảng), (3) multi-statement table-valued (hàm bao gồm nhiều câu lệnh SQL bên trong, trả giá trị dạng bảng) Scalar UDF: sử dụng để trả giá trị dựa tham số truyền vào Ví dụ: ta tạo UDF vô hướng nhận Customerid tham số trả CustomerName Inline table-valued: trả bảng dựa câu lệnh SQL định nghĩa dòng cột trả Multi-statement table-value: trả kết tập hợp dựa nhiều câu lệnh SQL 5.2 Hàm vô hướng - Scalar UDF Scarlar UDF tạo câu lệnh CREATE FUNCTION có cấu trúc sau; CREATE FUNCTION tên_hàm ([danh_sách_tham_số]) RETURNS (kiểu_trả_về_của_hàm) AS BEGIN các_câu_lệnh_của_hàm END Ví dụ: Câu lệnh định nghĩa hàm tính ngày tuần (thứ tuần) giá trị kiểu ngày create function f_ thu( @ngay datetime) returns nvarchar(10) as begin declare @st nvarchar(10) select @st=case datepart(dw,@ngay) when then N'chủ nhật' when then N'thứ hai' when then N 'thứ ba' when then N 'thứ tư' when then N 'thứ năm' when then N 'thứ sáu' else N 'thứ bảy' end return (@st) /* trị trả hàm */ 70 end Sau chạy thành công, hàm trở thành đối tượng CSDL truy xuất hàm xây dựng sẵn SQL Server 2005 Express Edition Ví dụ: select CUSTOMERNAME, dbo.f_thu(BIRTHDAY) from customers 5.3 Hàm nội tuyến - Inline UDF Hàm nội tuyến định nghĩa lệnh CREATE FUNCTION CREATE FUNCTION tên_hàm ([danh_sách_tham_số]) RETURNS TABLE AS RETURN (câu_lệnh_select) Cú pháp hàm nội tuyến phải tuân theo qui tắc sau: Kiểu trả hàm phải định mệnh đề RETURNS TABLE 71 Trong phần thân hàm có câu lệnh RETURN xác định giá trị trả hàm thông qua câu lệnh SELECT Ngồi ra, khơng sử dụng câu lệnh khác phần thân hàm Ví dụ: Ví dụ lấy khách hàng tùy thuộc vào giá trị mã khách hàng truyền vào cho tham số create function f_SelectCustomer (@customerid int) returns table as return (select * from customers where customerid > @customerid) Việc gọi hàm nội tuyến tương tự việc gọi hàm vơ hướng Ví dụ: select tmp.CUSTOMERNAME, o.ORDERDATE from orders o inner join dbo.f_SelectCustomer(3) as tmp on o.customerid = tmp.customerid 5.4 Hàm bao gồm nhiều câu lệnh bên – Multi statement UDF Hàm định nghĩa lệnh CREATE FUNCTION CREATE FUNCTION tên_hàm ([danh_sách_tham_số]) RETURNS @biến_bảng TABLE định_nghĩa_bảng AS BEGIN các_câu_lệnh_trong_thân_hàm RETURN END Lưu ý: sau từ khóa RETURNS biến bảng định nghĩa Và sau từ khóa RETURN cuối hàm khơng có tham số kèm Ví dụ: create function f_SelectCustomer (@customerid int) returns @myCustomers table ( customerid int, 72 customername nvarchar(50), orderdate datetime ) as begin if @customerid = insert into @myCustomers select c.customerid, c.customername, o.orderdate from customers c inner join orders o on o.customerid = c.customerid else insert into @myCustomers select c.customerid, c.customername, o.orderdate from customers c inner join orders o on c.customerid = o.customerid where c.customerid = @customerid return end Việc gọi hàm multi statement UDF tương tự loại hàm khác select * from f_SelectCustomer(0) select * from f_SelectCustomer(3) 5.5 Thay đổi hàm Dùng lệnh ALTER FUNCTION để thay đổi định nghĩa hàm Cấu trúc câu lệnh ALTER FUNCTION tương tự CREATE FUNCTION Ví dụ: alter function f_SelectCustomer (@customerid int) returns table as return (select * from customers 73 where customerid > @customerid) 5.6 Xóa hàm Dùng lệnh DROP FUNCTION để xóa hàm Cấu trúc lệnh DROP FUNCTION sau DROP FUNCTION tên_hàm Ví dụ: drop function f_thu Tương tự thủ tục lưu trữ, hàm bị xóa quyền cấp cho người dùng hàm bị xóa Do định nghĩa lại hàm này, ta phải cấp lại quyền cho người dùng 74 Bài tập Chuơng Bài tập Viết hàm đơn giản (không truy xuất liệu) Viết hàm truyền vào ngày sinh, tính số tuổi Viết hàm truyền vào điểm tốn, lý, hóa khối Tính tổng điểm theo cơng thức sau: - Nếu khối A Tổng điểm = Tốn* + Lý + Hóa - Nếu khối B Tổng điểm = Tốn + Lý + Hóa* Bài tập Viết hàm trả kiểu sở - Sử dụng CSDL tập Chương Viết hàm đếm số sinh viên theo khoa với mã khoa tham số truyền vào cho hàm Viết hàm tính điểm trung bình sinh viên với mã sinh viên tham số truyền vào Bài tập Viết hàm trả kiểu bảng Viết hàm hiển thị danh sách sinh viên theo khoa Viết hàm hiển thị danh sách điểm thi sinh viên Viết hàm hiển thị số sinh viên theo mã khoa sau: - Nếu mã khoa rỗng hiển thị số sinh viên tất khoa - Nếu mã khoa khác rỗng hiển thị số sinh viên theo khoa 75 Chương Trigger 6.1 Các đặc điểm trigger Trigger dạng đặc biệt thủ tục lưu trữ, thực thi cách tự động có thay đổi liệu (do tác động câu lệnh INSERT, UPDATE, DELETE) bảng Trigger thực thi tự động thơng qua kiện mà không thực tay Trigger sử dụng với khung nhìn Khi trigger thực thi theo kiện Insert Delete liệu thay đổi chuyển sang bảng INSERTED DELETED, bảng tạm thời chứa nhớ, bảng sử dụng với lệnh trigger Các bảng thường sử dụng để khôi phục lại phần liệu thay đổi (roll back) Trigger chia thành loại INSTEAD OF AFTER: INSTEAD OF loại trigger mà hoạt động kiện gọi trigger bị bỏ qua thay vào lệnh trigger thực AFTER trigger loại ngầm định, khác với loại INSTEAD OF loại trigger thực lệnh bên sau thực xong kiện kích hoạt trigger 6.2 Các trường hợp sử dụng trigger Sử dụng Trigger biện pháp bảo đảm tồn vẹn liệu khác khơng bảo đảm Các cơng cụ thực kiểm tra tính tốn vẹn trước đưa liệu vào CSDL, Trigger thực kiểm tra tính tồn vẹn cơng việc thực Khi CSDL chưa chuẩn hóa (Normalization) xảy liệu thừa, chứa nhiều vị trí CSDL u cầu đặt liệu cần cập nhật thống nơi Trong trường hợp ta phải sử dụng Trigger Khi xảy thay đổi dây chuyền liệu bảng với (khi liệu bảng thay đổi liệu bảng khác thay đổi theo) 6.3 Tạo trigger Câu lệnh CREATE TRIGGER sử dụng để đinh nghĩa trigger có cấu trúc sau: CREATE TRIGGER tên_trigger ON tên_bảng FOR {[INSERT][,][UPDATE][,][DELETE]} AS [IF UPDATE(tên_cột) [AND UPDATE(tên_cột)|OR UPDATE(tên_cột)] ] 76 các_câu_lệnh_của_trigger Lưu ý: Như nói trên, chuẩn SQL định nghĩa hai bảng logic INSERTED DELETED để sử dụng trigger Cấu trúc hai bảng tương tự cấu trúc bảng mà trigger tác động Dữ liệu hai bảng tuỳ thuộc vào câu lệnh tác động lên bảng làm kích hoạt trigger; cụ thể trường hợp sau: Hoạt động Bảng INSERTED Bảng DELETED INSERT liệu insert khơng có liệu DELETE khơng có liệu liệu bị xóa UPDATE liệu cập nhật liệu trước cập nhật Ví dụ 1: Ví dụ minh họa việc trigger kích hoạt thêm liệu vào bảng CUSTOMERS create trigger t_CheckCustomerName on customers for insert as declare @lengthOfName int select @lengthOfName = len(inserted.customername) from inserted if @lengthOfName 1 Begin Raiserror('Trung ma san pham',16,1) Rollback transation End 2.2 Tạo Trigger ràng buộc khóa cho bảng CHITIETHOADON CREATE TRIGGER Khoachinh-CTHD On CHITIETHOADON FOR INSERT AS Declare @masp int, @sohd int Select @masp=MASP, @sohd=SOHD From INSERTED IF (Select Count(*) From CHITIETHOADON Where MASP=@masp And SOHD=@sohd)>1 BEGIN Raiserror('Trung ma san pham',16,1) Rollback transation End Ví dụ 3: Ràng buộc miền giá trị Tạo Trigger cập nhật số lượng tồn bảng SANPHAM, có thao tác cập nhật sản phẩm bảng CHITIETHOADON CREATE TRIGGER CAPNHAT-SLTON On CHITIETHOADON FOR INSERT AS Declare @masp int, @SL int Select @masp=MASP, @SL=SOLUONG From INSERTED UPDATE SANPHAM SET SLTON=SLTON-@SL Where MASP=@masp 6.4 Xóa trigger DROP TRIGGER tên_trigger 78 6.5 Enable/ Disable TRIGGER Trigger cần bị vơ hiệu hóa số trường hợp: Trigger gây lỗi trình xử lý CSDL Quá trình nhập hay khôi phục liệu không thỏa trigger Vơ hiệu hóa trigger lệnh DISABLE TRIGGER có cấu trúc sau: DISABLE TRIGGER tên_trigger ON { tên_đối_tượng | DATABASE | SERVER } Ví dụ 1: Ví dụ vơ hiệu hóa trigger t_DoNotAllowCreateNewLogin disable trigger t_DoNotAllowCreateNewLogin on all server Tiến hành tạo account login mới: create login newLogin with password = '12345' Ví dụ 2: Ví dụ khôi phục lại trigger t_ DoNotAllowCreateNewLogin enable trigger t_DoNotAllowCreateNewLogin on all server Tiến hành tạo account login mới: create login newLogin1 with password = '12345' 79 Bài tập Chuơng Tạo CSDL QLVT Tạo cấu trúc bảng nhập liệu sau: KHACHHANG (MAKH , TENKH, DIACHI, DT, EMAIL) VATTU (MAVT, TENVT, DVT, GIAMUA, SLTON) HOADON (MAHD , NGAY, MAKH, TONGTG) CHITIETHOADON(MAHD, MAVT , SL, KHUYENMAI, GIABAN) 80 Bài tập Tổng Hợp Nội dung hướng dẫn thực hành - Tạo CSDL: Bảng, ràng buộc khóa chính, khóa ngoại, miền giá trị Tạo View, Stored Procedure, Function, Trigger Cơ sở liệu “QLBH” sau 2.1 Tạo cấu trúc bảng sau: KHACHHANG (MAKH , TENKH, NS, DIACHI, DT, EMAIL) SAMPHAM (MASP, TENSP, DVT, GIAMUA, SLTON) HOADON (MAHD , NGAYLAP, MAKH, TONGTG) CHITIETHOADON (MAHD, MASP , SL, KHUYENMAI, GIABAN) + Các field in đậm, gạch khóa bảng, kiểu liệu char(5), field cịn lại có kiểu liệu phù hợp với liệu nhập vào + Trong bảng SANPHAM, ràng buộc field GIAMUA >0, SLTON >=0 + Trong bảng HOADON, ràng buộc giá trị nhập cho field NGAYLAP phải trước ngày hành + Tong bảng CHITIETHOADON, ràng buộc field SL>0 2.2 Dữ liệu bảng cho sau: Table SANPHAM: MASP TENSP VT01 Xi măng VT02 Cát VT03 Gạch ống VT04 Gạch thẻ VT05 Đá lớn VT06 Đá nhỏ VT07 Lam gió VT08 Sắt VT09 Sơn nước DVT bao khoi vien vien khoi khoi cai kg thùng GIAMUA 500 450 120 110 250 330 150 100 300 SLTON 50 50 80 80 100 100 50 100 50 Table CHITIETHOADON MAHD MASP SL HD001 VT01 HD001 VT05 HD002 VT03 HD003 VT02 HD004 VT03 HD004 VT04 HD005 VT05 10 HD005 VT06 15 HD005 VT07 20 HD006 VT04 10 GIABAN 520 300 150 550 150 120 300 350 170 120 Table KHACHHANG: MAKH KH01 KH02 KH03 KH04 KH05 KH06 TENKH Nguyễn Thi Bé Lê Hoàng Nam Trần Thị Chiêu Mai Thị Quế Anh Lê Văn Sang Trần Hoàng Khải DIACHI Thủ đức Bình thạnh Bình Quận Thủ đức Quận 12 NGAYSINH 12/09/1980 03/10/1978 02/07/1975 23/09/1982 09/12/1956 04/07/1990 DT EMAIL (08)38457895 be@yahoo.com (08)39878987 hoang@yahoo.com (08)28457895 sang@hcm.vn.vn (08)28457890 khai@gmail.com Table HOADON: MAHD HD001 HD002 HD003 HD004 HD005 HD006 NGAYLAP 12/05/2000 25/05/2000 25/05/2000 25/05/2000 26/05/2000 02/06/2000 MAKH KH01 KH02 KH01 KH04 KH04 KH03 81 Yêu cầu thực hành 3.1 Tạo View Hiển thị thơng tin gồm Mã hóa đơn, ngày lập hóa đơn, tên khách hàng, địa khách hàng số điện thoại Hiển thị danh sách khách hàng chưa có số điện thoại email, thơng tin gồm: Mã khách hàng, tên khách hàng, địa Hiển thị danh sách vật tư gồm mã vật tư, tên vật tư, đơn vị tính giá mua nằm khoảng 2000 đến 40000 Lấy thơng tin gồm: Mã hóa đơn, ngày lập hóa đơn, tên khách hàng số điện thoại ngày 25/7/2000 Lấy thơng tin gồm Mã hóa đơn, ngày lập hóa đơn, tên khách hàng, địa khách hàng số điện thoại hóa đơn tháng 6/2000 Lấy danh sách khách hàng (Tên khách hàng, địa chỉ, số điện thoại) mua hàng tháng 6/2000 Lấy danh sách khách hàng (Tên khách hàng, địa chỉ, số điện thoại) không mua hàng tháng 6/2000 Lấy thơng tin gồm Mã hóa đơn, mã vật tư, tên vật tư, đơn vị tính, giá bán, giá mua, số lượng, trị giá mua (số lượng * giá mua), trị giá bán (số lượng * giá bán) Lấy thơng tin gồm Mã hóa đơn, mã vật tư, tên vật tư, đơn vị tính, giá bán, giá mua, số lượng, trị giá mua (số lượng * giá mua), trị giá bán (số lượng * giá bán), khuyến 10% cho mặt hàng bán hóa đơn lớn 100 10 Tìm mặt hàng chưa bán 11 Tạo bảng tổng hợp tháng 5/2000 gồm thơng tin: Mã hóa đơn, ngày hóa đơn, tên khách hàng, địa chỉ, số điện thoại, tên vật tư, đơn vị tính, giá mua, giá bán, số lượng, trị giá mua, trị giá bán 12 Tạo bảng tổng hợp quý năm 2000 gồm thông tin: Mã hóa đơn, ngày hóa đơn, tên khách hàng, địa chỉ, số điện thoại, tên vật tư, đơn vị tính, giá mua, giá bán, số lượng, trị giá mua, trị giá bán.\ 13 Lấy danh sách hóa đơn gồm thơng tin: Số hóa đơn, ngày, tên khách hàng, địa khách hàng, tổng trị giá hóa đơn 14 Lấy hóa đơn có tổng trị giá lớn gồm thơng tin: Số hóa đơn, ngày, tên khách hàng, địa khách hàng, tổng trị giá hóa đơn 15 Lấy hóa đơn có tổng trị giá lớn tháng 5/2000 gồm thông tin: Số hóa đơn, ngày, tên khách hàng, địa khách hàng, tổng trị giá hóa đơn 16 Đếm xem khách hàng có hóa đơn 17 Lấy thơng tin khách hàng có số lượng hóa đơn mua hàng nhiều 18 Lấy thông tin mặt hàng mà bán nhiều hóa đơn 19 Lấy thơng tin mặt hàng mà bán nhiều 20 Lấy danh sách tất khách hàng gồm Mã khách hàng, tên khách hàng, địa chỉ, số lượng hóa đơn mua (nếu khách hàng chưa mua hàng cột số lượng hóa đơn để trống) 82 3.2 Tạo Stored Procedure 21 Lấy danh sách khách hàng có tổng trị giá đơn hàng lớn 22 Lấy danh sách 10 mặt hàng bán có lãi 23 Lấy danh sách khách hàng mua hàng ngày [ngày] Với [ngày] tham số truyền vào 24 Tính giá trị cho cột khuyến sau: Khuyến 5% SL > 100, 10% SL >500 25 Tính lại số lượng tồn cho tất mặt hàng Biết SLTON = SLTON – tổng số lượng bán 26 Tạo table KH_VIP có cấu trúc giống với cấu trúc bảng KHACHHANG Lưu khách hàng có tổng trị giá tất đơn hàng >= 100000 vào table KH_VIP 3.3 Tạo Function 27 Viết hàm tính doanh thu [năm] Với [năm] tham số truyền vào 28 Viết hàm tính doanh thu khách hàng Với [makh] tham số truyền vào 29 Viết hàm tính tổng số lượng bán cho mặt hàng theo tháng, với mã hàng tháng tham số truyền vào, tham số tháng khơng nhập giá trị tính tất tháng 30 Viết hàm tính lãi ((giá bán – giá mua))* số lượng bán được) cho mặt hàng, với mã mặt hàng tham số truyền vào Nếu mã mặt hàng khơng truyền vào tính cho tất mặt hàng 3.4 Tạo Trigger 31 Thực kiểm tra ràng buộc khóa cho bảng 32 Thực kiểm tra ràng buộc khóa ngoại cho bảng 33 Thực kiểm tra ràng buộc miền giá trị cho cột có ràng buộc 34 Khơng cho phép Cascade Delete ràng buộc khóa ngoại Ví dụ khơng cho phép xóa HOADON có SOHD cịn nằm CTHOADON 35 Khi có thao tác cập nhật CTHOADON, tính KHUYENMAI 5% SL >100, 10% SL >500 36 Chỉ cho phép mua mặt hàng có số lượng tồn kho lớn số lượng cần mua tính lại số lượng tồn có đơn hàng 37 Khơng cho phép xóa lúc nhiều vật tư 83 Tài liệu tham khảo Giáo trình hệ quản trị sở liệu SQL Server, Khoa CNTT, Đại học Huế SQL Server 2005, T-SQL Recipes: Problem, Solution, Approach – Appress Publisher Sams Teach yourself Microsoft SQL Server 2005 Express in 24 hours 84 ... LỜI GIỚI THIỆU Tài liệu giảng dạy biên soạn dựa tài liệu Hệ quản trị CDSL SQL Server 2005 - Trần Xuân Hải, Nguyễn Tiến Dũng Tài liệu giảng dạy Quản trị CDSL SQL Server dùng làm tài liệu học tập... khảo: [1] Hệ quản trị CDSL SQL Server 2005 - Trần Xuân Hải, Nguyễn Tiến Dũng [2] Đề cương giảng HỆ QUẢN TRỊ CSDL SQL SERVER, Trường CĐ Kinh Tế Kỹ Thuật Vinatex TP .HCM [3] Phạm Hữu Khang – Đoàn Thiện... cho sinh viên ngành Công nghệ thơng tin, trình bày theo chương trình mơn học xây dựng Tài liệu giảng dạy giúp cho sinh viên kiến thức quản trị sở liệu SQL Server Tài liệu giảng dạy bao gồm: Chương