Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 61 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
61
Dung lượng
906,02 KB
Nội dung
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