Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 97 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
97
Dung lượng
1,66 MB
Nội dung
TRƯỜNG CAO ĐẲNG CƠ ĐIỆN HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN GIÁO TRÌNH MƠ ĐUN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU (Tài liệu lưu hành nội bộ) Hà Nội Mục lục Bài 1: Tổng quan hệ quản trị sở liệuMS SQL Server .1 Giới thiệu, cài đặt hệ quản trị sở liệu MS SQL Server Các công cụ, kiểu liệu MS SQL Server 10 Detach Attach sở liệu 14 Import Export sở liệu 16 Backup Restore sở liệu 28 Bài 2: Định nghĩa liệu MS SQL Server 31 Tạo, sử dụng, xóa sở liệu 31 Tạo bảng liệu 31 Tạo loại ràng buộc liệu 32 3.1 Tạo ràng buộc khóa Primary 32 3.2 Tạo ràng buộc khóa ngoại Foreign key 32 3.3 Tạo ràng buộc Default 37 3.4 Tạo ràng buộc Unique 38 3.5 Tạo ràng buộc Check 39 Sửa, xóa bảng liệu 41 Bài Thao tác liệu MS SQL Server 46 Thêm dòng liệu .46 Cập nhật liệu 47 Xóa dòng liệu 50 Truy xuất liệu 51 4.1 Lấy thông tin từ cột bảng mệnh đề SELECT 51 4.2 Chọn dòng bảng mệnh đề WHERE 60 4.3 Truy vấn thông tin từ nhiều bảng 64 4.4 Phân nhóm liệu mệnh đề GROUP BY 75 4.5 Lọc nhóm kết truy vấn mệnh đề HAVING 78 4.6 Sắp xếp kết truy vấn mệnh đề ORDER BY 78 4.7 Truy vấn lồng 80 Bài 4: Khung nhìn (View) 83 Tạo khung nhìn 83 Cập nhật, bổ sung xóa liệu thơng qua khung nhìn 84 Sửa đổi khung nhìn .90 Xóa khung nhìn 91 Bài 1: Tổng quan hệ quản trị sở liệuMS SQL Server Giới thiệu, cài đặt hệ quản trị sở liệu MS SQL Server 1.1 Giới thiệu hệ quản trị sở liệu MS SQL Server Hệ quản trị sở liệu (Database Management System – DBMS): Là tập hợp chương trình dùng để quản lý cấu trúc liệu sở liệu đồng thời điều khiển việc truy xuất liệu sở liệu Cung cấp cho người dùng ứng dụng môi trường thuận tiện sử dụng hiệu tài nguyên liệu Ví dụ: Một số hệ quản trị CSDL thường gặp: MS Access MS SQL Server MySQL Oracle Microsoft SQL Server: Là hệ quản trị sở liệu Microsoft phát triển Hoạt động theo mơ hình Client/Server cho phép đồng thời lúc nhiều người dùng truy xuất đến sở liệu 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ả Trang SQL vượt xa so với công cụ truy xuất liệu, mục đích ban đầu SQL xây dựng nên truy xuất liệu chức quan trọng SQL 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 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 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 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 lỗi hệ thống Như vậy, nói SQL ngơn ngữ hồn thiện 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 C, C++, Java, song câu lệnh mà SQL cung cấp 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 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 Chính vậy, SQL ngơn ngữ dễ tiếp cận dễ sử dụng SQL Server sử dụng ngơn ngữ lập trình truy vấn CSDL Transact-SQL (T-SQL), phiên Structured Query Language Ngôn ngữ lập trình truy vấn T-SQL cho phép truy xuất liệu, cập nhật quản lý hệ thống CSDL quan hệ Mỗi máy chủ có hệ quản trị CSDL SQL Server 1.2 Cài đặt hệ quản trị sở liệu MS SQL Server - Bước : Tại hình cài đặt SQL Server 2008 bạn chọn mục Installation sau chọn New SQL Server stand-alone installation or add features to an existing installation Trang - Bước : Tại hình Setup Support Rules chọn OK Trang - Bước : Tại hình "Product Key", chọn Next để tiếp tục - Bước : Tại hình License Term, đánh dấu chọn nút "I accept the licence terms", chọn "Next" Trang - Bước : Tại hình "setup support files" nhấn nút "install" để tiếp tục - Bước : hình "Setup Support Rules", thứ sn sẽ, nhấn nút "Next" để tiếp tục Trang - Bước : Trên hình "features selection", nút "Sellect All" để chọn tất cả, sau nhấn nút "Next" - Bước : hình "instance Configuratio", có lựa chọn : chọn hình dưới, nhấn nút Next để tiếp tục Trang - Bước : Chọn Next để tiếp tục - Bước 10 : Chọn "Account Name" chọn NT AUTHORITY\NETWORK hình sau đây, sau nhấn Next để tiếp tục Trang SELECT sinhvien.masv,hodem,ten, sum(diemlan1*sodvht)/sum(sodvht) FROM sinhvien,diemthi,monhoc WHERE sinhvien.masv=diemthi.masv AND diemthi.mamonhoc=monhoc.mamonhoc GROUP BY sinhvien.masv,hodem,ten cho biết trung bình điểm thi lần mơn học sinh viên Lưu ý: Trong trường hợp danh sách chọn câu lệnh SELECT có hàm gộp biểu thức hàm gộp biểu thức phải có mặt đầy đủ mệnh đề GROUP BY, không câu lệnh khơng hợp lệ Ví dụ: Dưới câu lệnh sai SELECT lop.malop,tenlop,COUNT(masv) FROM lop,sinhvien WHERE lop.malop=sinhvien.malop GROUP BY lop.malop thiếu trường TENLOP sau mệnh đề GROUP BY 4.5 Lọc nhóm kết truy vấn mệnh đề HAVING Mệnh đề HAVING sử dụng nhằm định điều kiện giá trị thống kê sản sinh từ hàm gộp tương tự cách thức mệnh đề WHERE thiết lập điều kiện cho câu lệnh SELECT Mệnh đề HAVING thường không thực có nghĩa khơng sử dụng kết hợp với mệnh đề GROUP BY Một điểm khác biệt HAVING WHERE điều kiện WHERE hàm gộp HAVING lại cho phép sử dụng hàm gộp điều kiện Trang 80 Ví dụ: Để biết trung bình điểm thi lần sinh viên có điểm trung bình lớn 5, ta sử dụng câu lệnh sau: SELECT sinhvien.masv,hodem,ten, SUM(diemlan1*sodvht)/sum(sodvht) FROM sinhvien,diemthi,monhoc WHERE sinhvien.masv=diemthi.masv AND diemthi.mamonhoc=monhoc.mamonhoc GROUP BY sinhvien.masv,hodem,ten HAVING sum(diemlan1*sodvht)/sum(sodvht)>=5 4.6 Sắp xếp kết truy vấn mệnh đề ORDER BY Mặc định, dòng liệu kết câu truy vấn tuân theo thứ tự củachúng bảng liệu xếp theo mục (nếu bảng có mục) Trong trường hợp muốn liệu xếp theo chiều tăng giảm giá trị củamột nhiều trường, ta sử dụng thêm mệnh đề ORDER BY câu lệnhSELECT; Sau ORDER BY danh sách cột cần xếp (tối đa 16 cột) Dữ liệu xếp theo chiều tăng (ASC) giảm (DESC), mặc định xếp theo chiều tăng Ví dụ: Câu lệnh hiển thị danh sách môn học xếp theo chiều giảm dần số đơn vị học trình SELECT * FROM monhoc ORDER BY sodvht DESC Trang 81 Nếu sau ORDER BY có nhiều cột việc xếp liệu ưu tiên theo thứ tự từ trái qua phải Ví dụ: Câu lệnh SELECT hodem,ten,gioitinh, YEAR(GETDATE())-YEAR(ngaysinh) AS tuoi FROM sinhvien WHERE ten='Bình' ORDER BY gioitinh,tuoi có kết là: Thay định tên cột sau ORDER BY, ta định số thứ tự cột cấn xếp Câu lệnh ví dụ viết lại sau: SELECT hodem,ten,gioitinh,YEAR(GETDATE())-YEAR(ngaysinh) AS tuoi FROM sinhvien WHERE ten='Bình' ORDER BY 3, 4.7 Truy vấn lồng Kết truy vấn sử dụng đề thực phép so sánh số học với Trang 82 biểu thức truy vấn cha Trong trường hợp này, truy vấn sử dụng dạng: WHERE biểu_thức phép_toán_số_học [ANY|ALL] (truy_vấn_con) Trong phép tốn số học sử dụng bao gồm: =, , >, =, =(SELECT sodvht FROM monhoc WHERE mamonhoc='TI-001') Nếu truy vấn trả nhiều giá trị, việc sử dụng phép so sánh không hợp lệ Trong trường hợp này, sau phép toán so sánh phải sử dụng thêm lượng từ ALL ANY Lượng từ ALL sử dụng cần so sánh giá trị biểu thức với tất giá trị trả kết truy vấn con; ngược lai, phép so sánh với lượng từ ANY có kết cần giá trị kết truy vấn thoả mãn điều kiện Ví dụ 2.44: Câu lệnh cho biết họ tên sinh viên lớp Tin K25 sinh trước tất sinh viên lớp Toán K25 SELECT hodem,ten FROM sinhvien JOIN lop ON sinhvien.malop=lop.malop WHERE tenlop='Tin K25' AND ngaysinh (SELECT AVG(diemlan1) FROM diemthi) Bài 4: Khung nhìn (View) Các bảng sở liệu đóng vai trị đối tượng tổ chức lưu trữ dữliệu Như vậy, ta quan sát liệu sở liệu cách thực hiệncác truy vấn bảng liệu Ngồi ra, SQL cịn cho phép quan sát liệu thông qua việc định nghĩa khung nhìn Một khung nhìn (view) xem bảng “ảo” sở liệu có Trang 85 nội dung định nghĩa thơng qua truy vấn (câu lệnh SELECT) Như vậy, khung nhìn trơng giống bảng với tên khung nhìn tập bao gồm dịng cột Điểm khác biệt khung nhìn bảng khung nhìn khơng xem cấu trúc lưu trữ liệu tồn sở liệu Thực chất liệu quan sát khung nhìn lấy từ bảng thơng qua câu lệnh truy vấn liệu Hình 1: Khung nhìn DSSV với liệu lấy từ bảng SINHVIEN LOP Hình minh hoạ cho ta thấy khung nhìn có tên DSSV định nghĩa thông qua câu lệnh SELECT truy vấn liệu hai bảng SINHVIEN LOP: SELECT masv,hodem,ten, DATEDIFF(YY,ngaysinh,GETDATE()) AS tuoi,tenlop FROM sinhvien,lop WHERE sinhvien.malop=lop.malop Khi khung nhìn DSSV định nghĩa, ta sử dụng câu lệnh SELECT để truy vấn liệu từ khung nhìn bảng Khi câu truy vấn xuất khung nhìn, hệ quản trị sở liệu dựa vào đinh nghĩa khung nhìn để chuyển yêu cầu truy vấn liệu liên quan đến khung nhìn thành yêu cầu tương tự bảng sở việc truy vấn liệu thực yêu cầu tương đương bảng Việc sử dụng khung nhìn sở liệu đem lại lợi ích sau đây: Bảo mật liệu: Người sử dụng cấp phát quyền khung nhìn với Trang 86 phần liệu mà người sử dụng phép Điều hạn chế phần việc người sử dụng truy cập trực tiếp liệu Đơn giản hoá thao tác truy vấn liệu: Một khung nhìn đóng vai trò đối tượng tập hợp liệu từ nhiều bảng khác vào “bảng” Nhờ vào đó, người sử dụng thực yêu cầu truy vấn liệu cách đơn giản từ khung nhìn thay phải đưa câu truy vấn phức tạp Tập trung đơn giản hồ liệu: Thơng qua khung nhìn ta cung cấp cho người sử dụng cấu trúc đơn giản, dễ hiểu liệu sở liệu đồng thời giúp cho người sử dụng tập trung phần liệu cần thiết Độc lập liệu: Một khung nhìn cho phép người sử dụng có đượccái nhìn liệu độc lập với cấu trúc bảng sở liệu cho dù bảng sở có bị thay đổi phần cấu trúc Tuy nhiên, việc sử dụng khung nhìn tồn số nhược điểm sau: Do hệ quản trị sở liệu thực việc chuyển đổi truy vấn khung nhìn thành truy vấn bảng sở nên khung nhìn định nghĩa truy vấn phức tạp dẫn đến chi phí mặt thời gian thực truy vấn liên quan đến khung nhìn lớn Mặc dù thơng qua khung nhìn thực thao tác bổ sung cập nhật liệu cho bảng sở hạn chế khung nhìn đơn giản Đối với khung nhìn phức tạp thường khơng thực được; hay nói cách khác liệu khung nhìn đọc Tạo khung nhìn Câu lệnh CREATE VIEW sử dụng để tạo khung nhìn có cú phápnhư sau: CREATE VIEW tên_khung_nhìn[(danh_sách_tên_cột)] AS câu_lệnh_SELECT Ví dụ: Câu lệnh tạo khung nhìn có tên DSSV từ câu lệnh SELECT truyvấn liệu từ hai bảng SINHVIEN LOP CREATE VIEW dssv AS SELECT masv,hodem,ten, DATEDIFF(YY,ngaysinh,GETDATE()) AS tuoi,tenlop Trang 87 FROM sinhvien,lop WHERE sinhvien.malop=lop.malop thực câu lệnh: SELECT * FROM dssv ta có kết sau: Nếu câu lệnh CREATE VIEW, ta không định danh sách tên cột cho khung nhìn, tên cột khung nhìn tiêu đề cột kết quảcủa câu lệnh SELECT Trong trường hợp tên cột khung nhìn đươc định,chúng phải có số lượng với số lượng cột kết câu truy vấn Ví dụ: Câu lệnh tạo khung nhìn từ câu truy vấn tương tự ví dụ trênnhưng có đặt tên cho cột khung nhìn: CREATE VIEW dssv(ma,ho,ten,tuoi,lop) AS SELECT masv,hodem,ten, DATEDIFF(YY,ngaysinh,GETDATE()),tenlop FROM sinhvien,lop WHERE sinhvien.malop=lop.malop câu lệnh: SELECT * FROM dssv Trang 88 Khi tạo khung nhìn với câu lệnh CREATE VIEW, ta cần phải lưu ý số nguyên tắc sau: Tên khung nhìn tên cột khung nhìn, giống bảng, phải tuân theo qui tắc định danh Không thể qui định ràng buộc tạo mục cho khung nhìn Câu lệnh SELECT với mệnh đề COMPUTE BY không sử dụng để định nghĩa khung nhìn Phải đặt tên cho cột khung nhìn trường hợp sau đây: Trong kết câu lệnh SELECT có cột sinh biểu thức (tức là tên cột bảng sở) cột khơng đặt tiêu đề Tồn hai cột kết câu lệnh SELECT có tiêu đề cột Ví dụ: Câu lệnh câu lệnh sai cột thứ không xác định tên cột CREATE VIEW tuoisinhvien AS SELECT masv,hodem,ten,DATEDIFF(YY,ngaysinh,GETDATE()) FROM sinhvien Cập nhật, bổ sung xóa liệu thơng qua khung nhìn Đối với số khung nhìn, ta tiến hành thực thao tác cập nhập, bổ sung xoá liệu Thực chất, thao tác chuyển thành nhữngthao tác tương tự bảng sở có tác động đến bảng sở Về mặt lý thuyết, để thực thao tác bổ sung, cập nhật xố, mộtkhung nhìn trước tiên phải thoả mãn điều kiện sau đây: Trang 89 Trong câu lệnh SELECT định nghĩa khung nhìn khơng sử dụng từ khoá DISTINCT, TOP, GROUP BY UNION Các thành phần xuất danh sách chọn câu lệnh SELECT phải cột bảng sở Trong danh sách chọn không chứa biểu thức tính tốn, hàm gộp Ngồi điều kiện trên, thao tác thay đổi đến liệu thơng qua khungnhìn cịn phải đảm bảo thoả mãn ràng buộc bảng sở, tức đảm bảotính tồn vẹn liệu Ví dụ minh hoạ cho ta thấy việc thực thao tác bổ sung, cập nhật xoá liệu thơng qua khung nhìn Ví dụ:Xét định nghĩa hai bảng DONVI NHANVIEN sau: CREATE TABLE donvi ( madv INT PRIMARY KEY, endv NVARCHAR(30) NOT NULL, dienthoai NVARCHAR(10) NULL ) CREATE TABLE nhanvien ( manv NVARCHAR(10) hoten PRIMARY KEY, NVARCHAR(30) NOT NULL, ngaysinh DATETIME diachi NVARCHAR(50) NULL, NULL, madv INT FOREIGN KEY ON DELETE CASCADE ON UPDATE CASCADE REFERENCES donvi(madv) ) Giả sử hai bảng có liệu sau: Trang 90 Bảng DONVI Bảng NHANVIEN Câu lệnh định nghĩa khung nhìn NV1 cung cấp thông tin mã nhânviên, họ tên mã đơn vị nhân viên làm việc: CREATE VIEW nv1 AS SELECT manv,hoten,madv FROM nhanvien Nếu ta thực câu lệnh INSERT INTO nv1 VALUES('NV04','Le Thi D',1) Một ghi bổ sung vào bảng NHANVIEN liệu bảng sẽlà: Bản ghi Thông qua khung nhìn này, ta thực thao tác cập nhật xoá liệu Chẳng hạn, ta thực câu lệnh: DELETE FROM nv1 WHERE manv='NV04' Thì ghi tương ứng với nhân viên có mã NV04 bị xoá khỏi bảng NHANVIEN Nếu danh sách chọn câu lệnh SELECT có xuất biểu thứctính tốn đơn giản, thao tác bổ sung liệu thơng qua khung nhìn khơng thể thực hiệnđược Tuy nhiên, trường hợp thao tác cập nhật xố liệu vấn có khả thực (hiển nhiên cập nhật liệu cột cóđược từ biểu thức tính tốn) Ví dụ: Xét khung nhìn NV2 định nghĩa sau: CREATE VIEW nv2 AS Trang 91 SELECT manv,hoten,YEAR(ngaysinh) AS namsinh,madv FROM nhanvien Đối với khung nhìn NV2, ta thực thao tác bổ sung liệu có thểcập nhật xố liệu bảng thơng qua khung nhìn Câu lệnh làkhơng thể thực khung nhìn NV2 INSERT INTO nv2(manv,hoten,madv) VALUES('NV05','Le Van E',1) Nhưng câu lệnh: UPDATE nv2 SET hoten='Le Thi X' WHERE manv='NV04' câu lệnh DELETE FROM nv2 WHERE manv='NV04' lại thực có tác động liệu bảng NHANVIENTrong trường hợp khung nhìn tạo từ phép nối (trong ngồi)trên nhiều bảng, ta thực thao tác bổ sung cập nhật liệu nếuthao tác có tác động đến bảng sở (câu lệnh DELETE không thểthực trường hợp này) Ví dụ: Với khung nhìn định nghĩa sau: CREATE VIEW nv3 AS SELECT manv,hoten,ngaysinh, diachi,nhanvien.madv AS noilamviec, donvi.madv, tendv, dienthoai FROM nhanvien FULL OUTER JOIN donvi ON nhanvien.madv=donvi.madv Câu lệnh: INSERT INTO nv3(manv,hoten,noilamviec) VALUES('NV05','Le Van E',1) bổ sung thêm vào bảng NHANVIEN ghi Hoặc câu lệnh: INSERT INTO nv3(madv,tendv) VALUES(3,'P Ke toan') bổ sung thêm vào bảng DONVI ghi hai câu lệnh có tác động đến Trang 92 bảng sở Câu lệnh thực có tác động lúc đến hai bảng sở INSERT INTO nv3(manv,hoten,noilamviec,madv,tendv) VALUES('NV05','Le Van E',1,3,'P Ke toan') Sửa đổi khung nhìn Câu lệnh ALTER VIEW sử dụng đểđịnh nghĩa lại khung nhìn có khơng làm thay đổi quyền cấp phát cho người sử dụng trước Câu lệnh sử dụng tương tự câu lệnh CREATE VIEW có cú pháp sau: ALTER VIEW tên_khung_nhìn [(danh_sách_tên_cột)] AS Câu_lệnh_SELECT Ví dụ: Ta định nghĩa khung nhìn sau: CREATE VIEW viewlop AS SELECT malop,tenlop,tenkhoa FROM lop INNER JOIN khoa ON lop.makhoa=khoa.makhoa WHERE tenkhoa='Khoa Vật lý’ định nghĩa lại khung nhìn câu lệnh: ALTER VIEW view_lop AS SELECT malop,tenlop,hedaotao FROM lop INNER JOIN khoa ON lop.makhoa=khoa.makhoa WHERE tenkhoa='Khoa Cơng nghệ thơng tin' Xóa khung nhìn Khi khung nhìn khơng cịn sử dụng, ta xố khỏi sở liệuthơng qua câu lệnh: Trang 93 DROP VIEW tên_khung_nhìn Nếu khung nhìn bị xố, tồn quyền cấp phát cho người sử dụng trênkhung nhìn đồng thời bị xố Do đó, ta tạo lại khung nhìn phải tiến hànhcấp phát lại quyền cho người sử dụng Ví dụ: Câu lệnh xố khung nhìn VIEW_LOP khỏi sở liệu DROP VIEW view_lop Trang 94 ... nghĩa liệu MS SQL Server Tạo, sử dụng, xóa sở liệu 1. 1 Tạo Cơ sở liệu Cú pháp: CREATE DATABASE Ví dụ: CREATE DATABASE QuanLyDiem 1. 2 Sử dụng Cơ sở liệu Cú pháp: USE ... MS SQL Server 1. 1 Giới thiệu hệ quản trị sở liệu MS SQL Server Hệ quản trị sở liệu (Database Management System – DBMS): Là tập hợp chương trình dùng để quản lý cấu trúc liệu sở liệu đồng thời... lục Bài 1: Tổng quan hệ quản trị sở liệuMS SQL Server .1 Giới thiệu, cài đặt hệ quản trị sở liệu MS SQL Server Các công cụ, kiểu liệu MS SQL Server 10 Detach Attach sở liệu