SlideShare a Scribd company logo
1 of 14
Download to read offline
Ô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)
 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).
         – ….
• 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 QLSinhVien

On

(        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

         (
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) – rang
buộ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>
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
As Select_statement

Ví 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.Age

where 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
 @fetch_status: cho biết thao tác lấy dữ liệu từ cursor có thành công không


1 số hàm thường dùng: tự mò trong Slide. :D


        Cấu trúc điều khiển:
    If..Else:
Declare @SiSo int

select @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’

       End

Else

       print N’Học phần đã đủ sinh viên



    While:
Declare @STT int

Set @STT = 1

While exists(select * from SV where MaSV = @STT)

                       set @STT = @STT+1

Insert 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
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 NhanVien



VII.        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).
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êu
cầ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ức
tạ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 1
procedure 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àn
hả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ăng
chuyê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 đến
cá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. Khi
phát triển ứng dụng, bạn nên đánh giá giữa những ưu và nhược điểm để quyết định
có 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ớp
Create proc spu_DanhSachLop @MaLop varchar(10)

As
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',N'Bộ',     40)
 INSERT INTO VATTU VALUES('0002',N'Đầu DVD Hitachi1 1 đĩa 12',N'Bộ',     40)
 Save Transaction CongViec1
 Delete From VatTu Where mavtu = '0002'
 INSERT INTO VATTU VALUES('0003',N'Đầu DVD Hitachi1 1 đĩa 13',N'Bộ',     40)
 Save Transaction CongViec2
 INSERT INTO VATTU VALUES('100010',N'Đầu DVD Hitachi1 1 đĩa 15',N'Bộ',   40)
 Save Transaction CongViec3
 RollBack Transaction CongViec2
 Commit Transaction
 Go
 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òng
RollBack 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
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
 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á)
Xem thêm trong Slide.


X.       Chiến lược BackUp và Restore dữ liệu.

More Related Content

What's hot

3. phan quyen trong sql server 01012010
3. phan quyen trong sql server 010120103. phan quyen trong sql server 01012010
3. phan quyen trong sql server 01012010
Truong van Duoc
 

What's hot (20)

Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTBài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
 
1 giới thiệu-cài đặt oracle
1 giới thiệu-cài đặt oracle1 giới thiệu-cài đặt oracle
1 giới thiệu-cài đặt oracle
 
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
 
Com201 slide 1
Com201   slide 1Com201   slide 1
Com201 slide 1
 
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
 
01 sql ddl_commands
01 sql ddl_commands01 sql ddl_commands
01 sql ddl_commands
 
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
 
Bao cao detai
Bao cao detaiBao cao detai
Bao cao detai
 
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPTBài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
 
Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)
Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)
Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)
 
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
 
3. phan quyen trong sql server 01012010
3. phan quyen trong sql server 010120103. phan quyen trong sql server 01012010
3. phan quyen trong sql server 01012010
 
2 co ban ve sql
2 co ban ve sql2 co ban ve sql
2 co ban ve sql
 
Bài 5: ADO.NET & Kiến trúc không kết nối (tiếp) Điều khiển DataGridView,Combo...
Bài 5: ADO.NET & Kiến trúc không kết nối (tiếp) Điều khiển DataGridView,Combo...Bài 5: ADO.NET & Kiến trúc không kết nối (tiếp) Điều khiển DataGridView,Combo...
Bài 5: ADO.NET & Kiến trúc không kết nối (tiếp) Điều khiển DataGridView,Combo...
 
23842023 giao-trinh-access-2003
23842023 giao-trinh-access-200323842023 giao-trinh-access-2003
23842023 giao-trinh-access-2003
 
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPTBài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
 
De cuong chi tiet hoc phan oracle
De cuong chi tiet hoc phan oracleDe cuong chi tiet hoc phan oracle
De cuong chi tiet hoc phan oracle
 
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theoBài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
 
Cai tien trong lenh t sql cua sql server 2008 (2)
Cai tien trong lenh t sql cua sql server 2008 (2)Cai tien trong lenh t sql cua sql server 2008 (2)
Cai tien trong lenh t sql cua sql server 2008 (2)
 
01 chuong 1 - gioi thieu ado.net va ket noi den csdl
01   chuong 1 - gioi thieu ado.net va ket noi den csdl01   chuong 1 - gioi thieu ado.net va ket noi den csdl
01 chuong 1 - gioi thieu ado.net va ket noi den csdl
 

