Tài liệu cơ sở dữ liệu học SQL server 2000

61 33 0
Tài liệu cơ sở dữ liệu  học SQL server 2000

Đ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

H C SQL SERVER 2000 M CL C Overview of SQL Server 2000 Transact SQL Backup And Restore SQL Server 24 Stored Procedure and Advanced T-SQL 41 Triggers And Views 51 http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 Overview of SQL Server 2000 Ð đ c hi u vi t b n ph i có ki n th c c n b n v SQL Access Database Gi i Thi u SQL Server 2000 SQL Server 2000 m t h th ng qu n lý c s d li u (Relational Database Management System (RDBMS) ) s d ng Transact-SQL đ trao đ i d li u gi a Client computer SQL Server computer M t RDBMS bao g m databases, database engine ng d ng dùng đ qu n lý d li u b ph n khác RDBMS SQL Server 2000 đ c t i u đ có th ch y môi tr ng c s d li u r t l n (Very Large Database Environment) lên đ n Tera-Byte có th ph c v lúc cho hàng ngàn user SQL Server 2000 có th k t h p " n ý" v i server khác nh Microsoft Internet Information Server (IIS), E-Commerce Server, Proxy Server SQL Server có editions: • Enterprise : Ch a đ y đ đ c tr ng c a SQL Server có th ch y t t h th ng lên đ n 32 CPUs 64 GB RAM Thêm vào có d ch v giúp cho vi c phân tích d li u r t hi u qu (Analysis Services) • Standard : R t thích h p cho cơng ty v a nh giá thành r h n nhi u so v i Enterprise Edition, nh ng l i b gi i h n m t s ch c n ng cao c p (advanced features) khác, edition có th ch y t t h th ng lên đ n CPU GB RAM • Personal: đ c t i u hóa đ ch y PC nên có th cài đ t h u h t phiên b n windows k c Windows 98 • Developer : Có đ y đ tính n ng c a Enterprise Edition nh ng đ c ch t o đ c bi t nh gi i h n s l ng ng i k t n i vào Server m t lúc Ðây edition mà b n mu n h c SQL Server c n có Chúng ta s dùng edition su t khóa h c Edition có th cài Windows 2000 Professional hay Win NT Workstation • Desktop Engine (MSDE): Ðây ch m t engine ch y desktop khơng có user interface (giao di n) Thích h p cho vi c tri n khai ng d ng máy client Kích th c database b gi i h n kho ng GB http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 • Win CE : Dùng cho ng d ng ch y Windows CE • Trial: Có tính n ng c a Enterprise Edition, download free, nh ng gi i h n th i gian s d ng Cài Ð t SQL Server 2000 (Installation) Các b n c n có Developer Edition nh t 64 MB RAM, 500 MB hard disk đ có th install SQL Server B n có th install Windows Server hay Windows XP Professional, Windows 2000 Professional hay NT Workstation nh ng khơng th install Win 98 family Vì m t nh ng đ c m c a s n ph m Microsoft d install nên chúng tơi khơng trình bày chi ti t v cách install hay b c install mà ch trình bày m c n l u ý install mà N u b n g p tr ng i vi c install có th đ a lên forum đ h i thêm Khi install b n c n l u ý m sau: hình th hai b n ch n Install Database Server Sau install xong SQL Server b n có th install thêm Analysis Service n u b n thích hình Installation Definition b n ch n Server and Client Tools Sau b n nên ch n ki u Custom ch n t t c b ph n c a SQL Server Ngoài nên ch n giá tr m c đ nh (default) hình Authentication Mode nh ch n Mixed Mode L u ý SQL Server có th dùng chung ch đ b o m t (security) v i Win NT c ng có th dùng ch đ b o m t riêng c a Trong Production Server ng i ta th ng dùng Windows Authetication đ an tồn cao h n d dàng cho ng i qu n lý m ng c cho ng i s d ng Ngh a m t b n đ c ch p nh n (authenticated) k t n i vào domain b n có quy n truy c p d li u (access data) SQL Server Tuy nhiên ta nên ch n Mixed Mode đ d dàng cho vi c h c t p Sau install b n s th y m t icon n m góc ph i bên d i hình, Service Manager B n có th Start, Stop SQL Server services d dàng b ng cách double-click vào icon M t chút ki n th c v Version c a SQL Server SQL Server c a Microsoft đ c th tr ng ch p nh n r ng rãi k t version 6.5 Sau Microsoft c i ti n h u nh vi t l i m t engine m i cho SQL Server 7.0 Cho nên có th nói t version 6.5 lên version 7.0 m t b c nh y v t Có m t s đ c tính c a SQL Server 7.0 khơng t ng thích v i version 6.5 Trong http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 t Version 7.0 lên version 8.0 (SQL Server 2000) nh ng c i ti n ch y u m r ng tính n ng v web làm cho SQL Server 2000 đáng tin c y h n M t m đ c bi t đáng l u ý version 2000 Multiple-Instance Nói cho d hi u b n có th install version 2000 chung v i version tr c mà không c n ph i uninstall chúng Ngh a b n có th ch y song song version 6.5 ho c 7.0 v i version 2000 m t máy (đi u không th x y v i version tr c đây) Khi version c máy b n Default Instance version 2000 m i v a install s Named Instance Các thành ph n quan tr ng SQL Server 2000 SQL Server 2000 đ c c u t o b i nhi u thành ph n nh Relational Database Engine, Analysis Service English Query Các thành ph n ph i h p v i t o thành m t gi i pháp hoàn ch nh giúp cho vi c l u tr phân tích d li u m t cách d dàng Relational Database Engine - Cái lõi c a SQL Server: Ðây m t engine có kh n ng ch a data quy mô khác d i d ng table support t t c ki u k t n i (data connection) thông d ng c a Microsoft nh ActiveX Data Objects (ADO), OLE DB, and Open Database Connectivity (ODBC) Ngồi cịn có kh n ng t u ch nh (tune up) ví d http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 nh s d ng thêm tài nguyên (resource) c a máy c n tr nguyên cho h u hành m t user log off l i tài Replication - C ch t o b n (Replica): Gi s b n có m t database dùng đ ch a d li u đ c ng d ng th ng xuyên c p nh t M t ngày đ p tr i b n mu n có m t database gi ng y h t nh th m t server khác đ ch y báo cáo (report database) (cách làm th ng dùng đ tránh nh h ng đ n performance c a server chính) V n đ report server c a b n c ng c n ph i đ c c p nh t th ng xuyên đ đ m b o tính xác c a báo cáo B n không th dùng c ch back up and restore tr ng h p Th b n ph i làm sao? Lúc c ch replication c a SQL Server s đ c s d ng đ b o đ m cho d li u database đ c đ ng b (synchronized) Replication s đ c bàn k 12 Data Transformation Service (DTS) - M t d ch v chuy n d ch data vô hi u qu N u b n làm vi c m t công ty l n data đ c ch a nhi u n i khác d ng khác c th nh ch a Oracle, DB2 (c a IBM), SQL Server, Microsoft Access B n ch c ch n s có nhu c u di chuy n data gi a server (migrate hay transfer) khơng ch di chuy n b n cịn mu n đ nh d ng (format) tr c l u vào database khác, b n s th y DTS giúp b n gi i quy t công vi c d dàng nh th DTS s đ c bàn k Analysis Service - M t d ch v phân tích d li u r t hay c a Microsoft D li u (Data) ch a database s ch ng có ý ngh a nhi u n u nh b n không th l y đ c nh ng thông tin (Information) b ích t Do Microsoft cung c p cho b n m t công c r t m nh giúp cho vi c phân tích d li u tr nên d dàng hi u qu b ng cách dùng khái ni m hình kh i nhi u chi u (multidimension cubes) k thu t "đào m d li u" (data mining) s đ c gi i thi u 13 English Query - M t d ch v mà ng Ðây m t d ch v English) i Vi t Nam ch c mu n dùng :-) (?) giúp cho vi c query data b ng ti ng Anh "tr n" (plain Meta Data Service: D ch v giúp cho vi c ch a đ ng "xào n u" Meta data d dàng h n Th Meta Data v y? Meta data nh ng thông tin mô t v c u trúc c a data database nh data thu c lo i String hay Integer , m t c t http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 có ph i Primary key hay khơng B i nh ng thơng tin c ng đ c ch a database nên c ng m t d ng data nh ng đ phân bi t v i data "chính th ng" ng i ta g i Meta Data Ph n ch c b n ph i xem thêm m t thành ph n khác c a SQL Server s p gi i thi u sau SQL Server Books Online khơng có lo t nói rõ v d ch v c SQL Server Books Online - Quy n Kinh Thánh không th thi u: Cho dù b n có đ c sách khác d y v SQL server b n c ng s th y books online r t h u d ng không th thi u đ c( Microsoft m i hào phóng đính kèm theo SQL Server) SQL Server Tools - Ðây m t b đ ngh c a ng (DBA ) i qu n tr c s d li u Ái chà n u k chi ti t h i nhi u đ y b n c n đ c thêm books online ng i vi t ch k m t vài công c thông d ng mà Ð u tiên ph i k đ n Enterprise Manager Ðây m t cơng c cho ta th y tồn c nh h th ng c s d li u m t cách r t tr c quan Nó r t h u ích đ c bi t cho ng i m i h c không thông th o l m v SQL K đ n Query Analyzer Ð i v i m t DBA gi i h u nh ch c n cơng c có th qu n lý c m t h th ng database mà không c n đ n nh ng th khác Ðây m t môi tr ng làm vi c t t ta có th đánh b t k câu l nh SQL ch y l p t c đ c bi t giúp cho ta debug m y stored procedure d dàng Công c th ba c n ph i k đ n SQL Profiler Nó có kh n ng "ch p" (capture) t t c s ki n hay ho t đ ng di n m t SQL server l u l i d i d ng text file r t h u d ng vi c ki m soát ho t đ ng c a SQL Server Ngồi m t s cơng c tr c quan nh c ng th ng hay dùng osql bcp (bulk copy) command prompt Tóm l i d o qua m t vịng đ tìm hi u v SQL Server Trong sau c ng s ti p t c d o ch i thêm m t chút v i TransactSQL tr c sâu vào đ tài khác http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 Transact SQL Gi i Thi u S L c V Transact SQL (T-SQL) Transact-SQL ngôn ng SQL m r ng d a SQL chu n c a ISO (International Organization for Standardization) ANSI (American National Standards Institute) đ c s d ng SQL Server khác v i P-SQL (ProceduralSQL) dùng Oracle Trong s tìm hi u s nhóm: qua v T-SQL Chúng đ c chia làm Data Definition Language (DDL): Ðây nh ng l nh dùng đ qu n lý thu c tính c a m t database nh đ nh ngh a hàng ho c c t c a m t table, hay v trí data file c a m t database th ng có d ng • • • Create object_Name Alter object_Name Drop object_Name Trong object_Name có th m t table, view, stored procedure, indexes Ví d : L nh Create sau s t o m t CompanyID,CompanyName,Contact table tên Importers v i c t USE Northwind CREATE TABLE Importers( CompanyID int NOT NULL, CompanyName varchar(40) NOT NULL, Contact varchar(40) NOT NULL ) L nh Alter sau cho phép ta thay đ i đ nh ngh a c a m t table nh thêm(hay b t) m t c t hay m t Constraint Trong ví d ta s thêm c t ContactTitle vào table Importers USE Northwind http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 ALTER TABLE Importers ADD ContactTitle varchar(20) NULL L nh Drop sau s hồn tồn xóa table kh i database ngh a c đ nh ngh a c a table data bên table đ u bi n m t (khác v i l nh Delete ch xóa data nh ng table v n t n t i) USE Northwind DROP TABLE Importers Data Control Language (DCL): Ðây nh ng l nh qu n lý quy n truy c p lên t ng object (table, view, stored procedure ) Th ng có d ng sau: • • • Grant Revoke Deny Ví d : L nh sau s cho phép user Public Role đ c quy n Select đ i v i table Customer database Northwind (Role m t khái ni m gi ng nh Windows Group s đ c bàn k ph n Security) USE Northwind GRANT SELECT ON Customers TO PUBLIC L nh sau s t ch i quy n Select đ i v i table Customer database Northwind c a user Public Role USE Northwind DENY SELECT ON Customers TO PUBLIC L nh sau s xóa b tác d ng c a quy n đ c cho phép hay t ch i tr USE Northwind REVOKE SELECT ON Customers TO PUBLIC http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt c H C SQL SERVER 2000 Data Manipulation Language (DML): Ðây nh ng l nh ph Delete bi n dùng đ x lý data nh Select, Update, Insert, Ví d : Select USE Northwind SELECT CustomerID, CompanyName, ContactName FROM Customers WHERE (CustomerID = 'alfki' OR CustomerID = 'anatr') ORDER BY ContactName Insert USE Northwind INSERT INTO Territories VALUES (98101, 'Seattle', 2) Update USE Northwind UPDATE Territories SET TerritoryDescription = 'Downtown Seattle' WHERE TerritoryID = 98101 Delete USE Northwind DELETE FROM Territories WHERE TerritoryID = 98101 Vì ph n c n b n nên thi t ngh không c n gi i thích nhi u Chú ý l nh Delete b n có th có ch From hay khơng đ u đ c Nh ng mà s ch y th ví d Ð ch y câu l nh thí d Analyser b n c n s đâu? d ng làm quen v i Query http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 10 Cú Pháp C a T-SQL: Ph n s bàn v thành ph n t o nên cú pháp c a T-SQL Identifiers Ðây tên c a database object Nó dùng đ xác đ nh m t object (Chú ý nói đ n Object SQL Server mu n đ c p đ n table, view, stored procedure, index Vì h u nh m i th SQL Server đ u đ c thi t k theo ki u h ng đ i t ng (object-oriented)) Trong ví d sau TableX, KeyCol, Description nh ng identifiers CREATE TABLE TableX (KeyCol INT PRIMARY KEY, Description NVARCHAR(80)) Có hai lo i Identifiers m t lo i thông th ng (Regular Identifier) m t lo i g i Delimited Identifier, lo i c n có d u "" hay d u [] đ ng n cách Lo i Delimited đ c dùng đ i v i ch trùng v i t khóa c a SQL Server (reserved keyword) hay ch có kho ng tr ng http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 47 ng d ng dùng stored procedure có th s khơng c n ph i thay đ i mà v n t ng thích v i business rule m i C ng gi ng nh ngơn ng l p trình khác stored procedure cho phép ta đ a vào input parameters (tham s ) tr v output parameters đ ng th i c ng có kh n ng g i stored procedure khác • Security : Gi s mu n gi i h n vi c truy xu t d li u tr c ti p c a m t user vào m t s tables, ta có th vi t m t stored procedure đ truy xu t d li u ch cho phép user đ c s d ng stored procedure vi t s n mà ch khơng th "đ ng" đ n tables m t cách tr c ti p Ngoài stored procedure có th đ c encrypt (mã hóa) đ t ng c ng tính b o m t Các Lo i Stored Procedure Stored procedure có th đ c chia thành nhóm nh sau: System Stored Prcedure : Là nh ng stored procedure ch a Master database th ng b t đ u b ng ti p đ u ng sp_ Các stored procedure thu c lo i built-in ch y u dùng vi c qu n lý database (administration) security Ví d b n có th ki m tra t t c processes đ c s d ng b i user DomainName\Administrators b n có th dùng sp_who @loginame='DomainName\Administrators' Có hàng tr m system stored procedure SQL Server B n có th xem chi ti t SQL Server Books Online Local Stored Procedure : Ðây lo i th ng dùng nh t Chúng đ c ch a user database th ng đ c vi t đ th c hi n m t cơng vi c Thơng th ng ng i ta nói đ n stored procedure nói đ n lo i Local stored procedure th ng đ c vi t b i DBA ho c programmer Chúng ta s bàn v cách t o stored prcedure lo i ph n k ti p Temporary Stored Procedure : Là nh ng stored procedure t ng t nh local stored procedure nh ng ch t n t i cho đ n connection t o chúng b đóng l i ho c SQL Server shutdown Các stored procedure đ c t o TempDB c a SQL Server nên chúng s b delete connection t o chúng b c t đ t hay SQL Server down Temporary stored procedure đ c chia làm lo i : local (b t đ u b ng #), global (b t đ u b ng ##) stored procedure đ c t o tr c ti p TempDB Lo i local ch đ c s d ng b i connection t o chúng b xóa disconnect, cịn lo i global có th đ c s d ng b i b t k connection Permission cho lo i global dành cho m i ng i http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 48 (public) không th thay đ i Lo i stored procedure đ c t o tr c ti p TempDB khác v i lo i ch ta có th set permission, chúng t n t i k c sau connection t o chúng b c t đ t ch bi n m t SQL Server shut down Extended Stored Procedure : Ðây m t lo i stored procedure s d ng m t ch ng trình ngo i vi (external program) v n đ c compiled thành m t DLL đ m r ng ch c n ng ho t đ ng c a SQL Server Lo i th ng b t đ u b ng ti p đ u ng xp_ Ví d , xp_sendmail dùng đ g i mail cho m t ng i hay xp_cmdshell dùng đ ch y m t DOS command Ví d xp_cmdshell 'dir c:\' Nhi u lo i extend stored procedure đ c xem nh system stored procedure ng c l i Remote Stored Procedure : Nh ng stored procedure g i stored procedure server khác Vi t Stored Procedure Tên nh ng thông tin v Stored Procedure đ c t o s ch a SysObjects table cịn ph n text c a ch a SysComments table Vì Stored Procedure c ng đ c xem nh m t object nên ta c ng có th dùng l nh nh CREATE, ALTER, DROP đ t o m i, thay đ i hay xóa b m t stored procedure Chúng ta xem m t ví d sau v Stored Procedure: Ð t o m t stored procedure b n có th dùng Enterprise Manager click lên Stored Procedure -> New Stored Procedure Trong ví d ta s t o m t stored procedure đ insert m t new order vào Orders table Practice DB Ð insert m t order vào database ta c n đ a vào m t s input nh OrderID, ProductName (order hàng nào) CustomerName (ai order) Sau ta tr v k t qu cho bi t vi c insert có thành công hay không Result = insert thành công CREATE PROCEDURE AddNewOrder @OrderID smallint, @ProductName varchar(50), @CustomerName varchar(50), @Result smallint=1 Output AS DECLARE @CustomerID smallint BEGIN TRANSACTION If not Exists(SELECT CustomerID FROM Customers WHERE [Name]=@CustomerName) This is a new customer Insert this customer to the database BEGIN SET @CustomerID= (SELECT Max(CustomerID) FROM Customers) SET @CustomerID=@CustomerID+1 http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 49 INSERT INTO Customers VALUES(@CustomerID,@CustomerName) If Exists(SELECT OrderID FROM [Orders] WHERE OrderID=@OrderID) This order exists and could not be added any more so Roll back BEGIN SELECT @Result=1 ROLLBACK TRANSACTION END Else This is a new order insert it now BEGIN INSERT INTO [Orders](OrderID,ProductName,CustomerID) VALUES(@OrderID,@ProductName,@CustomerID) SELECT @Result=0 COMMIT TRANSACTION END END Else The customer exists in DB go ahead and insert the order BEGIN If Exists(SELECT OrderID FROM [Orders] WHERE OrderID=@OrderID) This order exists and could not be added any more so Roll back BEGIN SELECT @Result=1 ROLLBACK TRANSACTION END Else This is a new order insert it now BEGIN INSERT INTO [Orders](OrderID,ProductName,CustomerID) VALUES(@OrderID,@ProductName,@CustomerID) SELECT @Result=0 COMMIT TRANSACTION END END Print @Result Return Ð t o m t stored procedure ta dùng l nh CREATE PROCEDURE theo sau tên c a (n u temporary stored procedure thêm d u # tr c tên c a procedure N u mu n encrypt dùng WITH ENCRYPTION tr c ch AS) input ho c ouput parameters N u output thêm keyword OUTPUT đ ng sau parameter Ta có th cho giá tr default lúc v i khai báo data type c a parameter K t sau ch AS ph n body c a stored procedure Trong ví d tr c h t ta khai báo m t bi n @CustomerID sau b t đ u m t transaction b ng BEGIN TRANSACTION (tồn b cơng vi c insert đ c th c hi n m t Transaction ngh a ho c insert thành công ho c http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 50 khơng làm c - all or nothing) Tr c h t ta ki m tra xem ng i khách hàng ng i m i hay c N u ng i m i ta "ti n tay" insert vào Customers table ln cịn n u khơng ch insert vào Orders table mà thơi N u ng i customer m i ta l y CustomerID l n nh t t Customers table b vào bi n @CustomerID sau t ng lên m t đ n v dùng cho vi c Insert Customer dòng k ti p Sau insert ng i customer m i ta ti p t c công vi c b ng vi c ki m tra xem Order mu n insert có t n t i ch a (vì n u order t n t i insert SQL Server s báo l i OrderID Primary key) N u nh order lý có DB ta roll back tr k t qu =1 cịn n u khơng ta insert m t order m i vào commit transaction v i k t qu tr v =0 T ng t nh v y n u ng i customer t n t i (sau ch else đ u tiên) ta ch vi c insert order gi ng nh Trong m i tr ng h p k ta đ u in k t qu return Ví d ch mang tính h c h i cịn th c t database có th ph c t p h n nhi u nên vi c vi t stored procedure đòi h i ki n th c v ng ch c v SQL k n ng v programming Mu n hi u rõ h n v h c b n c n làm t p s Tóm l i tìm hi u m t s k thu t import export data Ð ng th i bi t qua cách select data t database system khác dùng distributed query Nh ng quan tr ng nh t th ng dùng nh t stored procedures B n c n hi u rõ vai trò c a stored procedure bi t cách t o chúng Vì ki n th c v database nói chung SQL Server nói riêng r ng nên khuôn kh m t h c chúng tơi khơng th trình bày c n k t ng chi ti t có h i d n ép b n c n đ c đ c l i nhi u l n đ n m đ c ý ph i xem thêm sách (n u khơng có sách ph i xem thêm SQL Books Online) Sau h c b n c n làm t p s đ h th ng hóa l i ki n th c h c Khi làm t p nên làm theo th t tuân th theo yêu c u c a t p đ t Không nên b qua b c http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 51 Triggers And Views Trong s tìm hi u ng d ng c a m t lo i stored procedure đ c bi t g i Triggers dùng Views đ th hi n data m t hay nhi u table nh th Triggers Trigger m t lo i stored procedure đ c bi t đ c execute (th c thi) m t cách t đ ng có m t data modification event x y nh Update, Insert hay Delete Trigger đ c dùng đ đ m b o Data Integrity hay th c hi n business rules Khi ta c n s d ng Trigger: • Ta ch s d ng trigger mà bi n pháp b o đ m data intergrity khác nh Constraints không th th a mãn yêu c u c a ng d ng Nên nh Constraint thu c lo i Declarative Data Integrity s ki m tra data tr c cho phép nh p vào table Trigger thu c lo i Procedural Data Integrity nên vi c insert, update, delete x y r i m i kích ho t trigger Chính v y mà ta c n cân nh c tr c quy t đ nh dùng lo i vi c đ m b o Data Integrity • Khi m t database đ c denormalized (ng c l i trình normalization, m t trình thi t k database schema cho database ch a data khơng th a khơng thi u) s có m t s data th a (redundant ) đ c ch a nhi u tables Ngh a s có m t s data đ c ch a m t lúc hai hay nhi u n i khác Khi đ đ m b o tính xác data đ c update m t table c ng ph i đ c update m t cách t đ ng table l i b ng cách dùng Trigger Ví d : ta có table Item có field Barcode dùng đ xác đ nh m t m t hàng Item table có vai trị nh m t cu n catalog ch a nh ng thông tin c n thi t mô t t ng m t hàng Ta có m t table khác Stock dùng đ ph n ánh hàng có th c kho nh đ c nh p v đ c cung c p b i đ i lý nào, s l ng http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 52 (t c nh ng thơng tin v hàng mà không th ch a Item table đ c) table c ng có field Barcode đ xác đ nh hàng kho Nh v y thơng tin v Barcode đ c ch a hai n i khác ta c n dùng trigger đ đ m b o Barcode hai n i đ c synchonize (đ ng b ) • Ðơi ta có nhu c u thay đ i dây chuy n (cascade) ta có th dùng Trigger đ b o đ m chuy n Ngh a có s thay đ i table m t s table khác c ng đ c thay đ i theo đ đ m b o tính xác Ví d nh m t hàng đ c bán s l ng hàng table Item gi m m t đ ng th i t ng s hàng kho (Stock table) c ng ph i gi m theo m t cách t đ ng Nh v y ta có th t o m t trigger Item table đ m i m t đ c bán trigger s đ c kích ho t gi m t ng s hàng Stock table Ð c m c a Trigger: • • • M t trigger có th làm nhi u cơng vi c (actions) khác có th đ c kích ho t b i nhi u h n m t event Ví d ta có th vi t m t trigger đ c kích ho t b i b t k event nh Update, Insert hay Delete bên trigger ta s vi t code đ gi i quy t cho t ng tr ng h p Trigger không th đ c t o temporary hay system table • Trigger ch có th đ c kích ho t m t cách t đ ng b i m t event Insert, Update, Delete mà khơng th ch y manually đ c • Có th áp d ng trigger cho View • Khi m t trigger đ c kích ho t data m i v a đ c insert hay m i v a đ c thay đ i s đ c ch a Inserted table data m i v a đ c delete đ c ch a Deleted table Ðây table t m ch ch a memory ch có giá tr bên trigger mà thơi (ngh a ch nhìn th y đ c query trigger mà thơi) Ta có th dùng thông tin table đ so sánh data c m i ho c ki m tra xem data m i v a thay đ i có h p l tr c commit hay roll back (Xem thêm ví d bên d i) • Có lo i triggers (class) : INSTEAD OF AFTER Lo i INSTEAD OF s b qua (bybass) action kích ho t trigger mà thay vào s th c hi n dịng l nh SQL bên Trigger Ví d ta có m t http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 53 Update trigger m t table v i câu INSTEAD OF table đ c update thay update SQL Server s th c hi n l nh đ c vi t s n bên trigger Ng c l i lo i AFTER (lo i default t ng đ ng v i keyword FOR) s th c hi n câu l nh bên trigger sau action t o nên trigger x y r i T o M t Trigger Nh Th Nào? Cú pháp c n b n đ t o m t trigger có d ng nh sau: CREATE TRIGGER trigger_name ON table_name or view_name FOR trigger_class and trigger_type(s) AS Transact-SQL statements Nh v y t o m t trigger ta ph i ch rõ t o trigger table đ c trigger (insert, update hay delete Sau ch AS câu l nh SQL x lý công vi c Ta nghiên c u m t ng d ng th c ti n sau Gi s ta vi t m t application cho phép user có th Insert, Update Delete nh ng thơng tin n m database User th ng nh ng ng i không thông th o l m v computer mà th ng g i đùa "bà tám" Vào m t ngày đ p tr i, "bà tám" m t mày tái xanh đ n c u c u ta l tay "delete" nh ng thông tin quan tr ng hy v ng ta có th ph c h i d li u dùm N u khơng phịng xa tr c vi t application coi nh c ng vơ ph ng c u ch a data hoàn toàn b delete Nh ng n u b n m t "guru" b n s g t gù "chuy n khó l m!" nh ng sau b n ch t n vài phút đ ng h đ rollback Mu n làm đ c chuy n ph i dùng m t "chiêu" g i Audit (ki m tra hay giám sát) T c ngồi table ta s thêm table ph g i Audit tables B t k ho t đ ng đ ng ch m vào m t s table quan tr ng database ta đ u ghi nh n vào Audit table Ví d user update hay delete m t record table tr c update hay delete ta s âm th m di chuy n record sang Audit table r i m i update hay delete table Nh v y n u có chuy n x y ta có th d dàng rollback (tr record v ch c ) http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 54 Ví d : Ta có table Orders PracticeDB Ð audit ho t đ ng di n table ta t o m t audit table v i tên Aud_Orders v i column gi ng y h t v i Orders table Ngoài ta thêm vào columns : • • Audit_Type : v i giá tr có th 'I','U','D' đ ghi nh n record đ c Insert, Update hay Delete Date_Time_Stamp : Data Type thu c lo i DateTime dùng đ ghi nh n th i m x y s thay đ i, có vai trò nh m t d u (N u mơi tr ng nhi u user ta thêm m t column UserID đ ghi nh n user thay đ i) Sau ta s t o trigger dùng cho vi c audit nh sau: Insert Trigger CREATE TRIGGER [AuditInsertOrders] ON [dbo].[Orders] FOR Insert AS insert into aud_orders select *,'I',getdate() From inserted Update Trigger CREATE TRIGGER [AuditUpdateOrders] ON [dbo].[Orders] for UPDATE AS insert into aud_orders select *,'U',Getdate() from deleted Delete Trigger CREATE TRIGGER [AuditDeleteOrders] ON [dbo].[Orders] FOR DELETE AS insert into aud_orders select *,'D',getdate() From deleted Trong ví d user insert m t record record m i v a đ c insert s n m inserted table nh trình bày ph n Do ta s select t t c column inserted table c ng thêm Audit Type "I" dùng hàm GetDate() SQL Server đ l y system date time dùng cho Date_Time_Stamp column, sau insert vào Aud_Orders table T ng t v i tr ng h p Update Delete, record đ c update hay delete n m deleted table Nh v y tr l i tr ng h p thí d n u "bà tám" yêu c u ta có th vào tìm ki m audit table đ ph c h i l i record Ngoài ta có th dùng table đ tìm th ph m xoá hay s a ch a data c n thi t http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 55 Ð t o hay xem m t trigger b ng Enterprise Manager b n làm nh sau: Right-Click lên table mà b n mu n t o trigger->All Tasks-> Manage Triggers L u ý: Ðôi Khi ta ch mu n trigger th c s ho t đ ng m t hay vài column đ c Update ch khơng ph i b t k column Khi ta có th dùng hàm Update(Column_Name) đ ki m tra xem column có b update hay khơng Ví d : T o m t trigger cho Customer table Bên Trigger (sau ch AS) ta có th ki m tra xem n u column First_Name hay Last_Name b thay đ i m i hành đ ng n u khơng khơng làm c IF UPDATE (first_name) OR UPDATE (Last_Name) BEGIN Do some conditional processing when either of these columns are updated END N u mu n ki m tra nhi u columns ta có th dùng hàm khác Columns_Updated() Xin xem thêm SQL Server Books Online đ bi t thêm chi ti t v cách s d ng Views Ð nh ngh a m t cách đ n gi n view SQL Server t ng t nh Query Access database View có th đ c xem nh m t table o mà data c a đ c select t m t stored query Ð i v i programmer view khơng khác chi so v i table có th đ t v trí c a table câu l nh SQL Ð c m c a View ta có th join data t nhi u table tr v m t recordset đ n Ngồi ta có th "xào n u" data (manipulate data) tr c tr v cho user b ng cách dùng m t s logic checking nh (if, case ) Ví d : Create View OrderReport As Select OrderID, (case when [Name] is null then 'New Customer' else [Name] end )As CustomerName, ProductName, DateProcessed From Customers Right Outer Join Orders on Customers.CustomerID=Orders.CustomerID http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 56 Trong ví d ta ch y u tr v data t Orders table PracticeDB nh ng thay display CustomerID v n khơng có ý nhi u ý ngh a đ i v i user ta s display tên c a customer b ng cách join v i Customer table N u Customer Name Null ngh a tên c a customer đ t order không t n t i system Thay đ Null ta s display "New Customer" đ d nhìn h n cho user Nói chung câu l nh SQL View có th t r t đ n gi n nh select toàn b data t m t table cho đ n r t ph c t p v i nhi u tính n ng programming c a TSQL View Th View th ng Ð ng đ • c Dùng Vào Vi c Gì? c s dùng vào m t s công vi c sau: T p trung vào m t s data nh t đ nh : ta th ng dùng view đ select m t s data mà user quan tâm hay ch u trách nhi m lo i b nh ng data khơng c n thi t Ví d : Gi s table ta có column "Deleted" v i giá tr True hay False đ đánh d u m t record b delete hay không Vi c đ c dùng cho vi c Audit Ngh a m t ng d ng user delete m t record đó, thay ta physically delete record ta ch logically delete b ng cách đánh d u record đ c "Deleted" đ đ phòng user yêu c u roll back Nh v y ch y u ta ch quan tâm đ n data ch a delete data đ c đánh d u deleted ch đ c đ ý c n roll back hay audit mà Trong tr ng h p ta có th t o m t view select data mà Deleted=False làm vi c ch y u view thay tồn b table • • • • • Ð n gi n hóa vi c x lý data: Ðơi ta có nh ng query r t ph c t p s d ng th ng xuyên ta có th chuy n thành View đ i x nh m t table, nh v y s làm cho vi c x lý data d dàng h n Customize data: Ta có th dùng view đ làm cho users th y data t nh ng góc đ khác m c dù h dùng m t ngu n data gi ng Ví d : Ta có th t o views nh ng thơng tin v customer đ c th hi n khác tùy login ID normal user hay manager Export Import data: Ðôi ta mu n export data t SQL Server sang ng d ng khác nh Excel ch ng h n ta có th dùng view đ join nhi u table export dùng bcp http://ebooks.vdcmedia.com CuuDuongThanCong.com https://fb.com/tailieudientucntt H C SQL SERVER 2000 57 Khi s d ng view ta có th select,insert, update, delete data bình th m t table ng nh v i Ví d : Select * From OrderReport Where DateProcessed

Ngày đăng: 08/12/2021, 01:58