Giáo trình hệ quản trị cơ sở dữ liệu SQL server (nghề lập trình máy tính trình độ CĐTC)

57 14 0
Giáo trình hệ quản trị cơ sở dữ liệu SQL server (nghề lập trình máy tính   trình độ CĐTC)

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ỦY BAN NHÂN DÂN TỈNH AN GIANG TRƯỜNG CAO ĐẲNG NGHỀ AN GIANG GIÁO TRÌNH HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQL SERVER NGHỀ: LẬP TRÌNH MÁY TÍNH Trình độ trung cấp/cao đẳng (Ban hành theo Quyết định số: /QĐ-CĐN ngày tháng năm 20 Hiệu trưởng trường Cao đẳng nghề An Giang) Tác giả: Vương Thị Minh Nguyệt Năm ban hành : 2017 LỜI GIỚI THIỆU Ngày nay, phát triển Internet ảnh hƣởng lớn tới ngành CNTT Internet mở nhiều hội tốt cho nhà lập trình phát triển ứng dụng Web nhà quản trị CSDL Web Tuy nhiên việc xử lý liệu CSDL vấn đề ứng dụng trên, liệu sau đƣợc nhập từ NET, phải đƣợc lƣu trữ xử lý CSDL Hiệu suất ứng dụng Web phụ thuộc lớn vào khả xử lý truy vấn CSDL Có thể nói nhu cầu cấp thiết để chuyên gia Web phải tìm hiểu hệ quản trị CSDL quan hệ SQL Server 2008 hệ QT CSDL Microsoft Nó phiên có hiệu suất làm việc cao có nhiều tính mới, đầy đủ sức mạnh hỗ trợ việc QT CSDL Nó đƣợc sử dụng rộng rãi việc xây dựng mơ hình cho xí nghiệp vừa nhỏ Nó hỗ trợ XML, cơng nghệ thịnh hành thị trƣờng Tài liệu đƣợc thiết kế theo mô đun/ môn học thuộc hệ thống mô đun/mơn học chƣơng trình, để đào tạo hồn chỉnh nghề Lập trình máy tính cấp trình độ bậc cao đƣợc dùng làm giáo trình cho học viên khóa đào tạo, đƣợc sử dụng cho đào tạo ngắn hạn cho cơng nhân kỹ thuật Trong q trình biên soạn, cố gắng tham khảo nhiều tài liệu giáo trình khác nhƣng tác giả khơng khỏi tránh đƣợc thiếu sót hạn chế Tác giả chân thành mong đợi nhận xét, đánh giá góp ý để giáo trình ngày hồn thiện Nội dung mơn học: BÀI 1: TỔNG QUAN VỀ MƠ HÌNH CLIENT/SERVER BÀI 2: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQL SERVER BÀI 3: CÁC THAO TÁC TRÊN SQL SERVER BÀI 4: BẢO MẬT TRONG SQL SERVER BÀI 5: TẠO THỦ TỤC TRONG SQL SERVER BÀI 6: TẠO HÀM TRONG SQL SERVER An Giang, ngày tháng năm 20 Tham gia biên soạn Vương Thị Minh Nguyệt MỤC LỤC ĐỀ MỤC TRANG LỜI GIỚI THIỆU MỤC LỤC CHƢƠNG TRÌNH MƠ ĐUN BÀI 1: TỔNG QUAN VỀ MƠ HÌNH CLIENT/SERVER I CÁC KIẾN THỨC TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU II CÁC GIAI ĐOẠN PHÁT TRIỂN CỦA MỘT HỆ QT CSDL III GIỚI THIỆU VỀ MƠ HÌNH CLIENT/ SERVER VÀ CÁC HỆ QT CSDL PHỤC VỤ CHO MƠ HÌNH CLIENT/ SERVER IV CÁC ĐẶC TRƢNG CỦA MÔ HÌNH CLIENT/ SERVER BÀI TẬP BÀI 2: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQL SERVER I GIỚI THIỆU HỆ QT CSDL SQL SERVER II CÁC THÀNH PHẦN CỦA SQL SERVER III CÁC THAO TÁC CƠ BẢN TRÊN MÔI TRƢỜNG SQL SERVER 11 BÀI TẬP THỰC HÀNH 12 BÀI 3: CÁC THAO TÁC TRÊN SQL SERVER 13 I CÁC KIỂU DỮ LIỆU TRONG SQL SERVER 13 II TẠO CƠ SỞ DỮ LIỆU TRONG SQL SERVER 14 III TẠO BẢNG TRONG SQL SERVER 15 NHẬP DỮ LIỆU TRONG SQL SERVER 18 VI TRUY VẤN TRONG SQL SERVER 19 BÀI TẬP THỰC HÀNH 32 BÀI 4: BẢO MẬT TRONG SQL SERVER 33 I CÁC KHÁI NIỆM 33 II CẤP PHÁT QUYỀN 34 III TỪ CHỐI QUYỀN 37 IV THU HỒI QUYỀN 38 V BẢO TRÌ CƠ SỞ DỮ LIỆU 40 BÀI TẬP THỰC HÀNH 41 BÀI 5: TẠO THỦ TỤC TRONG SQL SERVER 42 I TẠO THỦ TỤC 42 II SỬA THỦ TỤC 48 III XÓA THỦ TỤC 48 BÀI TẬP THỰC HÀNH 48 BÀI 6: TẠO HÀM TRONG SQL SERVER 50 I ĐỊNH NGHĨA VÀ SỬ DỤNG HÀM 50 II HÀM VỚI GIÁ TRỊ TRẢ VỀ LÀ DỮ LIỆU KIỂU BẢNG 51 BÀI TẬP THỰC HÀNH 54 TÀI LIỆU THAM KHẢO 56 CHƢƠNG TRÌNH MƠ ĐUN Tên mơ đun: HỆ QUẢN TRỊ MS SQL SERVER Mã mô đun: MĐ 13 Thời gian thực mô đun: 60 (Lý thuyết: 20 giờ, thực hành 38 giờ, kiểm tra: giờ) I VỊ TRÍ, TÍNH CHẤT CỦA MƠ ĐUN Vị trí: - Thuộc nhóm mơn: Chun ngành - Đƣợc bố trí sau mơn: Tin học văn phịng, Lập trình quản lý Tính chất: - Mô đun làm sở cho sinh viên – học sinh có chu trình làm việc với hệ thống sở liệu chuyên nghiệp mạng so sánh đƣợc tính hiệu so với hệ quản trị sở liệu Access đƣợc học II MỤC TIÊU CỦA MÔ ĐUN Về kiến thức: - Trình bày đƣợc kiến thức mơ hình liệu Client/Server thể cụ thể qua việc cài đặt hệ quản trị sở liệu SQL Server môi trƣờng Windows Về kỹ năng: - Thực đƣợc lệnh tìm kiếm, bổ sung, sửa đổi xóa ghi có điều kiện lọc sở liệu Microsoft SQL Server - Bảo mật đƣợc sở liệu server Về lực tự chủ trách nhiệm: tự giác, cẩn thận III NỘI DUNG MÔ ĐUN Bài 1: Tổng quan mơ hình client/server I Các kiến thức tổng quan sở liệu II Các giai đoạn phát triển hệ quản trị sở liệu III Giới thiệu mơ hình Client server hệ quản trị sở liệu phục vụ cho mơ hình Client/Server IV Các đặc trƣng mơ hình Client/server Bài 2: Hệ quản trị sở liệu MS SQL Server I Giới thiệu hệ quản trị sở liệu MS SQL Server II Các công cụ MS SQL Server III Làm việc với công cụ Enterprise Manager Bài 3: Các thao tác SQL Server I Các kiểu liệu SQL Server II Tạo sở liệu MS SQL Server III Tạo bảng MS SQL Server IV Truy vấn SQL Server V Kiểm tra Bài 4: Bảo mật SQL Server I Các khái niệm II Cấp phát quyền III Từ chối quyền IV Thu hồi quyền Bài 5: Tạo thủ tục SQL Server I.Tạo thủ tục II Sửa thủ tục III Xóa thủ tục IV Kiểm tra Bài 6: Tạo hàm SQl Server I Định nghĩa sử dụng hàm II Hàm với giá trị trả “dữ liệu kiểu bảng” BÀI TỔNG QUAN VỀ MƠ HÌNH CLIENT/SERVER Giới thiệu Nhìn chung ứng dụng sở liệu bao gồm phần: - Thành phần xử lý ứng dụng (Application processing components) - Thành phần phần mềm sở liệu (Database software componets) - Bản thân sở liệu (The database itself) Các mơ hình xử lý sở liệu khác trƣờng hợp loại thành phần nói định vị đâu Bài xin giới thiệu mô hình kiến trúc dựa cấu hình phân tán truy nhập liệu hệ thống máy tính Client/Server Mục tiêu Học xong học viên có khả năng: - Mơ tả xác mơ hình Client/server - Xác định xác ngun tắc mơ hình Client/server - Xác định xác đặc trƣng mơ hình Client/server - Mơ tả đƣợc tầng client server mơ hình Client/server - So sánh đƣợc khác mơ hình Client/ server mơ hình sở liệu khác - Tƣ vấn cho khách hàng ý nghĩa mơ hình Client/Server lợi ích sử dụng sở liệu theo mơ hình I CÁC KIẾN THỨC TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU Ngôn ngữ CSDL đƣợc cài đặt khác hệ quản trị CSDL khác nhau, nhiên phải theo chuẩn (Standard) định Bài học cung cấp cho học viên kiến thức ngôn ngữ truy vấn có cấu trúc (Structured Query Language - SQL) CSDL, cú pháp lệnh đƣợc chuẩn hóa hầu hết hệ quản trị CSDL (DBMS) II CÁC GIAI ĐOẠN PHÁT TRIỂN CỦA MỘT HỆ QT CSDL Những năm 1975-1976, IBM lần đƣa hệ quản trị CSDL kiểu quan hệ mang tên SYSTEM-R với ngôn ngữ giao tiếp CSDL SEQUEL (Structured English QUEry Language), ngơn ngữ để thao tác với CSDL Năm 1976 ngôn ngữ SEQUEL đƣợc cải tiến thành SEQUEL2 Khoảng năm 1978-1979 SEQUEL2 đƣợc cải tiến đổi tên thành Ngơn Ngữ Truy Vấn Có Cấu Trúc (Structured Query Language - SQL) cuối năm 1979 hệ quản trị CSDL đƣợc cải tiến thành SYSTEM-R Năm 1986 Viện Tiêu Chuẩn Quốc Gia Mỹ (American National Standards Institute - ANSI) cơng nhận chuẩn hóa ngơn ngữ SQL, sau Tổ chức Tiêu chuẩn Thế giới (International Standards Organization - ISO) công nhận ngôn ngữ Đó chuẩn SQL-86 Tới SQL qua lần chuẩn hóa lại (1989, 1992, 1996) để mở rộng phép toán tăng cƣờng khả bảo mật tính tồn vẹn liệu Tài liệu trình bày Ngơn ngữ truy vấn CSDL dựa chuẩn SQL-92 có tham khảo với SQL, SQL*PLUS, PL/SQL Oracle Server Release 7.3 (1996) MicroSoft SQL Server 7.1 với phạm trù nêu III GIỚI THIỆU VỀ MƠ HÌNH CLIENT/ SERVER VÀ CÁC HỆ QT CSDL PHỤC VỤ CHO MƠ HÌNH CLIENT/ SERVER Năm mơ hình kiến trúc dựa cấu hình phân tán truy nhập liệu hệ thống máy tính Client/Server - Mơ hình sở liệu tập trung (Centralized database model) - Mơ hình sở liệu theo kiểu file - server (File - server database model) - Mô hình xử lý phần sở liệu (Database extract processing model) - Mơ hình sở liệu Client/Server (Client/Server database model) - Mơ hình sở liệu phân tán (Distributed database model) IV CÁC ĐẶC TRƢNG CỦA MƠ HÌNH CLIENT/ SERVER Mơ hình Client/Server, mà cụ thể module tìm hiểu mơ hình hệ quản trị sở liệu SQL SQL đƣợc sử dụng để điều khiển tất chức mà hệ quản trị sở liệu cung cấp cho ngƣời dùng bao gồm: • Định nghĩa liệu: SQL cung cấp khả định nghĩa sở liệu, cấu trúc lƣu trữ tổ chức liệu nhƣ mối quan hệ thành phần liệu • Truy xuất thao tác liệu: Với SQL, ngƣời dùng dễ dàng thực thao tác truy xuất, bổ sung, cập nhật loại bỏ liệu sở liệu • Điều khiển truy cập: SQL đƣợc sử dụng để cấp phát kiểm soát thao tác ngƣời sử dụng liệu, đảm bảo an toàn cho sở liệu • Đảm bảo tồn vẹn liệu: SQL định nghĩa ràng buộc toàn vẹn wcơ sở liệu nhờ đảm bảo tính hợp lệ xác liệu trƣớc thao tác cập nhật nhƣ lỗi hệ thống Nhƣ vậy, nói SQL ngơn ngữ hồn thiện đƣợc sử dụng hệ thống sở liệu thành phần thiếu hệ quản trị sở liệu Mặc dù SQL khơng phải ngơn ngữ lập trình nhƣ C, C++, Java, song câu lệnh mà SQL cung cấp đƣợc nhúng vào ngơn ngữ lập trình nhằm xây dựng ứng dụng tƣơng tác với sở liệu Khác với ngơn ngữ lập trình quen thuộc nhƣ C, C++, Java, SQL ngơn ngữ có tính khai báo Với SQL, ngƣời dùng cần mô tả yêu cầu cần phải thực sở liệu mà không cần phải cách thức thực u cầu nhƣ Chính vậy, SQL ngôn ngữ dễ tiếp cận dễ sử dụng BÀI TẬP Câu 1: Cho ví dụ số hệ quản trị sở liệu theo mơ hình Client/Server Câu 2: Hãy trình bày đặt trƣng mơ hình Client/Server? BÀI HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQL SERVER Giới thiệu SQL Server hệ thống quản lý sở liệu (Relational Database Management System (RDBMS) ) sử dụng Transact-SQL để trao đổi liệu Client computer SQL Server computer Một RDBMS bao gồm databases, database engine ứng dụng dùng để quản lý liệu phận khác RDBMS SQL Server đƣợc tối ƣu để chạy mơi trƣờng sở liệu lớn (Very Large Database Environment) lên đến Tera-Byte phục vụ lúc cho hàng ngàn user SQL Server 2000 kết hợp "ăn ý" với server khác nhƣ Microsoft Internet Information Server (IIS), E-Commerce Server, Proxy Server Mục tiêu thực Học xong học viên có khả năng: - Trình bày đƣợc đặc điểm hệ quản trị sở liệu SQL SERVER, lịch sử phát triển, thành phần - Cài đặt hệ quản trị CSDL Client/Server máy chủ máy khách - Thao tác xác tiến trình cài đặt, gỡ bỏ cài đặt - Sử dụng thành thạo điều khiển sở liệu Client/Server I GIỚI THIỆU HỆ QT CSDL SQL SERVER Ngơn ngữ hỏi có cấu trúc (SQL) hệ quản trị sở liệu quan hệ tảng kỹ thuật quan trọng cơng nghiệp máy tính Cho đến nay, nói SQL đƣợc xem ngơn ngữ chuẩn sở liệu Các hệ quản trị sở liệu quan hệ thƣơng mại có nhƣ Oracle, SQL Server, Informix, DB2, chọn SQL làm ngơn ngữ cho sản phẩm Vậy thực SQL gì? Tại lại quan trọng hệ quản trị sở liệu? SQL làm đƣợc nhƣ nào? Nó đƣợc sử dụng hệ quản trị sở liệu quan hệ? Nội dung chƣơng cung cấp cho nhìn tổng quan SQL số vấn đề liên quan SQL, viết tắt Structured Query Language (ngôn ngữ hỏi có cấu trúc), cơng cụ sử dụng để tổ chức, quản lý truy xuất liệu đuợc lƣu trữ sở liệu SQL hệ thống ngôn ngữ bao gồm tập câu lệnh sử dụng để tƣơng tác với sở liệu quan hệ Tên gọi ngơn ngữ hỏi có cấu trúc phần làm liên tƣởng đến công cụ (ngôn ngữ) dùng để truy xuất liệu sở liệu Thực mà nói, khả SQL vƣợt xa so với công cụ truy xuất liệu, mục đích ban đầu SQL đƣợc xây dựng nên truy xuất liệu chức quan trọng SQL đƣợc sử dụng để điều khiển tất chức mà hệ quản trị sở liệu cung cấp cho ngƣời dùng bao gồm: • Định nghĩa liệu: SQL cung cấp khả định nghĩa sở liệu, cấu trúc lƣu trữ tổ chức liệu nhƣ mối quan hệ thành phần liệu • Truy xuất thao tác liệu: Với SQL, ngƣời dùng dễ dàng thực thao tác truy xuất, bổ sung, cập nhật loại bỏ liệu sở liệu • Điều khiển truy cập: SQL đƣợc sử dụng để cấp phát kiểm soát thao tác ngƣời sử dụng liệu, đảm bảo an tồn cho sở liệu • Đảm bảo toàn vẹn liệu: SQL định nghĩa ràng buộc toàn vẹn sở liệu nhờ đảm bảo tính hợp lệ xác liệu trƣớc thao tác cập nhật nhƣ lỗi hệ thống Nhƣ vậy, nói SQL ngơn ngữ hồn thiện đƣợc sử dụng hệ thống sở liệu thành phần thiếu hệ quản trị sở liệu Mặc dù SQL ngơn ngữ lập trình nhƣ C, C++, Java, song câu lệnh mà SQL cung cấp đƣợc nhúng vào ngơn ngữ lập trình nhằm xây dựng ứng dụng tƣơng tác với sở liệu Khác với ngôn ngữ lập trình quen thuộc nhƣ C, C++, Java, SQL ngơn ngữ có tính khai báo Với SQL, ngƣời dùng cần mô tả yêu cầu cần phải thực sở liệu mà không cần phải cách thức thực yêu cầu nhƣ Chính vậy, SQL ngơn ngữ dễ tiếp cận dễ sử dụng II CÁC THÀNH PHẦN CỦA SQL SERVER BÀI TẠO THỦ TỤC TRONG SQL SERVER Giới thiệu - Khi tạo ứng dụng với Microsoft SQL server, ngơn ngữ lập trình Transact-SQL ngơn ngữ giao tiếp ứng dụng database SQL Khi tạo chƣơng trình Transact-SQL Phƣơng pháp dùng để lƣu trữ thực thi cho chƣơng trình dùng hàm StoredProcedure - Khả thực thi: việc kiểm tra cú pháp quyền thực thi đƣợc thực lần thứ lƣu vào nhớ đệm, lần thứ hai trở không cần kiểm tra lại - Bộ nhớ đệm xóa kết thúc phiên làm việc - Dễ dàng cho việc bảo trì - Nâng cao khả bảo mật: giới hạn truy cập tới User Mục tiêu Học xong học người học có khả năng: - Trình bày đƣợc thủ tục lƣu trữ với kiểu tham số - Sửa đổi đƣợc thủ tục định nghĩa - Xóa đƣợc thủ tục I TẠO THỦ TỤC Khái niệm Một Stored procedure đƣợc định nghĩa gồm thành phần sau: + Tên stored procedure + Các tham số + Thân stored procedure: bao gồm lệnh Transact-SQL dùng để thực thi procedure + Một stored procedure đƣợc tạo lệnh Create Procedure, thay đổi cách dùng lệnh Alter Procedure, xóa cách dùng lệnh Drop Procedure lập lệnh Transact – SQL SQL đƣợc thiết kế cài đặt nhƣ ngôn ngữ để thực thao tác sở liệu nhƣ tạo lập cấu trúc sở liệu, bổ sung, cập nhật, xoá truy vấn liệu sở liệu Các câu lệnh SQL đƣợc ngƣời sử dụng viết yêu cầu hệ quản trị sở liệu thực theo chế độ tƣơng tác Các câu lệnh SQL đƣợc nhúng vào ngơn ngữ lập trình, thơng qua chuỗi thao tác sở liệu đƣợc xác định thực thi nhờ vào câu lệnh, cấu trúc điều khiển thân ngơn ngữ lập trình đƣợc sử dụng Với thủ tục lƣu trữ, phần khả ngơn ngữ lập trình đƣợc đƣa vào ngôn ngữ SQL Một thủ tục đối tƣợng sở liệu bao gồm tập nhiều câu lệnh SQL đƣợc nhóm lại với thành nhóm với khả sau: 42 Các cấu trúc điều khiển (IF, WHILE, FOR) đƣợc sử dụng thủ tục  Bên thủ tục lƣu trữ sử dụng biến nhƣ ngơn ngữ lập trình nhằm lƣu giữ giá trị tính tốn đƣợc, giá trị đƣợc truy xuất đƣợc từ sở liệu  Một tập câu lệnh SQL đƣợc kết hợp lại với thành khối lệnh bên thủ tục Một thủ tục nhận tham số truyền vào nhƣ trả giá trị thơng qua tham số (nhƣ ngơn ngữ lập trình) Khi thủ tục lƣu trữ đƣợc định nghĩa, đƣợc gọi thơng qua tên thủ tục, nhận tham số truyền vào, thực thi câu lệnh SQL bên thủ tục trả giá trị sau thực xong Sử dụng thủ tục lƣu trữ sở liệu giúp tăng hiệu sở liệu, mang lại lợi ích sau:  Đơn giản hố thao tác sở liệu nhờ vào khả module hoá thao tác  Thủ tục lƣu trữ đƣợc phân tích, tối ƣu tạo nên việc thực thi chúng nhanh nhiều so với việc phải thực tập rời rạc câu lệnh SQL tƣơng đƣơng theo cách thông thƣờng  Thủ tục lƣu trữ cho phép thực yêu cầu câu lệnh đơn giản thay phải sử dụng nhiều dịng lệnh SQL Điều làm giảm thiểu lƣu thông mạng  Thay cấp phát quyền trực tiếp cho ngƣời sử dụng câu lệnh SQL đối tƣợng sở liệu, ta cấp phát quyền cho ngƣời sử dụng thông qua thủ tục lƣu trữ, nhờ tăng khả bảo mật hệ thống Tạo thủ tục lƣu trữ: Thủ tục lƣu trữ đƣợc tạo câu lệnh CREATE PROCEDURE với cú pháp nhƣ sau: CREATE PROCEDURE tên_thủ_tục [(danh_sách_tham_số)] [WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION] AS Các_câu_lệnh_của_thủ_tục  Trong đó: tên_thủ_tục danh_sách_tham_số RECOMPILE Tên thủ tục cần tạo Tên phải tuân theo qui tắc định danh không đƣợc vƣợt 128 ký tự Các tham số thủ tục đƣợc khai báo sau tên thủ tục thủ tục có nhiều tham số khai báo phân cách dấu phẩy Khai báo tham số tối thiểu phải bao gồm hai phần:  tên tham số đƣợc bắt đầu dấu @  kiểu liệu tham số Thông thƣờng, thủ tục đƣợc phân tích, tối ƣu dịch sẵn lần gọi Nếu tuỳ chọn WITH RECOMPILE đƣợc định, thủ tục đƣợc dịch lại 43 đƣợc gọi Thủ tục đƣợc mã hoá tuỳ chọn WITH ENCRYPTION đƣợc định Nếu thủ tục đƣợc ENCRYPTION mã hố, ta khơng thể xem đƣợc nội dung thủ tục Tập hợp câu lệnh sử dụng nội dung thủ tục các_câu_lệnh_của_thủ_tụcCác câu lệnh đặt cặp từ khố BEGIN END khơng Giả sử ta cần thực chuỗi thao tác nhƣ sau sở liệu - Bổ sung thêm môn học sở liệu có mã TI-005 số đơn vị học trình vào bảng MONHOC - Lên danh sách nhập điểm thi môn sở liệu cho sinh viên học lớp có mã C24102 (tức bổ sung thêm vào bảng DIEMTHI ghi với cột MAMONHOC nhận giá trị TI-005, cột MASV nhận giá trị lần lƣợt mã sinh viên học lớp có mã C24105 cột điểm NULL) Nếu thực yêu cầu thông qua câu lệnh SQL nhƣ thông thƣờng, ta phải thực thi hai câu lệnh nhƣ sau: INSERT INTO MONHOC VALUES('TI-005','Cơ sở liệu',5) INSERT INTO DIEMTHI(MAMONHOC,MASV) SELECT „TI-005',MASV FROM SINHVIEN WHERE MALOP='C24102' Thay phải sử dụng hai câu lệnh nhƣ trên, ta định nghĩa môt thủ tục lƣu trữ với tham số vào @mamonhoc, @tenmonhoc, @sodvht @malop nhƣ sau: CREATE PROC sp_LenDanhSachDiem( @mamonhoc NVARCHAR(10), @tenmonhoc NVARCHAR(50), @sodvht SMALLINT, @malop NVARCHAR(10)) AS BEGIN INSERT INTO monhoc VALUES(@mamonhoc,@tenmonhoc,@sodvht) INSERT INTO diemthi(mamonhoc,masv) SELECT @mamonhoc,masv FROM sinhvien WHERE malop=@malop END - Khi thủ tục đƣợc tạo ra, ta thực đƣợc hai yêu cầu đặt cách đơn giản thơng qua lịi gọi thủ tục: sp_LenDanhSachDiem 'TI-005','Cơ sở liệu',5,'C24102' 44 Ghi chú: - Trong SQL Server, ghi tắt số từ khóa mà tên có chiều dài ký tự - Ví dụ: thay Create Procedure Create Proc - Tên hàm, tên biến SQL Server không phân biệt hoa thƣờng Lời gọi thủ tục lƣu trữ: Chúng ta thấy ví dụ trên, thủ tục lƣu trữ đƣợc tạo ra, ta yêu cầu hệ quản trị sở liệu thực thi thủ tục lời gọi thủ tục có dạng: tên_thủ_tục [danh_sách_các_đối_số] Số lƣợng đối số nhƣ thứ tự chúng phải phù hợp với số lƣợng thứ tự tham số định nghĩa thủ tục Trong trƣờng hợp lời gọi thủ tục đƣợc thực bên thủ tục khác, bên trigger hay kết hợp với câu lệnh SQL khác, ta sử dụng cú pháp nhƣ sau: EXECUTE tên_thủ_tục [danh_sách_các_đối_số] Thứ tự đối số đƣợc truyền cho thủ tục khơng cần phải tn theo thứ tự tham số nhƣ định nghĩa thủ tục tất đối số đƣợc viết dƣới dạng: @tên_tham_số = giá_trị Lời gọi thủ tục ví dụ viết nhƣ sau: sp_LenDanhSachDiem @malop='C24102', @tenmonhoc='Cơ sở liệu', @mamonhoc='TI-005', @sodvht=5 Sử dụng biến thủ tục: Ngoài tham số đƣợc truyền cho thủ tục, bên thủ tục cịn sử dụng biến nhằm lƣu giữ giá trị tính tốn đƣợc truy xuất đƣợc từ sở liệu Các biến thủ tục đƣợc khai báo từ khoá DECLARE theo cú pháp nhƣ sau: DECLARE @tên_biến kiểu_dữ_liệu Tên biến phải bắt đầu ký tự @ tuân theo qui tắc định danh Ví dụ dƣới minh hoạ việc sử dụng biến thủ tục Ví dụ : Trong định nghĩa thủ tục dƣới sử dung biến chứa giá trị truy xuất đƣợc từ sở liệu CREATE PROCEDURE sp_Vidu( @malop1 NVARCHAR(10), @malop2 NVARCHAR(10)) AS DECLARE @tenlop1 NVARCHAR(30) DECLARE @namnhaphoc1 INT DECLARE @tenlop2 NVARCHAR(30) DECLARE @namnhaphoc2 INT 45 SELECT @tenlop1=tenlop, @namnhaphoc1=namnhaphoc FROM lop WHERE malop=@malop1 SELECT @tenlop2=tenlop, @namnhaphoc2=namnhaphoc FROM lop WHERE malop=@malop2 PRINT @tenlop1+' nhap hoc nam '+str(@namnhaphoc1) print @tenlop2+' nhap hoc nam '+str(@namnhaphoc2) IF @namnhaphoc1=@namnhaphoc2 PRINT 'Hai lớp nhập học năm' ELSE PRINT 'Hai lớp nhập học khác năm' Giá trị trả tham số thủ tục lƣu trữ Trong ví dụ trƣớc, đối số truyền cho thủ tục có lời gọi đến thủ tục biến, thay đổi giá trị biền thủ tục không đƣợc giữ lại kết thúc q trình thực thủ tục Ví dụ : Xét câu lệnh sau CREATE PROCEDURE sp_Conghaiso(@a INT,@b INT, @c INT) AS SELECT @c=@a+@b Nếu sau tạo thủ tục với câu lệnh trên, ta thực thi tập câu lệnh nhƣ sau: DECLARE @tong INT SELECT @tong=0 EXECUTE sp_Conghaiso 100,200,@tong SELECT @tong Câu lệnh "SELECT @tong" cuối loạt câu lệnh cho kết là: Trong trƣờng hợp cần phải giữ lại giá trị đối số sau kết thúc thủ tục, ta phải khai báo tham số thủ tục theo cú pháp nhƣ sau: @tên_tham_số kiểu_dữ_liệu OUTPUT hoặc: @tên_tham_số kiểu_dữ_liệu OUT lời gọi thủ tục, sau đối số đƣợc truyền cho thủ tục, ta phải định thêm từ khố OUTPUT (hoặc OUT) Ví dụ : Ta định nghĩa lại thủ tục ví dụ 5.4 nhƣ sau: CREATE PROCEDURE sp_Conghaiso( @a INT, @b INT, @c INT OUTPUT) AS SELECT @c=@a+@b thực lời gọi thủ tục tập câu lệnh nhƣ sau: 46 DECLARE @tong INT SELECT @tong=0 EXECUTE sp_Conghaiso 100,200,@tong OUTPUT SELECT @tong câu lệnh "SELECT @tong" cho kết là: 300 Tham số với giá trị mặc định Các tham số đƣợc khai báo thủ tục nhận giá trị mặc định Giá trị mặc định đƣợc gán cho tham số trƣờng hợp không truyền đối số cho tham số có lời gọi đến thủ tục Tham số với giá trị mặc định đƣợc khai báo theo cú pháp nhƣ sau: @tên_tham_số kiểu_dữ_liệu = giá_trị_mặc_định Ví dụ : Trong câu lệnh dƣới đây: CREATE PROC sp_TestDefault( @tenlop NVARCHAR(30)=NULL, @noisinh NVARCHAR(100)='Huế') AS BEGIN IF @tenlop IS NULL SELECT hodem,ten FROM sinhvien INNER JOIN lop ON sinhvien.malop=lop.malop WHERE noisinh=@noisinh ELSE SELECT hodem,ten FROM sinhvien INNER JOIN lop ON sinhvien.malop=lop.malop WHERE noisinh=@noisinh AND tenlop=@tenlop END thủ tục sp_TestDefault đƣợc định nghĩa với tham số @tenlop có giá trị mặc định NULL tham số @noisinh có giá trị mặc định Huế Với thủ tục đƣợc định nghĩa nhƣ trên, ta thực lời gọi với mục đích khác nhƣ sau:  Cho biết họ tên sinh viên sinh Huế: sp_testdefault  Cho biết họ tên sinh viên lớp Tin K24 sinh Huế: sp_testdefault @tenlop='Tin K24'  Cho biết họ tên sinh viên sinh Nghệ An: sp_testDefault @noisinh=N'Nghệ An'  Cho biết họ tên sinh viên lớp Tin K26 sinh Đà Nẵng: sp_testdefault @tenlop='Tin K26',@noisinh='Đà Nẵng' 47 II SỬA THỦ TỤC Khi thủ tục đƣợc tạo ra, ta tiến hành định nghĩa lại thủ tục câu lệnh ALTER PROCEDURE có cú pháp nhƣ sau: ALTER PROCEDURE tên_thủ_tục [(danh_sách_tham_số)] [WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION] AS Các_câu_lệnh_Của_thủ_tục Câu lệnh sử dụng tƣơng tự nhƣ câu lệnh CREATE PROCEDURE Việc sửa đổi lại thủ tục có khơng làm thay đổi đến quyền cấp phát thủ tục nhƣ không tác động đến thủ tục khác hay trigger phụ thuộc vào thủ tục III XÓA THỦ TỤC - Để xố thủ tục có, ta sử dụng câu lệnh DROP PROCEDURE với cú pháp nhƣ sau: DROP PROCEDURE tên_thủ_tục - Khi xoá thủ tục, tất quyền cấp cho ngƣời sử dụng thủ tục đồng thời bị xố bỏ Do đó, tạo lại thủ tục, ta phải tiến hành cấp phát lại quyền thủ tục BÀI TẬP THỰC HÀNH Ngƣời ta cần viết chƣơng trình quản lý điểm đề tài tốt nghiệp khoa trƣờng đại học với đặc tính sau: SINHVIEN( MSSV, TENSV, SODT, LOP, DIACHI) DETAI( MSDT, TENDT) SV_DETAI( MSSV, MSDT) GIAOVIEN( MSGV, TENGV, DIACHI, SODT, MSHHAM, NAMHH) HOCVI( MSHV, TENHV) CHUYENNGANH( MSCN,TENCN) GV_HV_CN( MSGV, MSHV, MSCN, NAM) HOCHAM(MSHH, TENHH) GV_HDDT(MSGV, MSDT, DIEM) GV_PBDT(MSGV, MSDT, DIEM) GV_UVDT(MSGV, MSDT, DIEM) HOIDONG( MSHD, PHONG, TGBD, NGAYHD, TINHTRANG, MSGVCTHD) HOIDONG_GV(MSHD, MSGV) DOIHONG_DT(MSHD, MSDT, QUYETDINH) A Stored procedure với tham số vào Tham số đƣa vào MSGV, TENGV, SODT, DIACHI, MSHH, NAMHH Trƣớc insert liệu cần kiểm tra MSHH tồn table HOCHAM chƣa, chƣa trả giá trị 48 Tham số đƣa vào MSGV, TENGV, SODT, DIACHI, MSHH, NAMHH Trƣớc insert liệu cần kiểm tra MSGV có trùng khơng, trùng trả giá trị Giống câu 1, kiểm tra xem MSGV có trùng khơng MSHH tồn chƣa Nếu MSGV trùng trả Nếu MSHH chƣa tồn trả 1, ngƣợc lại cho insert liệu B Stored procedure với tham số vào Đƣa vào TENHV trả ra: Số GV thoả học vị, khơng tìm thấy trả Đƣa vào MSDT cho biết: Điểm trung bình đề tài, khơng tìm thấy trả Đƣa vào TENGV trả ra: Số điện thoại giáo viên, khơng tìm thấy trả 49 BÀI TẠO HÀM TRONG SQL SERVER Giới thiệu Hàm đối tƣợng sở liệu tƣơng tự nhƣ thủ tục Điểm khác biệt hàm thủ tục hàm trả giá trị thơng qua tên hàm cịn thủ tục khơng Điều cho phép ta sử dụng hàm nhƣ thành phần biêu thức (chẳng hạn danh sách chọn câu lệnh SELECT) Mục tiêu Học xong học người học có khả năng: - Trình bày đƣợc cách khai báo sử dụng đƣợc hàm với kiểu liệu sở - Trình bày đƣợc cách khai báo sử dụng đƣợc hàm có kiểu liệu trả bảng I ĐỊNH NGHĨA VÀ SỬ DỤNG HÀM Định nghĩa hàm Hàm đƣợc định nghĩa thông qua câu lệnh CREATE FUNCTION với cú pháp nhƣ 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 dƣới định nghĩa hàm tính ngày tuần (thứ tuần) giá trị kiểu ngày CREATE FUNCTION thu(@ngay DATETIME) RETURNS NVARCHAR(10) AS BEGIN DECLARE @st NVARCHAR(10) SELECT @st=CASE DATEPART(DW,@ngay) WHEN THEN 'Chu nhật' WHEN THEN 'Thứ hai' WHEN THEN 'Thứ ba' WHEN THEN 'Thứ tƣ' WHEN THEN 'Thứ năm' WHEN THEN 'Thứ sáu' 50 ELSE 'Thứ bảy' END RETURN (@st)/* Trị trả hàm */ END Một hàm đƣợc định nghĩa đƣợc sử dụng nhƣ hàm hệ quản trị sở liệu cung cấp (thông thƣờng trƣớc tên hàm ta phải định thêm tên ngƣời sở hữu hàm) Ví dụ : Câu lệnh SELECT dƣới sử dụng hàm đƣợc định nghĩa ví dụ trƣớc: SELECT masv,hodem,ten,dbo.thu(ngaysinh),ngaysinh FROM sinhvien WHERE malop=‟C24102‟ II HÀM VỚI GIÁ TRỊ TRẢ VỀ LÀ DỮ LIỆU KIỂU BẢNG Ta biết đƣợc chức nhƣ tiện lợi việc sử dụng khung nhìn sở liệu Tuy nhiên, cần phải sử dụng tham số khung nhìn (chẳng hạn tham số mệnh đề WHERE câu lệnh SELECT) ta lại khơng thể thực đƣợc Điều phần làm giảm tính linh hoạt việc sử dụng khung nhìn Ví dụ : Xét khung nhìn đƣợc định nghĩa nhƣ sau: CREATE VIEW sinhvien_k25 AS SELECT masv,hodem,ten,ngaysinh FROM sinhvien INNER JOIN lop ON sinhvien.malop=lop.malop WHERE khoa=25 với khung nhìn trên, thơng qua câu lệnh: SELECT * FROM sinhvien_K25 ta biết đƣợc danh sách sinh viên khoá 25 cách dễ dàng nhƣng rõ ràng thông qua khung nhìn để biết đƣợc danh sách sinh viên khố khác khơng thể sử dụng điều kiện có dạng KHOA = @thamso mệnh đề WHERE câu lệnh SELECT đƣợc Nhƣợc điểm khung nhìn khắc phục cách sử dụng hàm với giá trị trả dƣới dạng bảng đƣợc gọi hàm nội tuyến (inline function) Việc sử dụng hàm loại cung cấp khả nhƣ khung nhìn nhƣng cho phép sử dụng đƣợc tham số nhờ tính linh hoạt cao Một hàm nội tuyến đƣợc định nghĩa câu lệnh CREATE TABLE với cú pháp nhƣ sau: CREATE FUNCTION tên_hàm ([danh_sách_tham_số]) RETURNS TABLE AS RETURN (câu_lệnh_select) 51 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 đƣợc định mệnh đề RETURNS TABLE • 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ụ : Ta định nghĩa hàm func_XemSV nhƣ sau: CREATE FUNCTION func_XemSV(@khoa SMALLINT) RETURNS TABLE AS RETURN(SELECT masv,hodem,ten,ngaysinh FROM sinhvien INNER JOIN lop ON sinhvien.malop=lop.malop WHERE khoa=@khoa) hàm nhận tham số đầu vào khóa sinh viên cần xem giá trị trả hàm tập dịng liệu cho biết thơng tin sinh viên khố Các hàm trả giá trị dƣới dạng bảng đƣợc sử dụng nhƣ bảng hay khung nhìn câu lệnh SQL Với hàm đƣợc định nghĩa nhƣ trên, để biết danh sách sinh viên khoá 25, ta sử dụng câu lệnh nhƣ sau: SELECT * FROM dbo.func_XemSV(25) câu lệnh dƣới cho ta biết đƣợc danh sách sinh viên khoá 26 SELECT * FROM dbo.func_XemSV(26) Đối với hàm nội tuyến, phần thân hàm cho phép xuất câu lệnh RETURN Trong trƣờng hợp cần phải sử dụng đến nhiều câu lệnh phần thân hàm, ta sử dụng cú pháp nhƣ sau để định nghĩa hàm: 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 Khi định nghĩa hàm dạng cần lƣu ý số điểm sau: • Cấu trúc bảng trả hàm đƣợc xác định dựa vào định bảng mệnh đề RETURNS Biến @biến_bảng nghĩa mệnh đề RETURNS có phạm vi sử dụng hàm đƣợc sử dụng nhƣ tên bảng • Câu lệnh RETURN thân hàm không định giá trị trả Giá trị trả hàm dịng liệu bảng có tên @biến bảng đƣợc định nghĩa mệnh đề RETURNS Cũng tƣơng tự nhƣ hàm nội tuyến, dạng hàm đƣợc sử dụng câu lệnh SQL với vai trị nhƣ bảng hay khung nhìn Ví dụ dƣới minh hoạ cách sử dụng dạng hàm SQL 52 Ví dụ: Ta định nghĩa hàm func_TongSV nhƣ sau: CREATE FUNCTION Func_Tongsv(@khoa SMALLINT) RETURNS @bangthongke TABLE (Makhoa NVARCHAR(5),tenkhoa NVARCHAR(50), tongsosv INT) AS BEGIN IF @khoa=0 INSERT INTO @bangthongke SELECT khoa.makhoa,tenkhoa,COUNT(masv) FROM (khoa INNER JOIN lop ON khoa.makhoa=lop.makhoa) INNER JOIN sinhvien on lop.malop=sinhvien.malop GROUP BY khoa.makhoa,tenkhoa ELSE INSERT INTO @bangthongke SELECT khoa.makhoa,tenkhoa,COUNT(masv) FROM (khoa INNER JOIN lop ON khoa.makhoa=lop.makhoa) INNER JOIN sinhvien ON lop.malop=sinhvien.malop WHERE khoa=@khoa GROUP BY khoa.makhoa,tenkhoa RETURN /*Trả kết cho hàm*/ END Với hàm đƣợc định nghĩa nhƣ trên, câu lệnh: SELECT * FROM dbo.func_TongSV(25) Sẽ cho kết thống kê tổng số sinh viên khố 25 khoa: Cịn câu lệnh: SELECT * FROM dbo.func_TongSV(0) Cho ta biết tổng số sinh viên có (tất khố) khoa: 53 BÀI TẬP THỰC HÀNH Cơ sở liệu dƣới đƣợc sử dụng để quản lý công tác giao hàng công ty kinh doanh Các bảng sở liệu đƣợc biểu diễn sơ đồ dƣới đây: Trong đó:  Bảng NHACUNGCAP lƣu trữ liệu đối tác cung cấp hàng cho công ty  Bảng MATHANG lƣu trữ liệu mặt hàng có cơng ty  Bảng LOAIHANG phân loại mặt hàng có  Bảng NHANVIEN có liệu thơng tin nhân viên làm việc công ty  Bảng KHACHHANG đƣợc sử dụng để lƣu giữ thông tin khách hàng công ty  Khách hàng đặt hàng cho công ty thông qua đơn đặt hàng Thông tin chung đơn đặt hàng đƣợc lƣu trữ bảng DONDATHANG (Mỗi đơn đặt hàng phải nhân viên công ty lập bảng có quan hệ với bảng NHANVIEN)  Thông tin chi tiết đơn đặt hàng (đặt mua mặt hàng gì, số lƣợng, giá cả, ) đƣợc lƣu trữ bảng CHITIETDATHANG Bảng có quan hệ 54 với hai bảng DONDATHANG MATHANG Viết hàm trả bảng cho biết tổng số lƣợng hàng bán đƣợc mặt hàng Sử dụng hàm để thống kê xem tổng số lƣợng hàng (hiện có bán) mặt hàng Viết hàm nội tuyến với tham số SOHD, cho biết mặt hàng có số lƣợng bán nhiều Viết hàm lấy thông tin hố đơn gồm thơng tin SOHD, MAHANG, GIABAN, SOLUONG 55 CÁC THUẬT NGỮ CHUYÊN MÔN Database: Cơ sở liệu Server: Máy chủ Client: Máy khách Function: hàm Procedure: thủ tục TÀI LIỆU THAM KHẢO Giáo trình SQL Server – Trần Nguyên Phong – Trƣờng Đại học Khoa học Huế Website: http://vovisoft.com ASP.NET- Kỹ thuật ứng dụng – Nhà xuất thống kê 2002 56 ... số hệ quản trị sở liệu theo mơ hình Client /Server Câu 2: Hãy trình bày đặt trƣng mơ hình Client /Server? BÀI HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQL SERVER Giới thiệu SQL Server hệ thống quản lý sở liệu. .. Client /server Bài 2: Hệ quản trị sở liệu MS SQL Server I Giới thiệu hệ quản trị sở liệu MS SQL Server II Các công cụ MS SQL Server III Làm việc với công cụ Enterprise Manager Bài 3: Các thao tác SQL. .. KIỂU DỮ LIỆU TRONG SQL SERVER 13 II TẠO CƠ SỞ DỮ LIỆU TRONG SQL SERVER 14 III TẠO BẢNG TRONG SQL SERVER 15 NHẬP DỮ LIỆU TRONG SQL SERVER 18 VI TRUY VẤN TRONG SQL SERVER

Ngày đăng: 29/12/2022, 15:19

Tài liệu cùng người dùng

Tài liệu liên quan