Similar to ôn tập dbms

bai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.pptbai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.ppt
HungHuyNguyen3
 
Giao trinh he quan tri csdl
Giao trinh he quan tri csdlGiao trinh he quan tri csdl
Giao trinh he quan tri csdl
Hung Pham Thai
 
2008311102150141
20083111021501412008311102150141
2008311102150141
jimmycuong
 
Chuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfChuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdf
Criz20
 

Similar to ôn tập dbms (20)

bai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.pptbai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.ppt
 
Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1Cơ Sở Dữ Liệu - Chương 1
Cơ Sở Dữ Liệu - Chương 1
 
Qt he co so du lieu
Qt he co so du lieuQt he co so du lieu
Qt he co so du lieu
 
Sql server chuong 2 nkhanh
Sql server chuong 2 nkhanhSql server chuong 2 nkhanh
Sql server chuong 2 nkhanh
 
Sql server chuong 2 nkhanh
Sql server chuong 2 nkhanhSql server chuong 2 nkhanh
Sql server chuong 2 nkhanh
 
Giao trinh he quan tri csdl dành cho asp.net
Giao trinh he quan tri csdl dành cho asp.netGiao trinh he quan tri csdl dành cho asp.net
Giao trinh he quan tri csdl dành cho asp.net
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
 
b1-gioithieu-190213084421.pdf
b1-gioithieu-190213084421.pdfb1-gioithieu-190213084421.pdf
b1-gioithieu-190213084421.pdf
 
Gt bt access
Gt bt accessGt bt access
Gt bt access
 
Access gt bt
Access gt btAccess gt bt
Access gt bt
 
Session 07_Creating and Management DB.ppt
Session 07_Creating and Management DB.pptSession 07_Creating and Management DB.ppt
Session 07_Creating and Management DB.ppt
 
Gt he quan_tri_csdl_ms_sql_server
Gt he quan_tri_csdl_ms_sql_serverGt he quan_tri_csdl_ms_sql_server
Gt he quan_tri_csdl_ms_sql_server
 
3250
32503250
3250
 
Giao trinh he quan tri csdl
Giao trinh he quan tri csdlGiao trinh he quan tri csdl
Giao trinh he quan tri csdl
 
2008311102150141
20083111021501412008311102150141
2008311102150141
 
Giaotrinhaccess
GiaotrinhaccessGiaotrinhaccess
Giaotrinhaccess
 
04 ado
04 ado04 ado
04 ado
 
Chuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfChuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdf
 
01-Gioithieu.pdf
01-Gioithieu.pdf01-Gioithieu.pdf
01-Gioithieu.pdf
 
Aspnet 3.5 _02
Aspnet 3.5 _02Aspnet 3.5 _02
Aspnet 3.5 _02
 

ôn tập dbms

  • 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.  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. • 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 QLSinhVien On ( 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. 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) – rang buộ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. 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. As Select_statement Ví 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.Age where 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.  @fetch_status: cho biết thao tác lấy dữ liệu từ cursor có thành công không 1 số hàm thường dùng: tự mò trong Slide. :D  Cấu trúc điều khiển:  If..Else: Declare @SiSo int select @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’ End Else print N’Học phần đã đủ sinh viên  While: Declare @STT int Set @STT = 1 While exists(select * from SV where MaSV = @STT) set @STT = @STT+1 Insert 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. 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 NhanVien VII. 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. 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êu cầ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ức tạ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 1 procedure 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àn hả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ăng chuyê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 đến cá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. Khi phát triển ứng dụng, bạn nên đánh giá giữa những ưu và nhược điểm để quyết định có 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ớp Create proc spu_DanhSachLop @MaLop varchar(10) As
  • 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',N'Bộ', 40) INSERT INTO VATTU VALUES('0002',N'Đầu DVD Hitachi1 1 đĩa 12',N'Bộ', 40) Save Transaction CongViec1 Delete From VatTu Where mavtu = '0002' INSERT INTO VATTU VALUES('0003',N'Đầu DVD Hitachi1 1 đĩa 13',N'Bộ', 40) Save Transaction CongViec2 INSERT INTO VATTU VALUES('100010',N'Đầu DVD Hitachi1 1 đĩa 15',N'Bộ', 40) Save Transaction CongViec3 RollBack Transaction CongViec2 Commit Transaction Go
  • 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òng RollBack 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. 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.  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. Xem thêm trong Slide. X. Chiến lược BackUp và Restore dữ liệu.