Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Ôn Tập Môn Hệ Quản Trị Cơ Sở Dữ Liệu                                                          Edit by Edward_Thien Nội dun...
 Tính toàn vẹn dữ liệu (data integrity),             An toàn dữ liệu (data secutity)             Độc lập dữ liệu (data ...
• Mức vật lý CSDL SQL Server tối thiểu có 2 tập tin:             – Tập tin dữ liệu (data file) gồm có:                    ...
MaSV           char(6) not null,       MaLop          char(6) not null default ‘CNTT07’ ,       HoTen          nvarchar(30...
FROM <danh sách các table hoặc query/view [as alias] >[WHERE <dieu kien_1>][GROUP BY <danh sách các thuộc tính_2>][HAVING ...
As Select_statementVí dụ:               Create View vw_SinhVien               As Select * From SinhVien         Mẹo khi t...
 @fetch_status: cho biết thao tác lấy dữ liệu từ cursor có thành công không1 số hàm thường dùng: tự mò trong Slide. :D   ...
when ‘Nu’ then 55                        End Select MaNV, HoTen, ‘Loai’ = Case when CapBac<=3 then ‘Binh Thuong’ when CapB...
Stored procedure làm cho database server phải tốn nhiều tài nguyên về cả bộ nhớlẫn xử lý. Thay vì tập trung vào tính năng ...
Select MaSV, HoVaTen, NgaySinh           From SinhVien where MaLop = @MaLop Go         Gọi thủ tục nội tại bằng Script: E...
 Giải thích: Ở đây, chúng ta có 3 công việc, CongViec1, CongViec2 và     CongViec3.Làm xong, chúng ta RollBack đến CongVi...
o Chứa các dòng dữ liệu vừa được thêm mới trong hành động          INSERT/UPDATE vào bảng        o Có ở cả hai loại trigge...
 Trigger cập nhật giá trị:   • Cho hai lược đồ quan hệ:CT_HOA_DON(SoHD, MaS, SoLuong, DonGia, ThanhTien)HOA_DON(SoHD, MaK...
Xem thêm trong Slide.X.       Chiến lược BackUp và Restore dữ liệu.
Upcoming SlideShare
Loading in …5
×

ôn tập dbms

2,213 views

Published on

  • Be the first to comment

ôn tập dbms

  1. 1. Ôn Tập Môn Hệ Quản Trị Cơ Sở Dữ Liệu Edit by Edward_Thien Nội dung: I. Giới thiệu Hệ quản trị CSDL. II. Giới thiệu ngôn ngữ T-SQL. III. Tạo CSDL. IV. Tạo Bảng dữ liệu. V. Thao tác trên dữ liệu: truy vấn, thêm, xóa sửa. VI. Khung nhìn –VIEW.VII. Store Procedure.VIII. Transaction. IX. Trigger. X. Chiến lược BackUp và Restore dữ liệu. XI. Các vấn đề khác. I. Chương 1: tổng quan:  Hệ quản trị cơ sở dữ liệu (tiếng Anh: Database Management System - DBMS), là phần mềm hay hệ thống được thiết kế để quản trị một cơ sở dữ liệu.  Ưu điểm của HQTCSDL:  Quản lý được dữ liệu dư thừa.  Đảm báo tính nhất quán cho dữ liệu.  Tạo khả năng chia sẻ dữ liệu nhiều hơn.  Cải tiến tính toàn vẹn cho sữ liệu.  Nhược điểm:  HQTCSDL tốt thì khá phức tạp.  HQTCSDL tốt thường rất lớn chiếm nhiều dung lượng bộ nhớ.  Giá cả khác nhau tùy theo môi trường và chức năng.  HQTCSDL được viết tổng quát cho nhiều người dùng thì thường chậm.  Mục tiêu: Hệ quản trị cơ sở dữ liệu phải đảm bảo các mục tiêu sau:  Dữ liệu sẵn dùng (data availability)
  2. 2.  Tính toàn vẹn dữ liệu (data integrity),  An toàn dữ liệu (data secutity)  Độc lập dữ liệu (data independency).  Thành phần của hệ quản trị cơ sở dữ liệu:  SQL Commands.  Database.  Kiến trúc của hệ quản trị cơ sở dữ liệu gồm 2 thành phần chức năng:  Bộ quản lý lưu trữ (Storage manager).  Bộ Xử lý truy vấn (Query Processor) II. Ngôn ngữ SQL chứa các cấu trúc lệnh được chia làm 2 nhóm đó là DDL- Data Definition Language(Ngôn ngữ định nghĩa dự liệu) và DML-Data Manipulation Language (Ngôn ngữ tương tác dữ liệu). Transact-SQL là ngôn ngữ SQL mở rộng dựa trên SQL chuẩn của ISO (International Organization for Standardization) và ANSI (American National Standards Institute) được sử dụng trong SQL Server khác với P- SQL (Procedural-SQL) dùng trong Oracle.III. Xây dựng, quản lý và khai thác cơ sở dữ liệu:  Khái niệm cơ sở dữ liệu: • Ở mức logic một CSDL SQL Server bao gồm: – Các bảng (tables) chứa dữ liệu có cấu trúc và các ràng buộc (constraints) được định nghĩa trên các bảng. – Các khung nhìn (view). – Các thủ tục/ hàm. – Các role và người dùng (user). – ….
  3. 3. • Mức vật lý CSDL SQL Server tối thiểu có 2 tập tin: – Tập tin dữ liệu (data file) gồm có: • Một tập tin dữ liệu chính (.mdf): chứa các dữ liệu khởi đầu của CSDL • Một hoặc nhiều tập tin dữ liệu thức cấp (.ndf): chứa các dữ liệu không lưu trữ hết trong tập tin chính. – Tập tin nhật ký giao tác (.ldf) gồm có một hoặc nhiều tập tin: chứa thông tin về nhật ký giao tác, dùng để phục hồi CSDL khi xảy ra sự cố.  Tạo cơ sở dữ liệu:Create Database QLSinhVienOn( Name = QLSinhVien, Filename = c:QLSinhVien.mdf, Size = 2, Maxsize = 10, Filegrowth = 10%)  Xóa 1 CSDL:Drop Database QLSinhVien  Kiểu dữ liệu:Nhớ 1 vài KDL thường dùng: Int, float, nchar, nvarchar, nên hiểu ý nghĩa của nchar và nvarchar.IV. Bảng dữ liệu:  Tạo bảng dữ liệu.Create Table HOSOSINHVIEN (
  4. 4. MaSV char(6) not null, MaLop char(6) not null default ‘CNTT07’ , HoTen nvarchar(30) not null, NgaySinh datetime not null, DiaChi nvarchar(100), constraint pk_SV primary key (MaSV) )  Các ràng buộc hay dùng:constraint pk_SV primary key (MaSV) – ràng buộc khóa chính.constraint fk_SV_MaLop foreign key (MaLop), references LOP(MaLop) – rangbuộc khóa ngoại. constraint u_CMND unique (CMND) – ràng buộc duy nhất. constraint chk_Nam check (Nam > 0 and Nam <= 4) – ràng buộc miền giátrị của dữ liệu.  Thêm xóa sửa dữ liệu trên bảng dữ liệu:  Thêm – Insert:Rõ ràng:INSERT INTO Class (Id, Name) VALUES (1, 11TH02);Ngầm định:INSERT INTO Class VALUES (1, 11TH02);  Xóa – Delete:DELETE FROM Class WHERE Id=1;  Sửa – Update:Update Class Set Name = ‘10TH01’ Where Id=1;  Truy vấn dữ liệu:  Cú pháp câu truy vấn tổng quát:SELECT [tính chất] <danh sách các thuộc tính_1>
  5. 5. FROM <danh sách các table hoặc query/view [as alias] >[WHERE <dieu kien_1>][GROUP BY <danh sách các thuộc tính_2>][HAVING <dieu kien_2>][ORDER BY <danh sách các thuộc tính_3> [ASC | DESC]]Tùy vào yêu cầu mà câu Select có thể biến hóa khác nhau, chúc may mắn. :D.  Các hàm thường dùng:  Các hàm gộp (Aggregate functions): max, min, sum, avg, count  Các hàm thời gian.  Các hàm toán học.  Các hàm xử lý chuỗi.  ….V. Khung nhìn – VIEW:  Khái niệm khung nhìn:  Khung nhìn (View) là một bảng ảo, có cấu trúc như một bảng  Khung nhìn không lưu trữ dữ liệu mà dữ liệu của nó đuợc tạo ra khi sử dụng  Khung nhìn là đối tượng thuộc CSDL.  Khung nhìn đựợc tạo ra từ câu lệnh truy vấn dữ liệu (lệnh Select), dữ liệu được truy vấn từ một hoặc nhiều bảng.  Các khung nhìn được tạo từ nhiều bảng hoặc trong khung nhìn có chứa từ khóa DISTINCT, hàm gộp, mệnh đề Group by đều không cho phép cập nhật dữ liệu từ khung nhìn vào các bảng gốc trong cơ sở dữ liệu.  Cú pháp tạo khung nhìn: Create View view_name
  6. 6. As Select_statementVí dụ: Create View vw_SinhVien As Select * From SinhVien  Mẹo khi tạo khung nhìn:Viết sẵn câu Select, và Build thử xem có ra kết quả như ý muốn không, nếu đã rađược kết quả thì thêm câu Select đó vào lệnh tạo VIEW.VI. Lập trình CSDL.  Khai báo sử dụng biến:  Cú pháp: Declare @Tên_Biến KDL = Giá_Trị_Mặc_Định (nếu có).Ví dụ:Declare @Id Nchar(10)Declare @Ten Nvarchar(30) = ‘Lê Xuân Hoàng’  Gán giá trị cho biến:Set @ Tên_Biến = Giá_Trị.Ví dụ:Set @Id = ‘08050217’Set @SoSV = (select count (*) from SinhVien)  Gán kết quả của câu truy vấn vào biến:SV(MaSV: int; HoTen: nvarchar(30), Tuoi: int)Select @Name = Student.Name, @Age = Student.Agewhere Student.Id = ‘08050217’  Biến toàn cục: có 2 dấu @@1 số biến toàn cục thường dùng:  @@error: thông báo mã lỗi, nếu @@error = 0 thì thao tác thực hiện thành công  @@rowcount: cho biết số dòng bị ảnh hưởng bởi lệnh insert, update, delete  @@trancount: cho biết số giao dịch đang hoạt động trên kết nối hiện tại
  7. 7.  @fetch_status: cho biết thao tác lấy dữ liệu từ cursor có thành công không1 số hàm thường dùng: tự mò trong Slide. :D  Cấu trúc điều khiển:  If..Else:Declare @SiSo intselect @SiSo = SiSo from HocPhan where MaHP= ‘HP01’if @SiSo < 50 Begin insert into DANG_KY(MaSV, MaHP) values(‘001’, ’HP01’) print N’Đăng ký thành công’ EndElse print N’Học phần đã đủ sinh viên  While:Declare @STT intSet @STT = 1While exists(select * from SV where MaSV = @STT) set @STT = @STT+1Insert into SV(MaSV, HoTen) values(@STT, ‘Nguyen Van A’)  Case:select * from NHAN_VIEN where datediff(yy, NgaySinh, getdate()) > = Case Phai when ‘Nam’ then 60
  8. 8. when ‘Nu’ then 55 End Select MaNV, HoTen, ‘Loai’ = Case when CapBac<=3 then ‘Binh Thuong’ when CapBac is null then ‘Chua xep loai’ else ‘Cap Cao’ End From NhanVienVII. Store Procedure – Thủ tục nội tại (cực kỳ quan trọng):  Khái niệm: Stored Procedure là một nhóm câu lệnh Transact-SQL đã được compiled (biên dịch) và chứa trong SQL Server được xử lý như một đơn vị độc lập .  Ưu nhược điểm:  Những ưu điểm của Stored Procudure Stored procedure làm tăng khả năng thực thi của ứng dụng. Sau khi được tạo, stored procedure sẽ được biên dịch (compile) và lưu trữ ngay trong database. Lẽ dĩ nhiên, nó sẽ chạy nhanh hơn là một lệnh sql chưa compile được gởi trực tiếp từ ứng dụng. Stored procedure làm giảm lưu lượng thông tin giao tiếp giữa ứng dụng và database server, thay vì gởi những câu lệnh sql chưa complile dài lằng ngoằn, ứng dụng chỉ việc gởi tên của stored procedure và lấy lại kết quả Stored procedure có thể được tái sử dụng và chuyển sang bất cứ ứng dụng nào muốn sử dụng chúng. Stored procedure có thể “trưng ra” giao diện database cho tất cả các ứng dụng, vì vậy lập trình viên không cần viết lại các chức năng đã hỗ trợ sẵn trong stored procedure trong tất cả các chương trình. Stored procedure cũng rất an toàn. Quản trị viên cơ sở dữ liệu có thể gán quyền cho ứng dụng truy xuất vào các stored procedures được chỉ định mà không cho phép truy cập đến các bảng (table) ở phía dưới.  Những nhược điểm của Stored Procudure: (đọc thêm nếu cần).
  9. 9. Stored procedure làm cho database server phải tốn nhiều tài nguyên về cả bộ nhớlẫn xử lý. Thay vì tập trung vào tính năng lưu trữ và nhận dữ liệu, bạn còn phải yêucầu database server thực hiện 1 loạt các tính toán logic hay các thao tác xử lý phứctạp vốn không thuộc “sở trường” của database server.Stored procedure chỉ chứa đựng các khai báo sql, vì vậy rất khó có thể viết 1procedure nhằm thực hiện các thao tác xử lý phức tạp như các ngôn ngữ khác làmđược ở tần ứng dụng như C#, Java, C++…Bạn cũng không thể debug stored procedure trong hầu hết các RDMBS và trong cảMySQL. Có 1 vài cách để khắc phục nhược điểm này, tuy nhiên vẫn chưa hoànhảo lắm.Việc viết và bảo trì (maintain) stored procedure thường yêu cầu 1 loạt các kỹ năngchuyên biệt nhiều khi không phải là kỹ năng của lập trình viên. Điều này dẫn đếncác vấn đề trong cả khía cạnh phát triển ứng dụng và bảo trì sản phẩm.Túm lại:Stored Procedure có những thuận tiện cũng như bất lợi như đã đề cập ở trên. Khiphát triển ứng dụng, bạn nên đánh giá giữa những ưu và nhược điểm để quyết địnhcó nên sử dụng stored procude hay không.Cú pháp:CREATE PROCEDURE tên_Thủ_tục (danh_sách_tham_số) [WITH RECOMPILE|ENCRYPTION]AS các câu lệnh của thủ tục • Ví dụ: – Xây dựng một SP cho biết danh sách sinh viên của một lớp biết trước mã lớpCreate proc spu_DanhSachLop @MaLop varchar(10)As
  10. 10. Select MaSV, HoVaTen, NgaySinh From SinhVien where MaLop = @MaLop Go  Gọi thủ tục nội tại bằng Script: EXEC[UTE] Tên_Thủ_Tục [Tham_số] EXEC proc spu_DanhSachLop ‘11TH02’VIII. Transaction:  Khái niệm: Là một loạt các thao tác được xem như là một khối đơn công việc  Khối công việc này phải thỏa 4 tính chất được gọi là ACID (Atomicity (Tính nguyên tử), Consistency (Tính nhất quán), Isolation (Tính độc lập), Durability (Tính lâu dài))  Một Transaction bao gồm các thao tác sau trong một khối Transaction:  BEGIN TRANSACTION: Chỉ ra vị trí bắt đầu của một Transaction.  ROLLBACK TRANSACTION: phục hồi (xóa bỏ) tất cả những thay đổi được thực hiện kể từ lúc bắt đầu Transaction  COMMIT TRANSACTION: tất cả thay đổi dữ liệu kể từ khi bắt đầu Transaction sẽ được thực thi Begin Transaction INSERT INTO VATTU VALUES(0001,NĐầu DVD Hitachi1 1 đĩa 11,NBộ, 40) INSERT INTO VATTU VALUES(0002,NĐầu DVD Hitachi1 1 đĩa 12,NBộ, 40) Save Transaction CongViec1 Delete From VatTu Where mavtu = 0002 INSERT INTO VATTU VALUES(0003,NĐầu DVD Hitachi1 1 đĩa 13,NBộ, 40) Save Transaction CongViec2 INSERT INTO VATTU VALUES(100010,NĐầu DVD Hitachi1 1 đĩa 15,NBộ, 40) Save Transaction CongViec3 RollBack Transaction CongViec2 Commit Transaction Go
  11. 11.  Giải thích: Ở đây, chúng ta có 3 công việc, CongViec1, CongViec2 và CongViec3.Làm xong, chúng ta RollBack đến CongViec2, nghĩa là từ công việc tính từ dòngRollBack trở lên đến CongViec2 sẽ không được làm.IX. Trigger:  Khái niệm: là một thủ tục nội tại được gắn kết với một hành động cập nhật dữ liệu như : INSERT, UPDATE, hoặc DELETE trong một bảng dữ liệu. Khi một trong các hành động cập nhật trên thì thủ tục trigger sẽ tự động thực hiện.  Đặc điểm:  Không có tham số đầu vào và đầu ra  Phải được liên kết với một bảng/ bảng ảo trong CSDL  Không thể gọi mà được thực hiện tự động. Sử dụng trong việc: • Tính toán, cập nhật giá trị tự động • Kiểm tra dữ liệu nhập  Phân loại:  Thường có hai loại trigger o Trigger thông thường: AFTER (FOR) trigger  Chạy sau các hành động kiểm tra dữ liệu của các Constraint  Dữ liệu đã bị tạm thời thay đổi trong bảng o INSTEAD OF trigger  Chạy trước các hành động kiểm tra dữ liệu của các Constraint  Dữ liệu chưa hề bị thay đổi  Các bảng trung gian Inserted và Deleted  Inserted
  12. 12. o Chứa các dòng dữ liệu vừa được thêm mới trong hành động INSERT/UPDATE vào bảng o Có ở cả hai loại trigger o Cấu trúc bảng giống với bảng mà trigger định nghĩa trên đó o Chỉ tồn tại trong thời gian trigger đang xử lý Deleted • Chứa các dòng dữ liệu bị xoá khỏi bảng trong hành động DELETE/UPDATE • Có ở cả hai loại trigger • Cấu trúc bảng giống với bảng mà trigger định nghĩa trên đó • Chỉ tồn tại trong thời gian trigger đang xử lý Cú pháp: Create trigger tên_trigger On {tên_bảng|tên_view} {For| After| Instead of } { [delete] [,] [insert] [,] [update] } As { các lệnh T-sql } Go Ví dụ: – Ví dụ về Ràng buộc liên thuộc tính – liên quan hệ của CSDL: DatHang(MaPDH, NgayDH,…) GiaoHang(MaPGH, MaPDH, NgayGH,…)• Ngày giao hàng không trước ngày đặt hàng
  13. 13.  Trigger cập nhật giá trị: • Cho hai lược đồ quan hệ:CT_HOA_DON(SoHD, MaS, SoLuong, DonGia, ThanhTien)HOA_DON(SoHD, MaKH, NgayLap, TenNV, ThanhTienHD). Viết trigger tự động cập nhật giá tri thành tiền trong CT_HOA_DON (thành tiền= số lượng * đơn giá)
  14. 14. Xem thêm trong Slide.X. Chiến lược BackUp và Restore dữ liệu.

×