Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.53 MB, 146 trang )
<span class='text_page_counter'>(1)</span>TRƯ NG Đ I H C PH M VĂN Đ NG KHOA CÔNG NGH THÔNG TIN. BÀI GI NG:. H QU N TR CƠ S D SQL SERVER. LI U 2. (Dùng cho b c Cao ñ ng). Gi ng viên: Th.S Nguy n Trí Nhân. Qu ng Ngãi, Spring-2014.
<span class='text_page_counter'>(2)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. M CL C L I NÓI Đ U .................................................................................................................... 5 Chương 1. T NG QUAN V SQL SERVER 2000 ........................................................ 7 1.1. GI I THI U SQL SERVER .............................................................................. 7 1.1.1. Gi i thi u chung v h qu n tr cơ s d li u ................................................... 7 1.1.2. Gi i thi u v phiên b n SQL Server ................................................................. 7 1.2. Các thành ph n trong SQL Server..................................................................... 8 1.3. CÀI Đ T SQL SERVER..................................................................................... 9 1.4. CÁC CSDL H TH NG TRONG SQL SERVER......................................... 17 1.5. CÁC CÔNG C TRONG SQL SERVER ....................................................... 19 1.5.1. Ti n ích Book Online ...................................................................................... 20 1.5.2. Ti n ích Client NetWork Utility ...................................................................... 20 1.5.3. Ti n ích Enterprise Manager ........................................................................... 21 1.5.4. Ti n ích Import and Export Data ..................................................................... 22 1.5.5. Ti n ích Profiler ............................................................................................... 22 1.5.6. Ti n ích Query Analyzer ................................................................................. 23 1.5.7. Ti n ích Server Network Utility ...................................................................... 25 1.5.8. Ti n ích Service Manager ................................................................................ 25 Chương 2. GI I THI U NGÔN NG. TRANSACT – SQL....................................... 27. 2.1. GI I THI U ......................................................................................................... 27 2.2. KI U D. LI U .................................................................................................... 27. 2.3. TRUY XU T D. LI U (DATA QUERY LANGUAGE) ................................ 28. 2.3.1. Truy v n d li u ñơn gi n v i SELECT ......................................................... 28 2.3.2. Tìm hi u các trư ng tính toán ......................................................................... 31 2.3.3. L c d li u v i m nh ñ WHERE................................................................... 33 2.3.4. S p x p d li u v i ORDER BY ..................................................................... 38 2.3.5. Nhóm d li u v i m nh ñ GROUP BY ......................................................... 40 2.3.6. Query con ........................................................................................................ 44 2.3.7. Các phép n i .................................................................................................... 46 2.3.8. K t h p các query ............................................................................................ 52 2.4. C P NH T D. LI U (DATA MANIPULATION LANGUAGE) ................. 53. Gi ng viên: Th.S Nguy n Trí Nhân. 1. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(3)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 2.4.1. Chèn d li u..................................................................................................... 53 2.4.2. C p nh t, xóa d li u ....................................................................................... 55 2.5. BÀI T P TH C HÀNH ...................................................................................... 56 Chương 3. T O CƠ S. D. LI U TRÊN SQL SERVER .......................................... 57. 3.1. CÁC LO I FILE LƯU TR. CƠ S. D. LI U ............................................... 57. 3.1.1. Các t p tin v t lý lưu tr cơ s d li u ............................................................ 57 3.1.2. T p tin d li u chính (Primary Data File) ....................................................... 57 3.1.3. T p tin d li u th y u (Secondary Data Files) .............................................. 58 3.1.4. T p tin lưu v t (Log Files) ............................................................................... 58 3.2. T O CƠ S. D. LI U ...................................................................................... 58. 3.2.1. S d ng ti n ích Enterprise Manager: ............................................................. 58 3.2.2. S d ng câu l nh Transaction - SQL: ............................................................. 61 3.3. XÓA, S A, Đ I TÊN, XEM THÔNG TIN CƠ S. D. LI U ..................... 62. 3.3.1. Xóa cơ s d li u ............................................................................................. 62 3.3.2. Đ i tên Database (Rename) ............................................................................. 64 Chương 4. T O VÀ QU N LÝ B NG (TABLE)........................................................ 65 4.1. T O B NG (TABLE) ....................................................................................... 65 4.1.1. Khái ni m v b ng ........................................................................................... 65 4.1.2. T o c u trúc b ng d li u ................................................................................ 65 4.2. THAY Đ I C U TRÚC B NG (TABLE)...................................................... 69 4.2.1. Thêm m t c t m i trong b ng: ........................................................................ 69 4.2.2. H y b c t hi n có bên trong b ng:................................................................. 70 4.2.3. S a ñ i ki u d li u c a c t: ........................................................................... 70 4.2.4. T t b quy t c ki m tra toàn v!n d li u: ........................................................ 71 4.2.5. B t l i quy t c ki m tra toàn v!n d li u: ........................................................ 71 4.2.6. Đ i tên c t, tên b ng d li u: .......................................................................... 72 4.3. XÓA B NG (TABLE) ....................................................................................... 73 4.4. QU N LÝ B NG ............................................................................................... 73 4.4.1. Tính toàn v!n d li u trong cơ s d li u ....................................................... 73 4.5. T O M!T DATABASE DIAGRAM............................................................... 88 4.5.1. Khái ni m v mô hình quan h d li u: .......................................................... 88 Gi ng viên: Th.S Nguy n Trí Nhân. 2. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(4)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 4.5.2. T o m i mô hình quan h d li u: .................................................................. 88 4.6. BÀI T P TH C HÀNH ...................................................................................... 92 Chương 5. T O VIEW (B NG O) ............................................................................. 97 5.1. KHÁI NI M VIEW ........................................................................................... 97 5.2. S. D NG T – SQL ............................................................................................ 97. 5.3. S. D NG ENTERPRISE MANAGER ......................................................... 102. 5.4. BÀI T P TH C HÀNH .................................................................................... 105 Chương 6. STORE PROCEDURE .............................................................................. 106 6.1. KHÁI NI M STORE PROCEDURE ............................................................ 106 6.1.1. Th t c n i là gì ? .......................................................................................... 106 6.1.2. Các Procdure Store h th ng: ...................................................................... 106 6.1.3. Các l i ích khi s d ng Procdure Store:...................................................... 107 6.2. T O STORE PROCEDURE B"NG L NH CREATE ............................... 107 6.3. THI HÀNH STORE PROCEDURE .............................................................. 110 6.4. CÁC PHÁT BI U ĐI U KHI N ................................................................... 110 6.4.1. Bi u th c Case ............................................................................................... 110 6.4.2. C u trúc r" nhánh IF... ELSE ........................................................................ 114 6.4.3. C u trúc l#p WHILE ...................................................................................... 117 6.5. S A, XÓA, Đ I TÊN TH# T C (STORE PROCEDURE) ....................... 121 6.5.1. H y b Procdure Store: ............................................................................... 121 6.5.2. Thay ñ i n i dung c a Procdure Store: ....................................................... 121 6.6. X. LÝ L$I TRONG STORE PROCEDURE (SP)...................................... 123. 6.6.1. Mã tr v ........................................................................................................ 123 6.6.2. Câu l nh RAISERROR ................................................................................. 124 6.7. BÀI T P TH C HÀNH .................................................................................... 125 Chương 7. CHUY N TÁC, B%Y L$I VÀ KI U CON TR& TRONG SQL SERVER ......................................................................................................................................... 126 7.1. CHUY N TÁC (TRANSACTION)................................................................ 126 7.1.1. Khái ni m ...................................................................................................... 126 7.1.2. Cách t o và ng d ng .................................................................................... 126 7.2. B%Y L$I (TRIGGER) .................................................................................... 133 Gi ng viên: Th.S Nguy n Trí Nhân. 3. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(5)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 7.2.1. Khái ni m ...................................................................................................... 133 7.2.2. Cách t o và ng d ng .................................................................................... 133 7.3. KI U CON TR& (SQL CURSOR) ................................................................ 134 7.3.1. Khái ni m ...................................................................................................... 134 7.3.2. Cách t o và ng d ng .................................................................................... 134 7.4. BÀI T P TH C HÀNH .................................................................................... 136 Chương 8. QU N LÝ B O M T VÀ NGƯ I DÙNG TRONG SQL SERVER ... 137 8.1. KHÁI NI M ..................................................................................................... 137 8.2. T O VÀ QU N LÝ NGƯ I DÙNG ĐĂNG NH P .................................... 137 8.2.1. S d ng Enterprise Manager ......................................................................... 137 8.2.2. S d ng Query Analyzer: .............................................................................. 139 8.3. C P PHÁT QUY N CHO NGƯ I DÙNG .................................................. 139 8.3.1. S d ng Enterprise Manager ......................................................................... 139 8.3.2. S d ng Query Analyzer ............................................................................... 140 8.4. THU H I QUY N ĐÃ C P PHÁT CHO NGƯ I DÙNG ......................... 142 8.4.1. Xóa quy n truy xu t CSDL hi n hành: ......................................................... 142 8.4.2. Xóa b quy n th$c thi ñã c p ho#c t% ch i trên CSDL: ................................ 142 8.4.3. Xóa b quy n t o ñ i tư ng ñã c p ho#c t% ch i trên CSDL: ...................... 143 TÀI LI&U THAM KH O ............................................................................................... 144. Gi ng viên: Th.S Nguy n Trí Nhân. 4. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(6)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. LỜI NÓI ĐẦ ĐẦU Ngôn ng h i có c u trúc (SQL), có ti n thân là SEQUEL, là m t ngôn ng ñư c IBM phát tri n và s d ng trong h cơ s d li u th nghi m có tên là System/R vào năm 1974, chính th c ñư c ANSI/ISO công nh n là m t chu'n ngôn ng s d ng trong cơ s d li u quan h vào năm 1986. Cho ñ n hi n nay, SQL ñã ñư c s d ng ph bi n trong các h qu n tr cơ s d li u thương m i và có vai trò quan tr ng trong nh ng h th ng này. Đư c s$ ñ ng viên c a các ñ ng nghi p trong Khoa Công ngh Thông tin, Trưòng Đ i h c Ph m Văn Đ ng, chúng tôi m nh d n vi t và gi i thi u Bài gi ng H qu n tr cơ s d li u 2 SQL Server cho sinh viên b c Cao ñ ng ngành Công ngh thông tin ñ n b n ñ c. Trong bài gi ng này, chúng tôi không có tham v ng ñ c p ñ n m i khía c nh c a SQL mà ch( mong mu n r)ng ñây s" là tài li u tham kh o tương ñ i ñ*y ñ v các câu l nh thư ng ñư c s d ng trong SQL. Bài gi ng ñư c chia thành tám chương v i n i dung như sau: - Chương 1 T+NG QUAN V, SQL SERVER 2000 - Chương 2 GI-I THI&U NGÔN NG. TRANSACT – SQL - Chương 3 T/O CƠ S1 D. LI&U TRÊN SQL SERVER - Chương 4 T/O VÀ QU N LÝ B NG (TABLE) - Chương 5 T/O VIEW (B NG O) - Chương 6 STORE PROCEDURE - Chương 7 CHUY2N TÁC, B3Y L4I VÀ KI2U CON TR5 TRONG SQL SERVER - Chương 8 QU N LÝ B O M6T VÀ NGƯ8I DÙNG TRONG SQL SERVER So v i chu'n SQL do ANSI/ISO ñ xu t, b n thân các h qu n tr cơ s d li u quan h thương m i l i có th có m t s thay ñ i nào ñó; Đi u này ñôi khi d9n ñ n s$ khác bi t, m#c dù không ñáng k , gi a SQL chu'n và SQL ñư c s d ng trong các h qu n tr cơ s d li u c th . Trong bài gi ng này, chúng tôi ch n h qu n tr cơ s d li u SQL Server 2000 c a hãng Microsoft ñ s d ng cho các ví d minh ho cũng như l i gi i c a các bài t p. Chúng tôi hi v ng r)ng bài gi ng này s" th$c s$ có ích ñ i v i b n ñ c. Chúng tôi r t mong nh n ñư c s$ c vũ và nh ng ý ki n ñóng góp th ng th n c a các b n. Cu i cùng, xin g i l i c m ơn ñ n các th*y cô, ñ ng nghi p và các b n sinh viên ñã ñ ng viên và giúp ñ; chúng tôi hoàn thành bài gi ng này. Gi ng viên: Th.S Nguy n Trí Nhân. 5. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(7)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Qu ng Ngãi, 2014 Nguy n Trí Nhân. Gi ng viên: Th.S Nguy n Trí Nhân. 6. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(8)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Chương 1. TỔNG QUAN VỀ VỀ SQL SERVER 2000 1.1. GIỚ GIỚI THIỆ THIỆU SQL SERVER 1.1.1. Giới thiệu chung về hệ quản trị cơ sở dữ liệu 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. C th , các chương trình thu c lo i này h< tr kh năng lưu tr , s a ch a, xóa và tìm ki m thông tin trong m t cơ s d li u (CSDL). Có r t nhi u lo i h qu n tr CSDL khác nhau: t% ph*n m m nh ch y trên máy tính cá nhân cho ñ n nh ng h qu n tr ph c t p ch y trên m t ho#c nhi u siêu máy tính. Tuy nhiên, ña s h qu n tr CSDL trên th trư ng ñ u có m t ñ#c ñi m chung là s d ng ngôn ng truy v n theo c u trúc mà ti ng Anh g i là Structured Query Language (SQL). Các h qu n tr CSDL ph bi n ñư c nhi u ngư i bi t ñ n là MySQL, Oracle, PostgreSQL, SQL Server, DB2, Infomix, v.v. Ph*n l n các h qu n tr CSDL k trên ho t ñ ng t t trên nhi u h ñi u hành khác nhau như Linux, Unix và MacOS ngo i tr% SQL Server c a Microsoft ch( ch y trên h ñi u hành Windows. - Ư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 d 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. 1.1.2. Giới thiệu về phiên bản SQL Server Microsoft SQL Server là m t h qu n tr cơ s d li u quan h (relational database management system – RDBMS) do Microsoft phát tri n. SQL Server là m t h qu n tr cơ s d li u quan h m ng máy tính ho t ñ ng theo mô hình khách ch cho phép ñ ng th i cùng lúc có nhi u ngư i dùng truy xu t ñ n d li u, qu n lý vi c truy nh p h p l và các quy n h n c a t%ng ngư i dùng trên m ng. Ngôn ng truy v n quan tr ng c a Microsoft SQL server là Transact-SQL L*n lư t các phiên b n c a Microsoft SQL Server ñã ra ñ i sau s$ ki n này, t% 4.2 sau ñó ñư c nâng c p thành 4.21, 6.0, 6.5, 7.0 và hi n gi là Microsoft SQL Server 2000, 2005 và m i nh t là Microsoft SQL Server 2008, Microsoft SQL Server 2012, Microsoft SQL Server 2013 . - SQL Server 2005: SQL Server 2005, ñư c phát hành vào tháng 11 năm 2005, là phiên b n ti p theo c a SQL Server 2000. S d ng trên n n Net Framework 2.0. Gi ng viên: Th.S Nguy n Trí Nhân. 7. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(9)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. - SQL Server 2008: Đây là phiên b n m i nh t c a SQl Server. Ngày 27/02/2008, s d ng trên n n Net Framework 3.0. - SQL Server 2012: Ngày 6/3/2012, t p đồn Microsoft tuyên b phiên b n m i nh t Microsoft SQL Server 2012, n n t ng d li u ñư c s d ng nhi u nh t trên th gi i, s>n. SQL Server 2012 giúp gi i quy t các thách th c liên quan ñ n s$ gia tăng kh i lư ng d li u b)ng cách chuy n các d li u này thành các t*m nhìn mang tính quy t ñ nh nhanh chóng, giúp khách hàng qu n lý b t kì d li u nào, v i b t kì kích thư c nào, t i c cơ s và trên ñi n toán ñám mây. SQL Server 2012 ñưa ñ n m t n n t ng v i các công c quen thu c ñ qu n lý d li u dù ñ nh d ng nào, kích thư c l n t i ñâu. 1.2. Các thành phầ phần trong SQL Server SQL Server ñư c c u thành b i nhi u thành ph*n khác nhau, các thành ph*n có m i quan h trong m t h th ng, ph i h p v i nhau ñ t o thành m t gi i pháp hoàn ch(nh, nâng cao hi u qu qu n tr , phân tích, lưu tr d li u: - SQL Server Database: Là c< máy cơ s d li u bao g m Database Engine, lõi d ch v cho vi c lưu tr , x lý và b o m t d li u, sao lưu và ñ ng b (Replication), tìm ki m toàn văn (Full-Text Search) và các công c cho vi c qu n tr d li u quan h và XML. - Analysis services: Bao g m các công c cho vi c t o và qu n lý ti n trình phân tích tr$c tuy n (online analytical processing – OLAP) và các ng d ng khai thác d li u. - Reporting Services: Bao g m các thành ph*n server và client cho vi c t o, qu n lý và tri n khai các báo cáo. Reporting Services cũng là n n t ng cho vi c phát tri n và xây d$ng các ng d ng báo cáo. - Notification Services: Là n n t ng cho s$ phát tri n và tri n khai các ng d ng t o và g i thông báo. Notification Services có th g i thông báo theo ñ ch th i ñ n hàng ngàn ngư i ñăng ký s d ng nhi u lo i thi t b . - Integration Services: Là m t t p h p các công c ñ h a và các ñ i tư ng l p trình cho vi c di chuy n, sao chép và chuy n ñ i d li u. - Connectivity Components: Là các thành ph*n cho vi c truy n thông gi a client và server, và các thư vi n m ng như DB-Library, ODBC và OLEDB. - SQL Server Management Studio (SSMS): Là môi trư ng ñư c tích h p cho vi c truy xu t, c u hành, qu n tr và phát tri n t t c các thành ph*n c a SQL Server. SSMS k t h p t t c các tính năng c a Enterprise Manager, Query Analyzer và Analysis Manager, ñư c bao hàm trong các phiên b n trư c c a SQL Server, thành m t môi trư ng ñơn mà cung c p truy xu t SQL Server ñ phát tri n và qu n tr t t c các m c k? năng trên. - Server SQL Configuration Manager: Cung c p các qu n tr c u hình cơ s cho các d ch v SQL Server (SQL Server services), các giao th c server (server protocols), các giao th c client (client protocols) và các bí danh client (client aliases). - SQL Server Profiler: Cung c p giao di n ngư i dùng ñ h a cho vi c giám sát th hi n c a Database Engine ho#c th hi n c a Analysis Services. - Database Engine Tuning Advisor: giúp t o các t p t i ưu ch( s (indexes), indexed views và các phân vùng (partitions). Gi ng viên: Th.S Nguy n Trí Nhân. 8. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(10)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 1.3.. CÀI ĐẶ ĐẶT SQL SERVER Khác v i m t s ph*n m m khác như Microsoft Office, Visual Studio, Delphi,... vi c cài ñ#t Microsoft SQL Server không ñơn gi n. Do ñó, s" hư ng d9n b n các bư c ñ t$ cài ñ#t cơ s d li u Microsoft SQL Server Personal. Đây là phiên b n làm vi c trong môi trư ng Windows Me, Windows 98, Windows NT Workstation 4.0 ho#c Windows 2000 Professional. B n có th cài ñ#t và s d ng Microsoft SQL Server trên máy tính ñơn (Stand-Alone) mà không c*n ph i cài ñ#t Windows NT Server ho#c không c*n trang b m t h th ng m ng máy tính. * C u hình máy t i thi u ñ cài ñ t SQL Server 2000: - CPU: Pentium 166 Mhz ho#c Pentium Pro. - RAM: 64MB cho Windows 2000 Professional (128MB thì t t hơn). - Dung lư)ng ñĩa tr+ng: 95MB – 270MB v i phiên b n ñ*y ñ (Full); 50MB v i phiên b n t i thi u (Minimun); 130MB v i phiên b n thư ng dùng (Typical). - H, ñi-u hành: Windows Me, Windows 98, Windows NT Workstation 4.0, Windows 2000 Professional. - Màn hình: VGA v i ñ phân gi i 800 x 600 ho#c cao hơn. - Internet Browser: Microsoft Internet Explorer 5.0 tr lên. * Các bư.c th/c hi,n vi,c cài ñ0t: Bư c 1: Đưa ñĩa Microsoft SQL Server Personal vào ñĩa CDROM. N u ñĩa không t$ ñ ng ch y, b n double click chu t vào t p tin autorun.exe ñ kh i ñ ng chương trình cài ñ#t. Bư c 2: Trong màn hình kh i ñ ng cài ñ#t Microsoft SQL Server Personal, b n ch n m c SQL Server 2000 Components ñ b t ñ*u vi c cài ñ#t.. Hình 1.1.. Màn hình kh i ñ ng cài ñ#t SQL. Bư c 3: B n ch n ch c năng Install Database Server ñ cài ñ#t cơ s d li u Microsoft SQL Server Personal. Gi ng viên: Th.S Nguy n Trí Nhân. 9. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(11)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 1.2.. B c Cao Đ ng Công ngh Thông tin. Màn hình ch n thành ph*n cài ñ#t SQL. Đ i v i hai thành ph*n còn l i, ñư c dùng ñ cài ñ#t các thành ph*n liên quan ñ n vi c x lý phân tích d li u tr$c tuy n (OLAP – Online Analytical Processing) và x lý truy v n d li u b)ng ngôn ng ti ng Anh. Hai thành ph*n này không nh t thi t ph i ñư c cài ñ#t chung v i cơ s d li u Microsoft SQL Server Personal.. Hình 1.3.. Trình cài ñ#t ti n hành sao chép m t s file c*n thi t. Hình 1.4.. Ch n Next ñ ti p t c cài ñ#t.. Bư c 4: Trong màn hình Welcome, nh n nút Next ñ ti p t c vi c cài ñ#t. Ch n Local Computer ñ cài ñ#t cơ s d li u ngay trên máy tính hi n hành, nh n Next ñ ti p t c. Gi ng viên: Th.S Nguy n Trí Nhân. 10. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(12)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 1.5.. B c Cao Đ ng Công ngh Thông tin. Màn hình ch n cách th c cài ñ#t SQL. Trong trư ng h p b n mu n th$c hi n vi c cài ñ#t cơ s d li u cho m t máy ch t% xa bên trong m t h th ng m ng c c b , b n ch n ch c năng Remote Computer. Khi ñó, b n s" cung c p thêm tài kho n ngư i dùng, m t kh'u và domain c a ngư i dùng thu c nhóm ngư i qu n tr ñ chương trình cài ñ#t có th truy xu t vào máy ch trong quá trình cài ñ#t. Bư c 5: Trong màn hình l$a ch n cài ñ#t (Installation Selection), b n ch n ch c năng Create a new instance of SQL Server ñ ñơn gi n trong quá trình cài ñ#t, nh n nút Next ñ t p t c.. Hình 1.6.. Màn hình l$a ch n cài ñ#t SQL. Bư c 6: Trong màn hình thông tin ngư i dùng (User Information), b n nh p vào tên c a mình và tên cơ quan. Có th b tr ng tên cơ quan. Nh n nút Next ñ ti p t c.. Gi ng viên: Th.S Nguy n Trí Nhân. 11. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(13)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 1.7.. B c Cao Đ ng Công ngh Thông tin. Màn hình nh p thông tin ngư i dùng. Bư c 7: Trong màn hình th a ư c b n quy n ph*n m m (Software License Agreement), Microsoft ñưa ra m t s th a ư c cho ngư i dùng khi s d ng ph*n m m. Nh n Yes ñ ñ ng ý các th a ư c này và ti p t c quá trình cài ñ#t.. Hình 1.8.. Màn hình th a ư c b n quy n ph*n m m. Gi ng viên: Th.S Nguy n Trí Nhân. 12. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(14)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 1.9.. B c Cao Đ ng Công ngh Thông tin. Màn hình nh p s CDKey ph*n m m. Ch n Next ñ ti p t c cài ñ#t. Bư c 8: Trong màn hình ñ nh nghĩa lo i cài ñ#t (Installation Definition), ch n Server and Client Tools ñ ch( ñ nh vi c cài ñ#t cơ s d li u và các ti n ích khác. Nh n nút Next ñ ti p t c.. Hình 1.10.. Màn hình ñ nh nghĩa lo i cài ñ#t SQL. Bư c 9: Trong màn hình ñ nh nghĩa tên th hi n (Instance Name), ch n ô ki m tra Default n u mu n tên th hi n c a Microsoft SQL Server Personal trùng v i tên c a máy tính b n ñang cài ñ#t. Nh n nút Next ñ ti p t c.. Gi ng viên: Th.S Nguy n Trí Nhân. 13. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(15)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 1.11.. B c Cao Đ ng Công ngh Thông tin. Màn hình nh p tên th hi n. Trong trư ng h p b n mu n ñ#t tên khác thì b ch n ô ki m tra Default, nh p vào tên th hi n t i m c Instance Name. Bư c 10: Trong màn hình ch n lo i cài ñ#t (Setup Type) b n nên ch n lo i thư ng dùng là Typical n u dung lư ng ñĩa c ng còn tr ng l n hơn 130MB, ngư c l i n u dung lư ng ñĩa c ng còn tr ng l n hơn 50MB thì nên ch n lo i t i thi u (Minimum). Nh n nút Next ñ ti p t c cài ñ#t.. Hình 1.12.. Màn hình ch n lo i cài ñ#t SQL. M#c ñ nh thư m c C:\Programs\Microsoft SQL Server s" ch a các t p tin sau khi cài ñ#t, bao g m các t p tin chương trình và t p tin d li u. B n nên ch n m t thư m c khác ñ lưu tr các t p tin cơ s d li u v i m c ñích an toàn hơn. B n có th nh n nút Browser ñ thay ñ i các thư m c khác n u mu n. Gi ng viên: Th.S Nguy n Trí Nhân. 14. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(16)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Bư c 11: Trong màn hình ch n tài kho n ngư i dùng kh i ñ ng d ch v (Services Accounts), cho phép b n ch( ñ nh tên tài kho n ngư i dùng ñ có th kh i ñ ng hai d ch v chính y u c a Micorsoft SQL Server khi ho t ñ ng là: SQL Server và SQL Server Agent trong trư ng h p Microsoft SQL Server ch y trong môi trư ng Windows NT. Nh n nút Next ñ ti p t c.. Hình 1.13.. Màn hình ch n tài kho n ngư i dùng. N u h ñi u hành máy tính b n cài ñ#t là Windows 98 thì màn hình này s" không xu t hi n. B n nên ch n s d ng tài kho n ngư i dùng h th ng c c b (Use the Local System Account) ñ kh i ñ ng cùng lúc c 2 d ch v (Use the same Account for each service) ñ i v i phiên b n Microsoft SQL Server Personal. Bư c 12: Trong màn hình ch( ñ nh cơ ch xác th$c ñăng nh p (Authentication Mode), b n ch n Mixed Mode ñ ch( ñ nh vi c ñăng nh p (Login) vào Microsoft SQL Server Personal b)ng 2 cách: tài kho n ngư i dùng c a Windows ho#c tài kho n ngư i dùng trong Microsoft SQL Server. B n nh p tài kho n SA cho tài kho n ngư i dùng SA trong Microsoft SQL Server. Nh n nút Next ñ ti p t c.. Hình 1.14. Gi ng viên: Th.S Nguy n Trí Nhân. Màn hình cơ ch xác th$c ñăng nh p 15. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(17)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. M#c ñ nh luôn luôn có m t tài kho n ngư i dùng có tên là sa (system administrator), ngư i qu n tr cơ s d li u trong Microsoft SQL Server ñư c t o sau khi k t thúc quá trình cài ñ#t cơ s d li u Microsoft SQL Server.. Hình 1.15.. Màn hình chu'n b sao chép các t p tin. Bư c 13: Trong màn hình b t ñ*u sao chép t p tin (Start Copying Files), h th ng thông báo cho bi t các thông tin cài ñ#t ñã ñư c cung c p ñ*y ñ . Nh n nút Next ñ b t ñ*u quá trình sao chép t p tin t% CDRom vào ñĩa c ng máy tính.. Hình 1.16.. Gi ng viên: Th.S Nguy n Trí Nhân. Chu'n b ti n trình sao chép các t p tin. 16. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(18)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 1.17.. B c Cao Đ ng Công ngh Thông tin. Ti n hành sao chép các t p tin. Bư c 14: B n ph i ch trong m t th i gian ñ quá trình cài ñ#t th$c hi n. Cu i cùng khi xu t hi n màn hình hoàn thành cài ñ#t (Setup Complete), b n nh n nút Finish ñ k t thúc quá trình cài ñ#t cơ s d li u Microsoft SQL Server Personal.. Hình 1.18.. Màn hình hoàn thành cài ñ#t SQL. 1.4.. CÁC CSDL HỆ HỆ THỐ THỐNG TRONG SQL SERVER Các CSDL ch a các d li u c a ngư i dùng ñư c g i là CSDL c a ngư i dùng (user database). Ngoài ra, các ho t ñ ng c a SQL Server tùy thu c vào b n CSDL h th ng (system Database): master, model, Tempdb, và msdb. Các CSDL này t n t i trong m<i th hi n c a SQL Server. Gi ng viên: Th.S Nguy n Trí Nhân. 17. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(19)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. CSDL h, th+ng và CSDL ngư1i dùng: CSDL Master: ñu c dùng ñ ñi u khi n các thao tác và thông tin m c h th ng c a SQL Server. Lưu tr thông tin h th ng trong 16 b ng h th ng, g i là system catalog. System catalog lưu tr các thông tin tài kho n ngư i dùng, bao g m các m c như là b o m t, ID, m t kh'u, các CSDL lưu trên server, các bi n môi trư ng, các thông ñi p l<i h th ng, và các th t c h th ng. CSDL Model: ñư c dùng như là m t CSDL m9u cho t t c các CSDL m i ñư c t o ra trong h th ng. CSDL Model có th ñư c tùy bi n ñ t o m t c u trúc CSDL m#c ñ nh m i cho CSDL m i. Ví d , n u m t b ng c*n ph i t n t i trong CSDL m i sau này thì các b ng ñó nên ñư c t o trong CSDL model. Các CSDL m i v%a ñư c t o s" có kích c; ít nh t b)ng kích c; CSDL model. CSDL Tempdb: ñư c dùng như là vùng lưu ch a t m th i ñ i v i các b ng và các th t c t m. SQL Server 2008 h< tr hai lo i b ng t m: b ng t m toàn c c (global temporary table) và b ng t m c c b (local temporary table). Tên c a b ng t m toàn c c ñư c b t ñ*u ##, có th ñư c truy xu t ñ i v i t t c các client, trong khi tên b ng t m c c b b t ñ*u #, ch( có th truy xu t ñ i v i nh ng client mà t o chúng. Làm vi c trong Tempdb r t nhanh vì các ho t ñ ng không ñư c ghi nh n l i. Tuy nhiên, khi client k t thúc k t n i ñ n Server thì toàn b các b ng và th t c trong TempDB s" b xóa. CSDL Msdb: SQL Server Agent dùng CSDL msdb cho các tác v khác nhau, như l p bi u, c nh báo và ghi nh n các thao tác. D li u ñư c lưu trong các b ng h th ng trong CSDL msdb. Các b ng h th ng ñư c dùng b i SQL Server Agent là sysalerts, syscategories, sysdownloadlist, sysjobhistory, sysjobs, sysjobschedules, sysjobservers, sysjobsteps, sysnotifications, sysoperators, systargetservergroupmembers, systargetservergroups, systargetservers và systaskids. Ngoài ra, CSDL msdb có 7 b ng dùng cho thao tác d$ phòng và ph c h i d li u: backupfile, backupmediafamily, backupmediaset, backupset, restorefile, restorefilegroup, và restorehistory. SQL Server có th t$ ñ ng tăng ho#c gi m kích c; c a CSDL khi các dòng ñư c thêm vào ho#c xóa ñi. CSDL Pubs, Northwind: là hai CSDL ví d ñư c dùng trong các tài li u c a SQL Server Các CSDL khác là các CSDL do ngư i dùng t o ra.. Hình 1.19.. C s d li u h th ng và ngư i dùng t o.. Khái ni m v cơ s d li u quan h : Databases, Tables, Columns, Views, Datatypes, và Database Schemas Gi ng viên: Th.S Nguy n Trí Nhân. 18. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(20)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. D li u trong m t RDBMS như SQL Server 2000 ñư c s p x p trong m t s ñ i tư ng, dA th y nh t là b ng (table). D li u ñư c lưu trong các Table theo dòng và c t. D li u liên quan ñ n các m c th$c t như các nhân viên, các s n ph'm, vi c g i hàng, ngư i tham gia… ñư c lưu trong các table riêng bi t. Ví d , h th ng qu n lý nhân viên c a m t công ty có th có m t b ng g i là nhân viên, b ng này dùng ñ lưu chi ti t t t c c a các nhân viên trong công ty. Chi ti t c a nhân viên bao g m H nhân viên, Tên nhân viên, Đ a ch(, S ch ng minh nhân dân… Th(nh tho ng c*n 'n các thông tin riêng tư t% ngư i dùng b)ng cách dùng m t truy v n. Các truy v n là các câu l nh SQL lưu trong CSDL và có th ñư c tham chi u ñ n các câu l nh SQL theo cách như các table. SQL Server cũng s d ng các ki u d li u, m<i c t có th có các ki u khác nhau. T t c các ki u khác nhau này c a các ñ i tư ng, gi ng như b ng, truy v n và ki u d li u ñư c lưu trong m t CSDL. Trong môi trư ng SQL Server, m t lư c ñ CSDL (database schema) là t p h p các ñ i tư ng CSDL có liên quan ñ n vi c s d ng m t tên duy nh t và nó thu c v m t ngư i dùng ñơn l=. 1.5. CÁC CÔNG CỤ CỤ TRONG SQL SERVER Sau khi cài ñ#t xong Microsoft SQL Server công vi c k ti p mà chúng ta s" làm là tìm hi u v các ti n ích bên trong Microsoft SQL Server nh)m ñ s d ng m t cách ñúng ñ n và có hi u qu cao. Các ti n ích này ñã ñư c cài ñ#t chung v i Microsoft SQL Server. Đ kích ho t các ti n ích này, chúng ta s" ch n nh ng bi u tư ng n)m trong ñư ng d9n như sau: Start → Programs → Microsoft SQL Server. Hình 1.20.. Các ti n ích bên trong Microsoft SQL Server.. Gi ng viên: Th.S Nguy n Trí Nhân. 19. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(21)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 1.5.1. Tiện ích Book Online Bng d ng này cho phép chúng ta có th tra c3u tr/c tuy4n t t c các thông tin liên quan ñ n Microsoft SQL Server m t cách ñ*y ñ v i các tính năng tìm ki m dA dàng và m t giao di n dA s d ng. N i dung ñư c trình bày theo t%ng ph*n dA dàng xem trong trang Contents. Ngoài ra còn các trang Index và Search cho phép các b n tra c u nhanh theo ch( m c ñã ñư c s p x p trư c ñó ho#c gõ vào các t% khóa c*n tìm. Khi c*n tham kh o cú pháp các l nh, hàm, bi n h th ng... m t cách ñ*y ñ nh t thì chúng ta vào ñây xem là hoàn toàn chính xác. Tuy nhiên n i dung trình bày hoàn toàn là b)ng ti ng Anh.. Hình 1.21.. Ti n ích Book Online.. 1.5.2. Tiện ích Client NetWork Utility Ti n ích này cho phép chúng ta thay ñ i, t o m i và lưu l i các nghi th3c n+i k4t m5ng (network protocol) m#c ñ nh c a máy tr m khi th$c hi n n i k t vào Microsoft SQL Server t i các máy ch .. Gi ng viên: Th.S Nguy n Trí Nhân. 20. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(22)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 1.22.. B c Cao Đ ng Công ngh Thông tin. Ti n ích Client NetWork Utility.. 1.5.3. Tiện ích Enterprise Manager Ti n ích này cho phép chúng ta kh i ñ ng ho#c t m ngưng các d ch v c a Microsoft SQL Server. Trong ph*n cài ñ#t bư c 9 chúng tôi ñã gi i thi u các d ch v c a Microsoft SQL Server ph i ñư c kh i ñ ng trư c thì các b n m i có th làm vi c ñư c v i Microsoft SQL Server. . Hình 1.23.. Ti n ích Enterprise Manager.. Ngoài ra ti n ích này còn giúp chúng ta qu n tr6 m t ho#c nhi u Microsoft SQL Server khác nhau, v i giao di n ñ h a thân thi n (user friendly) ti n ích này s" giúp cho các b n có th t o l p cơ s d li u và các thành ph*n bên trong Microsoft SQL Server m t cách dA dàng hơn. Gi ng viên: Th.S Nguy n Trí Nhân. 21. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(23)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Tuy nhiên mu n qu n tr Microsoft SQL Server thì chúng ta ph i ñăng ký (register) máy ch vào ti n ích này, vi c ñăng ký như th nào chúng tôi s" trình bày trong nh ng ph*n ti p theo. 1.5.4. Tiện ích Import and Export Data Ti n ích này cho phép chúng ta th$c hi n các tính năng trong vi c nh p (import), xu t (export) và chuy'n ñ8i d9 li,u qua l i gi a Microsoft SQL Server và nh ng lo i cơ s d li u khác thư ng dùng như: Microsoft Access, Visual FoxPro, Microsoft Excel, t p tin văn b n ASCII.... Hình 1.24.. Ti n ích Import and Export Data.. Trong ph*n bài gi ng này chúng tôi ch( trình bày cách s d ng Microsoft SQL Server nên không gi i thi u nhi u v ti n ích này, tuy nhiên n u các b n mu n tr thành ngư i qu n tr Microsoft SQL Server thì ch c r)ng công c này là r t c*n thi t cho ngư i qu n tr . 1.5.5. Tiện ích Profiler Ti n ích này cho phép chúng ta phát hi n ra nh ng bi4n c+ ñã x y ra c a Microsoft SQL Server khi ñang th$c hi n m t x lý nào ñó trên máy ch . Các bi n c này có th ñư c ghi l i trong m t t p tin lưu v t (trace file) ñ sau này s d ng l i cho vi c phân tích nh)m phát hi n ra nh ng v n ñ khi th$c hi n các câu l nh truy v n trong x lý ñó.. Gi ng viên: Th.S Nguy n Trí Nhân. 22. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(24)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 1.25.. B c Cao Đ ng Công ngh Thông tin. Ti n ích Profiler.. Ho t ñ ng c a ti n ích này có ph*n g*n gi ng công c tìm l<i trong các ngôn ng l p trình, có nghĩa là các b n s" cho th$c hi n tu*n t$ các câu l nh trong m t x lý lô (batch) ñ có th phát hi n ra l<i c a m t câu l nh nào ñó (n u có). 1.5.6. Tiện ích Query Analyzer Ti n ích này cho phép chúng ta so5n th o các t p tin k ch b n (script file) – là t p tin văn b n ASCII ch a các câu l nh SQL giao tác trên cơ s d li u Microsoft SQL Server ho#c có th th/c hi,n các truy v:n tr$c ti p trên cơ s d li u Microsoft SQL Server và nh n ñư c k t qu tr$c ti p ngay sau khi th$c hi n truy v n ñó.. Gi ng viên: Th.S Nguy n Trí Nhân. 23. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(25)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Nút th$c hi n truy v n. Câu l nh truy v n gõ t i ñây. Hình 1.26.. Ti n ích Query Analyzer.. Tuy nhiên trư c khi vào ñư c màn hình 1-19 h th ng Microsoft SQL Server s" yêu c*u các b n ñăng nh p (login) vào h th ng v i tên tài kho n ngư i dùng và m t kh'u h p l b i vì Microsoft SQL Server là m t h qu n tr cơ s d li u m ng máy tính. Trong ñó tên tài kho n ngư i dùng và m t kh'u này s" do ngư i qu n tr Microsoft SQL Server t o ra trư c ñó, trong trư ng h p làm vi c trên Microsoft SQL Server Desktop thì chúng ta có th nh p vào v i tên là SA (System Administrator – ngư i qu n tr h th ng cơ s d li u Microsoft SQL Server) và m t kh'u ñ tr ng.. Hình 1.27. Gi ng viên: Th.S Nguy n Trí Nhân. Đăng nh p ñ n Server. 24. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(26)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Trong các chương còn l i chúng ta ch y u làm vi c v i ti n ích này ñ t o ra các ñ i tư ng lưu tr d li u bên trong Microsoft SQL Server. 1.5.7. Tiện ích Server Network Utility Ti n ích này cho phép chúng ta qu n lý các thư vi,n nghi th3c n+i k4t m5ng c a máy ch dùng ñ l ng nghe các yêu c*u t% các máy tr m – có nghĩa các nghi th c n i k t m ng gi a máy ch và máy tr m ph i ăn kh p nhau ñ chúng có th giao ti p qua l i.. Hình 1.28.. Ti n ích Server Network Utility. 1.5.8. Tiện ích Service Manager Ti n ích này cho phép chúng ta qu n lý các d6ch v; liên quan ñ n Microsoft SQL Server. Có th th$c hi n vi c: kh i ñ ng (start), t m d%ng (pause) và ngưng l i (stop) các d ch v ñó. Các d ch v (services) này ñư c xem như là các ng d ng ch y ng*m ñ nh bên dư i h th ng trong môi trư ng Windows.. Gi ng viên: Th.S Nguy n Trí Nhân. 25. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(27)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 1.29.. B c Cao Đ ng Công ngh Thông tin. Ti n ích Service Manager.. Đ i v i d ch v MSSQLSever b t bu c ph i ñư c kh i ñ ng ñ ngư i dùng m i có th làm vi c v i cơ s d li u trong Microsoft SQL Server. Do ñó sau khi cài ñ#t hoàn thành Microsoft SQL Server các b n ph i t$ kh i ñ ng d ch v này ñ chúng ta có th làm vi c v i Microsoft SQL Server. Tuy nhiên k t% các l*n b t máy tính sau ñó các d ch v này s" ñư c t$ kh i ñ ng n u chúng ta ñã ch n vào ô ki m tra Auto-start như hình phía trên. Thông thư ng ti n ích Service Manager s" xu t hi n bên dư i thanh tác v (task tray) c a Windows. Đ kích ho t ti n ích này, chúng ta có nh n ñúp vào bi u tư ng Service Manager.. Hình 1.30.. Ti n ích Service Manager xu t hi n trên thanh công c .. Gi ng viên: Th.S Nguy n Trí Nhân. 26. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(28)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Chương 2. GIỚ GIỚI THIỆ THIỆU NGÔN NGỮ NGỮ TRANSACT – SQL 2.1. GIỚ GIỚI THIỆ THIỆU - Structured Query Language (SQL) là ngôn ng do IBM phát tri n t% năm 1970, dùng ñ giao ti p v i cơ s d li u. Các h th ng cơ s d li u có cách vi t và thi hành câu l nh SQL riêng như: ANSI SQL (SQL chu'n), T-SQL (SQL Server, Sybase), PL/SQL (Oracle), Access SQL. - 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. Các l nh T-SQL ñư c chia làm 3 nhóm: + Data Definition Language (DDL): Ðây là nh ng l nh dùng ñ qu n lý các thu c tính c a m t Database như ñ nh nghĩa các hàng ho#c c t c a m t table, hay v trí data file c a m t database... như Create, Alter, Drop. + Data Control Language (DCL): Ðây là nh ng l nh qu n lý các quy n truy c p lên t%ng object (table, view, stored procedure...) như Grant, Revoke, Deny. + Data Manipulation Language (DML): Ðây là nh ng l nh ph bi n dùng ñ x lý data như Select, Update, Insert, Delete. Trong ph*n này chúng ta ch y u nghiên c u nhóm l nh Data Manipulation Language (DML). 2.2. KIỂ KIỂU DỮ DỮ LIỆ LIỆU Trong SQL Server, m<i c t, bi n ñ a phương, th hi n và tham s có m t ki u d li u liên quan. M t ki u d li u là m t thu c tính ch( ñ nh ki u d li u mà các ñ i tư ng có th gi : s nguyên, ký t$, ti n t , ngày tháng và th i gian, các chu<i nh phân, và như v y SQL Server cung c p m t b các h th ng ki u d li u ñ xác ñ nh t t c các lo i d li u có th ñư c s d ng v i SQL Server. Ngoài ra b n cũng có th t$ ñ nh nghĩa ki u d li u cho riêng mình (sinh viên t$ nghiên c u). Ki'u s+ Ki'u d9 li,u Gi.i h5n mô t Byte lưu tr9 Bit. Nh n giá tr 0 (False), 1 (True) ho#c NULL. Tinyint. T% 0 ñ n 255. 1 byte. Smallint. T% -215 (-32,768) ñ n 215-1 (32,767). 2 bytes. Int. T% -231 (-2,147,483,648) ñ n 231-1 (2,147,483,647). 4 bytes. Bigint. T% -263 (-9,223,372,036,854,775,808) ñ n 263-1 (9,223,372,036,854,775,807). 8 bytes. Gi ng viên: Th.S Nguy n Trí Nhân. 27. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(29)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Decimal, Numeric. T% -1038+1 ñ n 1038-1. Ph thu c và mô t , t% 5 ñ n 17 bytes. Real. T% -3.40E + 38 ñ n -1.18E - 38, 0 và t% 1.18E - 38 ñ n 3.40E + 38. 4 bytes. Float. T% -1.79E+308 ñ n -2.23E-308, 0 và t% 2.23E-308 to 1.79E+308. T i ña 8 bytes. Smallmoney. T% -214.748,3648 ñ n 214.748,3647. 4 bytes. T% -922.337.203.685.477,5808 ñ n 922.337.203.685.477,5807 Ki'u ngày tháng Ki'u d9 li,u Gi.i h5n mô t. Money. 8 bytes. Byte lưu tr9. Date. T% 01/01/0001 ñ n 31/12/9999. 3 bytes. Time. T% 00:00:00.0000000 ñ n 23:59:59.9999999. 5 bytes. SmallDatetime. Ngày t% 01/01/1900 ñ n 06/06/2079 Gi t% 00:00:00 ñ n 23:59:59. 4 bytes. Datetime. Ngày t% 1/1/1753 ñ n 31/12/9999 Gi t% 00:00:00 ñ n 23:59:59.997. 8 bytes. Ki'u kí t/ Ki'u d9 li,u. Gi.i h5n mô t. Byte lưu tr9. Char. Cú pháp: char(n), n t% 0 ñ n 8.000. n bytes. Varchar. Cú pháp: varchar(n), n t% 0 ñ n 8.000. T i ña n bytes. Text. Lưu tr t i ña 2.147.483.647 kí t$. T i ña 2,147,483,647 bytes. nChar. Cú pháp: nchar(n), n t% 0 ñ n 4.000. 2*n bytes. nVarchar. Cú pháp: nvarchar(n), n t% 0 ñ n 4.000. 2*n bytes. nText. Lưu tr t i ña 1,073,741,823 ký t$. T i ña 2,147,483,647 bytes. 2.3. TRUY XUẤ XUẤT DỮ DỮ LIỆ LIỆU (DATA QUERY LANGUAGE) 2.3.1. Truy vấn dữ liệu đơn giản với SELECT Trong th$c t chúng ta thư ng xuyên ph i th$c hi n các công vi c như l p danh sách sinh viên trong l p hay l p danh sách các nhà cung c p hàng hóa cho công ty… Đ th$c Gi ng viên: Th.S Nguy n Trí Nhân. 28. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(30)</span> B c Cao Đ ng Công ngh Thông tin. Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. hi n các công vi c ñó trong h qu n tr CSDL v i ngôn ng T-SQL, chúng ta s d ng câu truy v n SELECT. Cú pháp: SELECT [DISTINCT] [TOP So_Ban_Ghi] <Danh_Sach_Truong> FROM <Ten_Bang> Gi i thích: - Distinct: Ch( ñ nh không trùng l#p thông tin gi a các b n ghi c a k t qu truy v n tương ng v i danh sách trư ng hi n th . - So_Ban_Ghi: S b n ghi tr v trong k t qu truy v n Lưu ý: N u danh sách k t qu không ñư c s p x p, k t qu s" hi n th theo th t$ d li u ñư c thêm vào b ng. - Danh_Sach_Truong: Trư ng hi n th trong danh sách k t qu truy v n, danh sách trư ng có th là tên các trư ng ho#c các bi u th c ñư c ngăn cách v i nhau b)ng d u ph'y dư i “,”. S lư ng t i ña các trư ng, bi u th c trong danh sách này là 4096. Lưu ý: S d ng ký t$ “*” khi c*n l y t t c các trư ng trong b ng g c vào danh sách k t qu truy v n. - Ten_Bang: Tên b ng c*n truy v n d li u Ví d : Cho các b ng cơ s d li u sau: - B ng danh sách nhà cung c:p, khách hàng (DMDT) bao g m các trư ng: Id, Ma_Dt, Ten_Dt, Dia_Chi, So_Dt, Fax, Email, Ghi_Chu. D li u m9u Id. Ma_Dt. Ten_Dt. 1. N001. Cty TNHH ABC. Hà N i. 04 3640 0119. 3. N002. Cty C ph*n CB th$c ph'm Mi n B c. Hà N i. 046 3423 3438. 4. N003. Cty liên doanh Vi t Pháp. H i Phòng. 033 6534 391. 5. N004. Cty TNHH m t thành viên c p nư c Yên Bái. Yên Bái. 02183 543 443. 6. N005. Cty C ph*n L c H ng. B c Ninh. 0240 362 552. 7. N006. Cty XNK Á Châu. H i Dương. 0320 3111 411. Gi ng viên: Th.S Nguy n Trí Nhân. Dia_Chi. 29. So_Dt. Fax. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng. Email. Ghi chú.
<span class='text_page_counter'>(31)</span> B c Cao Đ ng Công ngh Thông tin. Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. - B ng danh sách v t tư, hàng hóa (DMVT) bao g m các trư ng: Id, Ma_Vt, Ten_Vt, Dvt, Quy_Cach, Ghi_Chu. Id. Ma_Vt. Ten_Vt. Dvt. Quy_Cach. 1. TP001. Bánh tr ng Custas. H p. H p 20 cái. 2. TP002. Bánh kem x p. Gói. Gói 200 gram. 3. VT001. B t mì lo i 1. Kg. 4. VT002. Hương li u. Kg. 5. VT003. B tn. Kg. 6. TP003. Bánh kem bơ. Gói. Gói 150 gram. 7. TP004. Bánh Socola Vinasun. H p. H p 6 cái. 8. VT004. Socola nguyên li u. Kg. 9. VT005. S a Ông Th. Thùng. - B ng ch3ng t< (CT) bao g m các trư ng: Id, Ma_Ct, Nhom_Ct, So_Ct, Ngay_Ct, Ma_Dt, Ong_Ba, Dia_Chi, Dien_Giai. Stt_Ct. Ma_Ct. Nhom_Ct. So_Ct. Ngay_Ct. Ma_Dt. Ong_Ba. Dia_Chi. Dien_Giai. 1. PX. 1. PX001. 31/05/11. N001. Lê Văn Khương. Hà N i. Xu t hàng hóa bán ñ i lý. 2. PX. 1. PX002. 01/06/11. N001. Đào Th H nh. Hà N i. Xu t hàng hóa bán ñ i lý. 3. PN. 2. PN001. 01/06/11. N002. T Thu Loan. Công ty. Nh p v t tư ph c v s n xu t. 4. PX. 1. PX003. 01/06/11. N004. Phan Th Anh. Hà N i. Xu t bán hàng hóa. 5. PN. 2. PN002. 02/06/11. N005. T Th Minh. Hà Tây. Nh p nguyên li u. 6. PX. 1. PX004. 05/06/11. N004. Phan Th Anh. Hà N i. Xu t bán hàng hóa. - B ng chi ti4t ch3ng t< (CTCT) bao g m các trư ng: Id, Id_Ct, Ma_Vt, Ma_Kho, So_Luong, Don_Gia. Stt_Dong Stt_Ct. Ma_Vt. Ma_Kho. So_Luong. Don_Gia. 1. 1. TP001. KTP. 120.000. 120,00. 2. 1. TP002. KTP. 23.500. 45,00. 1. 2. TP001. KTP. 11.500. 35,00. 1. 3. VT001. KVT. 30.000. 120,00. 2. 3. VT002. KVT. 120.000. 15,00. 1. 4. TP001. KTP. 110.000. 75,00. 2. 4. TP004. KTP. 34.000. 44,00. Gi ng viên: Th.S Nguy n Trí Nhân. 30. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(32)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 1. 5. VT004. KVT. 75.000. 30,00. 2. 5. VT001. KVT. 31.000. 32,00. 3. 5. VT003. KVT. 120.000. 56,00. 1. 6. TP001. KVT. 13.000. 78,00. Yêu c u truy v n: - L p danh sách nhà cung c p, khách hàng bao g m các thông tin: Tên, Đ a ch(, S ñi n tho i, Email. Câu l nh SQL: SELECT Ten_Dt, Dia_Chi, So_Dt, Email FROM DmDt - L p danh sách v t tư hàng hóa bao g m toàn b thông tin có trong b ng DMVT SELECT * FROM DmVt - L p danh sách 5 v t tư xu t hi n ñ*u tiên trong b ng DMVT SELECT TOP 5 Id, Ma_Vt, Ten_Vt, Quy_Cach, Ghi_Chu FROM DmVt - L p b ng kê ch ng t% nh p xu t bao g m các thông tin Ngày ch ng t%, s ch ng t%, DiAn gi i, mã ñ i tư ng, ngư i nh p xu t (h c viên t$ vi t). 2.3.2. Tìm hiểu các trường tính toán Các trư ng tính toán không t n t i trong cơ s d li u ñã ñư c chu'n hóa, nó ch( ñư c xác ñ nh trong quá trình x lý, tính toán. Ví d trong b ng DMDT (như gi i thi u ph*n trư c) b n mu n l y danh sách nhà cung c p v i tên nhà cung c p kèm theo s ñi n tho i ñ ti n liên l c như minh h a dư i ñây: Mã s+. Tên nhà cung c:p. Đ6a ch=. N001. Cty TNHH ABC (04 3640 0119). Hà N i. N002. Cty C ph*n CB th$c ph'm Mi n B c (046 3423 3438). Hà N i. …. …. …. Trong ví d này c t “Tên nhà cung c p” ñư c t o ra t% trư ng Ten_Dt và trư ng So_Dt trong b ng DMDT. Câu l nh SQL tương ng: SELECT Ma_Dt, Ten_Dt + ‘ (’ + So_Dt + ‘)’, Dia_Chi FROM DmDt Ho#c trong b ng CTCT (như gi i thi u ph*n trư c) b n mu n l y danh sách ch ng t% bao g m các trư ng Ma_Vt, Ma_Kho, So_Luong, Don_Gia, Thanh_Tien. Gi ng viên: Th.S Nguy n Trí Nhân. 31. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(33)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Mã v t tư. Mã kho S+ lư)ng. Đơn giá. Thành ti-n. TP001. KTP. 120.000. 120,00. 14.400.000. TP002. KTP. 23.500. 45,00. 1.075.500. …. …. …. - Mô hình quan h gi a các b ng trong h th ng. Trong ví d này c t “Thành ti n” ñư c t o ra t% phép nhân gi a hai trư ng Don_Gia và So_Luong. Câu l nh SQL tương ng: SELECT Ma_Vt, Ma_Kho, So_Luong, Don_Gia, Don_Gia * So_Luong FROM DmDt Như v y trong hai ví d trên trư ng “Tên nhà cung c p” m i và trư ng “Thành ti n” là các trư ng tính toán. Lưu ý: - Tên bí danh: Câu l nh SQL hai ví d trên khi th$c thi ñ u cho k t qu ñúng, tuy nhiên hai trư ng tính toán chưa có tên (thư ng tr v tên m#c ñ nh theo h qu n tr cơ s d li u ví d như “(no column name)”), ñ gán tên cho hai trư ng này chúng ta s d ng cú pháp <Bieu_Thuc> AS Ten_Bi_Danh. Có th vi t l i hai câu truy v n trên như sau: SELECT Ma_Dt, Ten_Dt + ‘ (’ + So_Dt + ‘)’ AS Ten_Dt_Moi, Dia_Chi FROM DmDt Và SELECT Ma_Vt, Ma_Kho, So_Luong, Gi ng viên: Th.S Nguy n Trí Nhân. 32. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(34)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Don_Gia, Don_Gia * So_Luong AS Thanh_Tien FROM DmDt Trong hai câu l nh m i tên trư ng “Thanh_Tien” và “Ten_Dt_Moi” g i là tên bí danh. - Các toán t trong bi u th c trư ng tính toán: Có th s d ng các toán t +, -, *, / trong bi u th c c a trư ng tính toán. - Chúng ta cũng có th s d ng các hàm x lý chu<i, ngày tháng, s trong bi u th c c a trư ng tính toán. Danh sách m>t s+ hàm thư1ng dùng Hàm. Gi i thích. GetDate(). L y th i gian hi n th i t i Client. GetUtcDate(). L y th i gian hi n th i t i Server. Day(). Tr v giá tr ngày c a ñ i s. Month(). Tr v giá tr tháng c a ñ i s. Year(). Tr v giá tr năm c a ñ i s. ABS(). Tr v giá tr tuy t ñ i c a ñ i s. LEFT(). L y các ký t$ bên trái c a ñ i s. RIGHT(). L y các ký t$ bên ph i ñ i s. SUBSTRING(). L y ký t$ b t kỳ c a ñ i s. LEN(). Tr v ñ dài c a ñ i s. LTRIM(), RTRIM(), ALLTRIM(). C t kho ng tr ng bên trái, ph i và c trái và ph i c a ñ i s. UPPER(), LOWER(). Chuy n ñ i s thành ch vi t hoa, vi t thư ng. …. …. 2.3.3. Lọc dữ liệu với mệnh đề WHERE Trong th$c t b ng thư ng ch a m t lư ng l n d li u và ít khi chúng ta l y toàn b các b n ghi trong b ng d li u ñó. Chúng ta thư ng truy xu t m t t p con d li u c a b ng ng v i các ho t ñ ng c th . Vi c truy v n như v y ñòi h i ph i ch( ñ nh m t vùng ñi u ki n tìm ki m hay còn g i là ñi u ki n l c. Ví d l y danh sách các nhà cung c p t i Hà N i ho#c l y b ng kê các m#t hàng nh p xu t trong năm 2013,… Cú pháp: SELECT [DISTINCT] [TOP So_Ban_Ghi] <Danh_Sach_Truong> Gi ng viên: Th.S Nguy n Trí Nhân. 33. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(35)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. FROM <Ten_Bang> WHERE <Dieu_Kien_Loc> Gi i thích: - Dieu_Kien_Loc: Bi u th c ñi u ki n l c d li u M t s toán t cơ b n trong bi u th c ñi u ki n l c d li u: Toán t?. Gi i thích. =. B)ng. <>. Khác. !=. Khác. <. Nh hơn. <=. Nh hơn ho#c b)ng. !<. Không nh hơn. >. L n hơn. >=. L n hơn ho#c b)ng. !>. Không l n hơn. BETWEEN N)m gi a hai giá tr c th ISNULL. Là m t giá tr NULL. Ví d : (S d ng các b ng d li u ph*n trư c) - L p danh sách khách hàng, nhà cung c p t i Hà N i SELECT Ma_Dt, Ten_Dt, So_Dt, Fax, Email FROM DmDt WHERE Dia_Chi = 'Hà N i' K t qu Ma_Dt. Ten_Dt. So_Dt. N001. Cty TNHH ABC. 04 3640 0119. N002. Cty C ph*n CB th$c ph'm mi n b c. 046 3423 3438. Fax. Email. - L p b ng kê ch ng t% nh p xu t trong tháng 06 SELECT Ma_Ct, Ngay_Ct, So_Ct, Ma_Dt, Dien_Giai FROM Ct WHERE MONTH(Ngay_Ct) = 6 K t qu Gi ng viên: Th.S Nguy n Trí Nhân. 34. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(36)</span> B c Cao Đ ng Công ngh Thông tin. Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Ma_Ct. Ngay_Ct. So_Ct. Ma_Dt. Dien_Giai. PX. 01/06/2013 PX002 N001. Xu t hàng hóa bán ñ i lý. PN. 01/06/2013 PN001 N002. Nh p v t tư ph c v s n xu t. PX. 01/06/2013 PX003 N004. Xu t bán hàng hóa. PN. 02/06/2013 PN002 N005. Nh p nguyên li u. PX 05/06/2013 PX004 N004 Xu t bán hàng hóa Tìm hi'u m>t s+ toán t? cao c:p: - Toán t AND và OR: S d ng các toán t này ñ k t h p nhi u ñi u ki n l c. + L p danh sách ch ng t% xu t hàng cho công ty Cty TNHH m t thành viên c p nư c Yên Bái vào ngày 01/06/2013. SELECT Ngay_Ct, So_Ct, Dien_Giai, Ong_Ba FROM Ct WHERE Ma_Dt = ‘N004‘ AND Ngay_Ct = ‘01/06/2013‘ K t qu : Ngay_Ct So_Ct Dien_Giai Ong_Ba 01/06/2013 PX003 Xu t bán hàng hóa. Phan Th Anh. Lưu ý: Cty TNHH m t thành viên c p nư c Yên Bái có mã là “N004” + L p b ng kê xu t hàng chi ti t m#t hàng “Bánh tr ng Custas (TP001)” ho#c “Bánh kem bơ (TP003)”. SELECT Ma_Vt, So_Luong, Don_Gia, So_Luong * Don_Gia AS Thanh_Tien FROM CtCt WHERE Ma_Vt = ‘TP001‘ OR Ma_Vt = ‘TP003’ K t qu : Ma_Vt So_Luong Don_Gia Thanh_Tien TP001. 120. 120,000. 14,400,000. TP002. 45. 23,500. 1,057,500. TP001. 35. 11,500. 402,500. TP001. 75. 110,000. 8,250,000. TP001 78 13,000 1,014,000 + L p b ng kê ch ng t% xu t hàng cho Cty TNHH ABC (N001) ho#c các ch ng t% không ph i cho công ty này nhưng ñư c th$c hi n vào ngày 05/06/2013. SELECT Ngay_Ct, So_Ct, Dien_Giai, Ma_Dt Gi ng viên: Th.S Nguy n Trí Nhân. 35. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(37)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. FROM CT WHERE Ma_Dt = ‘N001’ OR (Ma_Dt <> ‘N001’ AND Ngay_Ct = ‘05/06/2013’) K t qu Ngay_Ct So_Ct Dien_Giai Ma_Dt 2013-05-31 PX001. Xu t hàng hóa bán ñ i lý. N001. 2013-06-01 PX002. Xu t hàng hóa bán ñ i lý. N001. 2013-06-05 PX004 Xu t bán hàng hóa N004 - Toán t IN: S d ng toán t này ñ ch( ñ nh m t dãy ñi u ki n v i b t kỳ giá tr nào trong dãy th a mãn. IN s d ng m t danh sách các giá tr ñư c tách b i d u ph'y dư i “,”, t t c ñư c ñ#t trong d u ngo#c ñơn. Ví d : L p b ng kê xu t hàng chi ti t m#t hàng “Bánh tr ng Custas (TP001)” ho#c “Bánh kem bơ (TP003)” s d ng t% khóa IN. SELECT Ma_Vt, So_Luong, Don_Gia, So_Luong * Don_Gia AS Thanh_Tien FROM CtCt WHERE Ma_Vt IN(‘TP001‘, ‘TP003’) - Toán t NOT: Ph ñ nh bi u th c ñ ng ngay sau nó Ví d : + L p b ng kê ch ng t% xu t hàng cho Cty TNHH ABC (N001) ho#c các ch ng t% không ph i cho công ty này nhưng ñư c th$c hi n vào ngày 05/06/2013 s d ng t% khóa NOT. SELECT Ngay_Ct, So_Ct, Dien_Giai, Ma_Dt FROM CT WHERE Ma_Dt = ‘N001’ OR (NOT(Ma_Dt = ‘N001’) AND Ngay_Ct = ‘05/06/2013’) - Toán t LIKE và các ký t ñ i di n: S d ng toán t này ñ tìm d li u g*n ñúng v i giá tr tìm ki m b)ng cách k t h p v i các ký t$ ñ i di n. Ch( có th áp d ng toán t LIKE và các ký t$ ñ i di n cho d li u ki u chu<i. + Ví d v ký t$ ñ i di n “%”: Ký t$ ñ i di n này ñ i di n cho ph*n còn l i c a chu<i. L p danh sách các khách hàng là lo i hình doanh nghi p “C ph*n” trên ñ a bàn Hà N i SELECT RTRIM(Ten_Dt) + ' (' + RTRIM(Ma_Dt) + ')' AS Ten_Dt, So_Dt, Email FROM DmDt Gi ng viên: Th.S Nguy n Trí Nhân. 36. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(38)</span> B c Cao Đ ng Công ngh Thông tin. Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. WHERE Ten_Dt LIKE N'%C K t qu : Ten_Dt. ph n%' AND Dia_Chi = N'Hà N i' So_Dt. Email. Cty C ph*n CB th$c ph'm mi n b c (N002) 046 3423 3438 + Ví d v ký t$ ñ i di n “_”: Ký t$ ñ i di n này tương t$ như ký t$ “%” tuy nhiên nó ch( ñ i di n cho m t ký t$ ñơn. Tìm nh ng thành ph'm v i mã có ph*n m r ng là các s ch y nh hơn 10. SELECT Ma_Vt, Ten_Vt, Dvt, Quy_Cach FROM DmVt WHERE RTRIM(Ma_Vt) LIKE N'TP00_' K t qu : Ma_Vt Ten_Vt Dvt Quy_Cach TP001. Bánh tr ng Custas. H p. H p 20 cái. TP002. Bánh kem x p. Gói. Gói 200 gram. TP003. Bánh kem bơ. Gói. Gói 150 gram. TP004 Bánh Socola Vinasun H p H p 6 cái + Ví d v ký t$ ñ i di n “[ ]”: S d ng ñ ch( ñ nh m t t p h p các ký t$, m t ký t$ trong t p h p ph i th a mãn m t ký t$ t i m t v trí xác ñ nh trư c (v trí c a ký t$ ñ i di n). L p danh sách các công ty “TNHH” ho#c “C ph*n” ñóng trên ñ a bàn “Hà N i” SELECT RTRIM(Ten_Dt) + ' (' + RTRIM(Ma_Dt) + ')' AS Ten_Dt, So_Dt, Email FROM DmDt WHERE Ten_Dt LIKE N'%[C ph n, TNHH]%' AND Dia_Chi = N'Hà N i' K t qu : Ten_Dt So_Dt Email Cty TNHH ABC (N001). 04 3640 0119. Cty C ph*n CB th$c ph'm mi n b c (N002) 046 3423 3438 Lưu ý: Không th ph nh n kh năng linh ho t khi tìm ki m v i các ký t$ ñ i di n, tuy nhiên vi c tìm ki m v i chúng m t nhi u th i gian hơn c so v i nh ng cách tìm ki m ñã gi i thi u.. sau ñây là m t s th thu t c*n ghi nh khi s d ng tìm ki m b)ng các ký t$ ñ i di n: Gi ng viên: Th.S Nguy n Trí Nhân. 37. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(39)</span> B c Cao Đ ng Công ngh Thông tin. Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. - Không l m d ng các ký t$ ñ i di n n u như có th tìm ki m b)ng các toán t khác. - N u th$c s$ c*n thi t m i s d ng ký t$ ñ i di n ph*n ñ*u c a các m'u tìm ki m vì ñây là cách tìm ki m ch m nh t. - Đ#c bi t chú ý ñ n v trí c a ký t$ ñ i di n vì n u ñ#t sai v trí b n s" không có ñư c k t qu như mong mu n. 2.3.4. Sắp xếp dữ liệu với ORDER BY Trong nh ng ví d các ph*n ñã h c k t qu truy v n chưa ñư c s p x p, chúng thư ng ñư c hi n th theo th t$ trong b ng, ñây có th là tr t t$ d li u ñư c thêm vào b ng ban ñ*u. Tuy nhiên tr t t$ này có th thay ñ i n u như b ng thư ng xuyên ñư c c p nh t ho#c xóa, chúng ta có th s d ng câu truy v n v i ORDER BY ñ s p x p l i d li u. Cú pháp: SELECT [DISTINCT] [TOP So_Ban_Ghi] <Danh_Sach_Truong> FROM <Ten_Bang> WHERE <Dieu_Kien_Loc> ORDER BY <Chi_Tieu_Sap_Xep> [ASC|DESC] Gi i thích: - Chi_Tieu_Sap_Xep: Là danh sách tên c t ho#c th t$ c t c*n s p x p - ASC: Ch( ñ nh s p x p tăng d*n - DESC: Ch( ñ nh s p x p gi m d*n Ví d : - L p danh sách thành ph'm mà công ty s n xu t, k t qu ñư c s p x p theo th t$ trong b ng ch cái c a tên thành ph'm. SELECT Ma_Vt, Ten_Vt, Dvt, Quy_Cach FROM DmVt WHERE Ma_Vt LIKE ‘TP%’ ORDER BY Ten_Vt K t qu : Ma_Vt. Ten_Vt. Dvt. Quy_Cach. TP003. Bánh kem bơ. Gói. Gói 150 gram. TP002. Bánh kem x p. Gói. Gói 200 gram. TP004. Bánh Socola Vinasun. H p. H p 6 cái. TP001 Bánh tr ng Custas H p Xem l i k t qu khi không s d ng ORDER BY Gi ng viên: Th.S Nguy n Trí Nhân. 38. H p 20 cái. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(40)</span> B c Cao Đ ng Công ngh Thông tin. Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Ma_Vt. Ten_Vt. Dvt. Quy_Cach. TP001. Bánh tr ng Custas. H p. H p 20 cái. TP002. Bánh kem x p. Gói. Gói 200 gram. TP003. Bánh kem bơ. Gói. Gói 150 gram. TP004 Bánh Socola Vinasun H p H p 6 cái - L p b ng kê ch ng t% nh p xu t trong tháng 06 năm 2013, s p x p theo Ma_Dt và Ngay_Ct tăng d*n. SELECT Ngay_Ct, So_Ct, Ma_Dt, Dien_Giai FROM Ct WHERE MONTH(Ngay_Ct) = 6 AND YEAR(Ngay_Ct) = 2013 ORDER BY Ma_Dt, Ngay_Ct K t qu : Ngay_Ct So_Ct Ma_Dt Dien_Giai 01/06/2013 PX002. N001. Xu t hàng hóa bán ñ i lý. 01/06/2013 PN001. N002. Nh p v t tư ph c v s n xu t. 01/06/2013 PX003. N004. Xu t bán hàng hóa. 05/06/2013 PX004. N004. Xu t bán hàng hóa. 02/06/2013 PN002 N005 Nh p nguyên li u - L p b ng kê ch ng t% xu t bán thành ph'm, s p x p theo Ma_Vt và So_Luong gi m d*n. SELECT Ma_Vt, So_Luong, Don_Gia, So_Luong * Don_Gia AS Thanh_Tien FROM CtCt WHERE Ma_Vt LIKE 'TP%' ORDER BY Ma_Vt, So_Luong DESC K t qu : Ma_Vt So_Luong Don_Gia Thanh_Tien TP001. 120. 120.000. 14.400.000. TP001. 78. 13.000. 1.014.000. TP001. 75. 110.000. 8.250.000. TP001. 35. 11.500. 402.500. TP002. 45. 23.500. 1.057.500. Gi ng viên: Th.S Nguy n Trí Nhân. 39. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(41)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. TP004. 44. B c Cao Đ ng Công ngh Thông tin. 34.000. 1.496.000. 2.3.5. Nhóm dữ liệu với mệnh đề GROUP BY V i m nh ñ WHERE ph*n trư c ñã h c chúng ta có th th ng kê xem có bao nhiêu l*n v t tư có mã là ‘VT001’ ñư c nh p xu t v i câu l nh như sau: SELECT COUNT(*) AS So_Lan_Nx FROM CTCT WHERE Ma_Vt = ‘VT001’ Tuy nhiên ñ th ng kê xem m<i v t tư ñư c nh p xu t bao nhiêu l*n chúng ta ph i s d ng m nh ñ GROUP BY. Cú pháp: SELECT <Danh_Sach_Truong> FROM <Ten_Bang> WHERE <Dieu_Kien_Loc> GROUP BY <Danh_Sach_Nhom> HAVING <Bieu_Thuc_Dieu_Kien> ORDER BY <Chi_Tieu_Sap_Xep> Gi i thích: - <Danh_Sach_Nhom>: Danh sách c t, th t$ c t c*n nhóm d li u - <Bieu_Thuc_Dieu_Kien>: Bi u th c ñi u ki n l c nhóm d li u Ví d : - Th ng kê xem m<i nhà cung c p, khách hàng ñã phát sinh bao nhiêu ch ng t% nh p xu t v i công ty trong tháng 6 năm 2013. SELECT Ma_Dt, COUNT(Ma_Dt) AS So_Ct_Nx FROM Ct WHERE MONTH(Ngay_Ct) = 6 AND YEAR(Ngay_Ct) = 2013 GROUP BY Ma_Dt K t qu : Ma_Dt So_Ct_Nx N001. 1. N002. 1. N004. 2. N005. 1. - Th ng kê t ng s lư ng nh p xu t kho c a t%ng m#t hàng, k t qu s p x p tăng d*n theo s lư ng. Gi ng viên: Th.S Nguy n Trí Nhân. 40. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(42)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. SELECT Ma_Vt, SUM(So_Luong) AS So_Luong FROM CtCt GROUP BY Ma_Vt ORDER BY So_Luong K t qu : Ma_Vt So_Luong VT002. 15. VT004. 30. TP004. 44. TP002. 45. VT003. 56. VT001. 152. TP001 308 - Th ng kê lư ng nh p xu t hàng hóa theo t%ng kho và t%ng m#t hàng, k t qu s p x p theo mã kho và gi m d*n theo s lư ng. SELECT Ma_Kho, Ma_Vt, SUM(So_Luong) AS So_Luong FROM CtCt GROUP BY Ma_Kho, Ma_Vt ORDER BY Ma_Kho, So_Luong DESC K t qu : Ma_Kho Ma_Vt So_Luong KTP. TP001. 230. KTP. TP002. 45. KTP. TP004. 44. KVT. VT001. 152. KVT. TP001. 78. KVT. VT003. 56. KVT. VT004. 30. KVT VT002 15 - Th ng kê doanh s bán hàng theo t%ng m#t hàng, k t qu s p x p theo Ma_Vt và gi m d*n theo doanh thu. SELECT Ma_Vt, SUM(So_Luong * Don_Gia) AS Doanh_Thu Gi ng viên: Th.S Nguy n Trí Nhân. 41. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(43)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. FROM CtCt WHERE Ma_Vt LIKE 'TP%' GROUP BY Ma_Vt ORDER BY Doanh_Thu DESC K t qu : Ma_Vt. B c Cao Đ ng Công ngh Thông tin. Doanh_Thu. TP001. 24.066.500. TP004. 1.496.000. TP002 1.057.500 - Th ng kê nh ng m#t hàng có doanh s bán hàng l n hơn 2 tri u, k t qu s p x p danh sách theo Ma_Vt. SELECT Ma_Vt, SUM(So_Luong * Don_Gia) AS Doanh_Thu FROM CtCt WHERE Ma_Vt LIKE 'TP%' GROUP BY Ma_Vt HAVING SUM(So_Luong * Don_Gia) > 2000000 ORDER BY Ma_Vt K t qu : Ma_Vt Doanh_Thu TP001 - L p danh sách nh ng nhà cung c p, nh p xu t tr lên v i công ty. K t qu s p x SELECT Ma_Dt, COUNT(Ma_Dt) AS FROM Ct GROUP BY Ma_Dt HAVING COUNT(Ma_Dt) >= 2 ORDER BY So_Ct_Nx DESC K t qu Ma_Dt N001. 24.066.500 khách hàng ñã t%ng phát sinh t% 2 ch ng t% p gi m d*n theo s ch ng t% phát sinh. So_Ct_Nx. So_Ct_Nx 2. N004 2 - Th ng kê m#t hàng có mã ‘TP..’ bán ch y nh t. SELECT TOP 1 Ma_Vt, SUM(So_Luong * Don_Gia) AS Doanh_Thu FROM CtCt Gi ng viên: Th.S Nguy n Trí Nhân. 42. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(44)</span> B c Cao Đ ng Công ngh Thông tin. Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. WHERE Ma_Vt LIKE 'TP%' GROUP BY Ma_Vt ORDER BY Doanh_Thu DESC K t qu Ma_Vt. Doanh_Thu. TP001 24.066.500 - Th ng kê 2 m#t hàng có mã ‘TP..’ bán ch m nh t SELECT TOP 2 Ma_Vt, SUM(So_Luong * Don_Gia) AS Doanh_Thu FROM CtCt WHERE Ma_Vt LIKE 'TP%' GROUP BY Ma_Vt ORDER BY Doanh_Thu ASC K t qu : Ma_Vt. Doanh_Thu. TP002. 1.057.500. TP004. 1.496.000. Lưu ý: - Các trư ng trong danh sách nhóm sau m nh ñ GROUP BY có th không xu t hi n trong danh sách trư ng sau SELECT. - Các trư ng không xu t hi n trong danh sách nhóm sau m nh ñ GROUP BY, nhưng xu t hi n trong danh sách trư ng sau SELECT thì ph i ñư c ch( ñ nh b i m t hàm th ng kê (ph i là m t trư ng tính toán). M t s hàm th ng k thư ng s d ng. Hàm Gi i thích AVG(). Tr v giá tr trung bình c a c t. COUNT(). Đ m s dòng trong c t. MAX(). Tr v giá tr l n nh t c a c t. MIN(). Tr v giá tr nh nh t c a c t. SUM() Tính t ng giá tr c a c t - S d ng HAVING trong m nh ñ GROUP BY vì WHERE ch( l c dòng d li u c th không ph i là nhóm d li u. - Bi u th c sau HAVING h< tr t t c các toán t như bi u th c sau WHERE - Khác bi t gi a HAVING và WHERE là WHERE l c d li u khi chưa nhóm còn HAVING l c d li u sau khi ñã ñư c nhóm. Gi ng viên: Th.S Nguy n Trí Nhân. 43. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(45)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. - Chúng ta cũng có th s d ng ORDER BY cùng GROUP BY ñ s p x p nhóm d li u 2.3.6. Query con T t c các câu l nh truy v n (Query) mà chúng ta ñã nghiên c u qua các ph*n trư c ñ u là các câu truy v n ñơn gi n (các câu truy v n t% các b ng cơ s d li u riêng l=). TSQL còn cho phép b n t o ra các query con (SubQuery: Các query ñư c nhúng vào query khác), ñ hi u sâu v v n ñ này chúng ta nghiên c u m t ví d sau ñây: T% b ng danh m c v t tư (DMVT) và b ng chi ti t ch ng t% nh p xu t (CTCT) ñã t o l p các ph*n trư c chúng ta c*n l p danh sách nh ng v t tư ñã t%ng ñư c nh p xu t. Đ*u tiên hãy th$c hi n ví d này b)ng các Query ñơn gi n chúng ta làm như sau: Bư c 1: L y mã nh ng v t tư ñã t%ng nh p xu t trong b ng CTCT SELECT DISTINCT Ma_Vt FROM CTCT K t qu : Ma_Vt TP001 TP002 VT001 VT002 Bư c 2: L y danh sách v t tư có mã tương ng trong danh sách v%a l c SELECT * FROM DMVT WHERE Ma_Vt IN('TP001', 'TP002', 'VT001', 'VT002') K t qu : ID Ma_Vt Ten_Vt Dvt Quy_Cach Ghi_Chu 1. TP001. Bánh tr ng Custas. H p. H p 20 cái. NULL. 2. TP002. Bánh kem x p. Gói. Gói 200 gram. NULL. 3. VT001. B t mì lo i 1. Kg. NULL. NULL. 4. VT002 Hương li u Kg NULL NULL Bây gi có th vi t l i v i Query con b)ng cách k t h p hai Query v%a th$c hi n: SELECT * FROM DMVT WHERE Ma_Vt IN(SELECT Ma_Vt FROM CTCT) K t qu cu i cùng cho tương t$ như th$c hi n bư c 2 V i ví d trên chúng ta ñã tìm hi u cách l c d li u theo các Query con, ví d sau ñây s" mô t cách s d ng Query con làm trư ng tính toán. Gi ng viên: Th.S Nguy n Trí Nhân. 44. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(46)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. T% b ng danh m c khách hàng, nhà cung c p (DMDT) và b ng ch ng t% nh p xu t (CT) hãy xem m<i khách hàng, nhà cung c p ñã nh p xu t bao nhiêu ch ng t% v i công ty, query ñơn gi n chúng ta có th vi t như sau: SELECT Ma_Dt, COUNT(*) AS So_Ct_Nx FROM CT GROUP BY Ma_Dt K t qu Ma_Dt So_Ct_Nx N001. 2. N002 1 Tuy nhiên v i câu l nh này b n không có ñư c các thông tin chi ti t v khách hàng, nhà cung c p ñó. Bây gi hãy th th$c hi n v i m t query ph c t p hơn. SELECT Ma_Dt, Ten_Dt, Dia_Chi, ( SELECT COUNT(*) FROM CT WHERE DmDt.Ma_Dt = Ct.Ma_Dt ) AS So_Ct_Nx FROM DmDt K t qu Ma_Dt Ten_Dt Dia_Chi So_Ct_Nx N001. Công ty TNHH ABC. Hà N i. 2. N002 Công ty C ph*n CB th$c ph'm mi n b c Hà N i 1 M t s ví d khác - Th ng kê t ng s lư ng nh p xu t kho c a t%ng m#t hàng, k t qu hi n th bao g m các thông tin: Ma_Vt, Ten_Vt, Dvt, So_Luong và s p x p tăng d*n theo s lư ng. SELECT Ma_Vt, Ten_Vt, Dvt, ( SELECT ISNULL(SUM(So_Luong), 0) AS So_Luong FROM CtCt WHERE CtCt.Ma_Vt = DmVt.Ma_Vt ) AS So_Luong FROM DmVt ORDER BY So_Luong K t qu : Gi ng viên: Th.S Nguy n Trí Nhân. 45. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(47)</span> B c Cao Đ ng Công ngh Thông tin. Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Ma_Vt. Ten_Vt. Dvt. So_Luong. TP003. Bánh kem bơ. Gói. 0. VT005. S a ông th. Thùng. 0. VT002. Hương li u. Kg. 15. VT004. Socola nguyên li u. Kg. 30. TP004. Bánh Socola Vinasun. H p. 44. TP002. Bánh kem x p. Gói. 45. VT003. B tn. Kg. 56. VT001. B t mì lo i 1. Kg. 152. TP001. Bánh tr ng Custas. H p. 308. - Th ng kê doanh s bán hàng theo t%ng m#t hàng, k t qu hi n th bao g m các trư ng Ma_Vt, Ten_Vt, Dvt, Doanh_Thu ñư c s p x p theo Ma_Vt và gi m d*n theo doanh thu. SELECT Ma_Vt, Ten_Vt, Dvt, ( SELECT ISNULL(SUM(So_Luong * Don_Gia), 0) AS Doanh_Thu FROM CtCt WHERE CtCt.Ma_Vt = DmVt.Ma_Vt ) AS Doanh_Thu FROM DmVt WHERE Ma_Vt LIKE ‘TP%’ ORDER BY Doanh_Thu DESC K t qu : Ma_Vt Ten_Vt Dvt Doanh_Thu TP001. Bánh tr ng Custas. H p. 24.066.500. TP004. Bánh Socola Vinasun. H p. 1.496.000. TP002. Bánh kem x p. Gói. 1.057.500. TP003. Bánh kem bơ. Gói. 0. 2.3.7. Các phép nối M t trong nh ng tính năng m nh m" nh t c a SQL là kh năng k t các b ng nhanh chóng trong các Query. Phép n i ñư c th$c hi n ñơn gi n b)ng cách s d ng câu l nh. Gi ng viên: Th.S Nguy n Trí Nhân. 46. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(48)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. SELECT c a SQL, vi c tìm hi u k? và th$c hành t t các phép n i là ph*n vô cùng quan tr ng trong quá trình h c SQL. Đ ñ m b o toàn v!n, tránh dư th%a cơ s d li u luôn ñư c chu'n hóa vì v y trong quá trình truy v n d li u thư ng xuyên ph i l y d li u t% nhi u b ng khác nhau, v i vi c s d ng các phép n i s" giúp ngư i l p trình dA dàng trích rút ñ*y ñ d li u mà mình c*n khai thác. 2.3.7.1. Tạo phép nối với mệnh đề WHERE V i m nh ñ WHERE khi t o k t n i ph i ch( ñ nh t t c các b ng ch a d li u c*n truy v n và cách chúng t o ra quan h v i nhau. Chúng ta tìm hi u ví d sau: L p b ng kê ch ng t% g m các thông tin: Ngay_Ct, So_Ct, Dien_Giai, Ten_Dt, Ong_Ba, Dia_Chi. Phân tích ví d trên chúng ta th y thông tin Ten_Dt ñư c l y t% b ng danh m c khách hàng, nhà cung c p (DMDT), các thông tin còn l i l y t% b ng ch ng t% (CT), hai b ng này liên k t v i nhau b)ng trư ng Ma_Dt. Câu l nh truy v n như sau: SELECT CT.Ngay_Ct, CT.So_Ct, CT.Dien_Giai, DMDT.Ten_Dt, CT.Ong_Ba, CT.Dia_Chi FROM DMDT, CT WHERE DMDT.Ma_Dt = CT.Ma_Dt K t qu : Ngay_Ct So_Ct Dien_Giai Ten_Dt Ong_Ba Dia_Chi 2013-0106. PX001 Xu t hàng hóa bán ñ i lý. Công ty TNHH ABC. Lê Văn Khương. Hà N i. 2013-0107. PX002. Công ty TNHH ABC. Đào Th H nh. Hà N i. Xu t hàng hóa bán ñ i lý. 2013-0106. PN001 Nh p v t tư ph c Công ty C ph*n T Thu Loan Công ty v s n xu t CB th$c ph'm mi n b c Như v y k t qu truy v n là ph*n d li u có m i quan h gi a hai b ng cơ s d. li u.. Gi ng viên: Th.S Nguy n Trí Nhân. 47. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(49)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. M t s ví d - L p b ng kê ch ng t% nh p hàng chi ti t theo v t tư g m có các thông tin Ma_Ct, Ngay_Ct, So_Ct, Dien_Giai, Ma_Dt, Ma_Vt, So_Luong, Don_Gia, Thanh_Tien. SELECT Ct.Ma_Ct, Ct.Ngay_Ct,Ct.So_Ct, Ct.Dien_Giai, Ct.Ma_Dt, CtCt.Ma_Vt, CtCt.So_Luong, CtCt.Don_Gia, ISNULL(CtCt.Don_Gia * CtCt.So_Luong, 0) AS Thanh_Tien FROM Ct, CtCt WHERE Ct.Stt_Ct = CtCt.Stt_Ct AND Ct.Ma_Ct = ‘PN’ ORDER BY Ct.Ngay_Ct K t qu : Ma_Ct. Ngay_Ct. So_Ct. Dien_Giai. Ma_Dt. Ma_Vt. So_Luong. Don_Gia. Thanh_Tien. PN. 01/06/11. PN001. Nh p v t tư ph c v s n xu t. N002. VT001. 120. 30.000. 3.600.000. PN. 01/06/11. PN001. Nh p v t tư ph c v s n xu t. N002. VT002. 15. 120.000. 1.800.000. PN. 02/06/11. PN002. Nh p nguyên li u. N005. VT004. 30. 75.000. 2.250.000. PN. 02/06/11. PN002. Nh p nguyên li u. N005. VT001. 32. 31.000. 992.000. PN. 02/06/11. PN002. Nh p nguyên li u. N005. VT003. 56. 120.000. 6.720.000. - L p b ng kê ch ng t% theo t ng ti n (chi ti t theo ch ng t%) bao g m các thông tin Ma_Ct, Ngay_Ct, So_Ct, Dien_Giai, Ten_Dt, Tong_Tien. SELECT MAX(Ct.Ma_Ct) AS Ma_Ct, MAX(Ct.Ngay_Ct) AS Ngay_Ct, MAX(Ct.Dien_Giai) AS Dien_Giai, MAX(DmDt.Ten_Dt) AS Ten_Dt, SUM(CtCt.Don_Gia * CtCt.So_Luong) AS Tong_Tien FROM Ct, CtCt, DmDt WHERE Ct.Stt_Ct = CtCt.Stt_Ct AND Ct.Ma_Dt = DmDt.Ma_Dt Gi ng viên: Th.S Nguy n Trí Nhân. 48. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(50)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. GROUP BY CtCt.Stt_Ct K t qu : Ma_Ct Ngay_Ct Dien_Giai. B c Cao Đ ng Công ngh Thông tin. Ten_Dt. Tong_Tien. PX. 31/05/11. Xu t hàng hóa bán ñ i lý. Cty TNHH ABC. 15.457.500. PX. 01/06/11. Xu t hàng hóa bán ñ i lý. Cty TNHH ABC. 402.500. PN. 01/06/11. Nh p v t tư ph c v s n xu t. Cty C ph*n CB th$c ph'm mi n b c. 5.400.000. PX. 01/06/11. Xu t bán hàng hóa. Cty TNHH m t thành viên c p nư c Yên Bái. 9.746.000. PN. 02/06/11. Nh p nguyên li u. Cty C ph*n L c H ng. 9.962.000. PX. 05/06/11. Xu t bán hàng hóa. Cty TNHH m t thành viên c p nư c Yên Bái. 1.014.000. 2.3.7.2. INNER JOIN (nội kết) Tương t$ như phép n i s d ng m nh ñ WHERE, chúng ta có th s d ng INNER JOIN ñ ch( ra phép k t n i rõ hơn. Vi t l i ví d ph*n trên v i INNER JOIN như sau: SELECT CT.Ngay_Ct, CT.So_Ct, CT.Dien_Giai, DMDT.Ten_Dt, CT.Ong_Ba, CT.Dia_Chi FROM DMDT INNER JOIN CT ON DMDT.Ma_Dt = CT.Ma_Dt Câu l nh trên tương ñ i tư ng minh t% khóa INNER JOIN n)m gi a hai b ng k t n i sau FROM và bi u th c k t n i n)m sau t% khóa ON. 2.3.7.3. Sử dụng bí danh của bảng Tương t$ như các trư ng tính toán, khi s d ng phép n i chúng ta cũng có th t o bí danh cho b ng, v i vi c s d ng bí danh câu l nh truy v n s" ng n ng n và tư ng minh hơn, ñ tìm hi u k? hơn v ch ñ này hãy vi t l i các ví d ph*n trư c v i câu l nh SQL có s d ng bí danh. Ví d : Vi t l i các ví d sau s d ng bí danh b ng. - L p b ng kê ch ng t% nh p hàng chi ti t theo v t tư g m có các thông tin Ma_Ct, Ngay_Ct, So_Ct, Dien_Giai, Ma_Dt, Ma_Vt, So_Luong, Don_Gia, Thanh_Tien SELECT Ct.Ma_Ct, Ct.Ngay_Ct,Ct.So_Ct, Ct.Dien_Giai, Ct.Ma_Dt, Ct0.Ma_Vt, Ct0.So_Luong, Ct0.Don_Gia, ISNULL(Ct0.Don_Gia * Ct0.So_Luong, 0) AS Thanh_Tien FROM Ct, CtCt AS Ct0 Gi ng viên: Th.S Nguy n Trí Nhân. 49. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(51)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. WHERE Ct.Stt_Ct = Ct0.Stt_Ct AND Ct.Ma_Ct = ‘PN’ ORDER BY Ct.Ngay_Ct - L p b ng kê ch ng t% theo t ng ti n (chi ti t theo ch ng t%) bao g m các thông tin Ma_Ct, Ngay_Ct, So_Ct, Dien_Giai, Ten_Dt, Tong_Tien. SELECT MAX(Ct.Ma_Ct) AS Ma_Ct, MAX(Ct.Ngay_Ct) AS Ngay_Ct, MAX(Ct.Dien_Giai) AS Dien_Giai, MAX(Dt.Ten_Dt) AS Ten_Dt, SUM(Ct0.Don_Gia * Ct0.So_Luong) AS Tong_Tien FROM Ct, CtCt AS Ct0, DmDt AS Dt WHERE Ct.Stt_Ct = Ct0.Stt_Ct AND Ct.Ma_Dt = Dt.Ma_Dt GROUP BY Ct0.Stt_Ct 2.3.7.4. OUTER JOIN (Ngoại kết) V i hai cách k t n i như ñã trình bày trên k t qu d li u truy v n tr v là nh ng d li u có quan h v i nhau, tuy nhiên trong th$c t chúng ta thư ng xuyên c*n l y c nh ng d li u m t b ng nào ñó mà chúng chưa có quan h v i các b ng còn l i, khi ñó có th s d ng OUTER JOIN. Khi s d ng OUTER JOIN b t bu c ph i k t h p v i m t trong hai t% khóa là RIGHT và LEFT. Hãy cùng tìm hi u ví d sau ñây: Hãy l p danh sách khách hàng, nhà cung c p bao g m thông tin mã, tên, ñ a ch( và s lư ng ch ng t% nh p xu t (danh sách bao g m c nh ng khách hàng, nhà cung c p chưa có giao d ch). SELECT dt.Ma_Dt, max(dt.Ten_Dt) AS Ten_Dt, MAX(dt.Dia_Chi) AS Dia_Chi, COUNT(ct.So_Ct) AS So_Ct_Nx FROM DmDt as dt LEFT OUTER JOIN CT ON dt.Ma_Dt = Ct.Ma_Dt GROUP BY dt.Ma_Dt K t qu Ma_Dt Ten_Dt Dia_Chi So_Ct_Nx N001. Công ty TNHH ABC. Hà N i. 2. N002. Công ty C ph*n CB th$c ph'm mi n b c. Hà N i. 1. N003. Công ty liên doanh Vi t Pháp. H i Phòng. 0. N004. Công ty TNHH m t thành viên c p nư c Yên NULL 0 Bái Như v y toàn b d li u có quan h gi hai b ng và d li u c a b ng bên trái c a OUTER JOIN ñư c hi n th trong k t qu truy v n. Gi ng viên: Th.S Nguy n Trí Nhân. 50. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(52)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Trư ng h p ngư c l i chúng ta có th dùng t% khóa RIGHT k t qu truy v n s" l y toàn b d li u quan h gi a hai b ng và d li u còn l i c a b ng bên ph i c a OUTER JOIN.. M t s ví d - L p báo cáo t ng h p nh p kho bao g m các thông tin Ma_Vt, Ten_Vt, Dvt, So_Luong, Don_Gia, Thanh_Tien. SELECT Ct0.Ma_Vt, Vt.Ten_Vt, Vt.Dvt, Ct0.So_Luong, Ct0.Don_Gia, Ct0.So_Luong * Ct0.Don_Gia AS Thanh_Tien FROM CtCt AS Ct0 LEFT OUTER JOIN DmVt AS Vt ON Ct0.Ma_Vt = Vt.Ma_Vt LEFT OUTER JOIN Ct ON Ct0.Stt_Ct = Ct.Stt_Ct WHERE Ct.Ma_Ct = ‘PN’ K t qu : Ma_Vt Ten_Vt Dvt So_Luong Don_Gia Thanh_Tien VT001. B t mì lo i 1. Kg. 120. 30.000. 3.600.000. VT002. Hương li u. Kg. 15. 120.000. 1.800.000. VT004. Socola nguyên li u. Kg. 30. 75.000. 2.250.000. VT001. B t mì lo i 1. Kg. 32. 31.000. 992.000. Gi ng viên: Th.S Nguy n Trí Nhân. 51. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(53)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. VT003 B t n Kg 56 120.000 6.720.000 - L p b ng kê ch ng t% nh p hàng chi ti t theo v t tư g m có các thông tin Ma_Ct, Ngay_Ct, So_Ct, Dien_Giai, Ten_Dt, Ten_Vt, Dvt, So_Luong. SELECT Ct.Ma_Ct, Ct.Ngay_Ct, Ct.Dien_Giai, Dt.Ten_Dt, Ct0.Ma_Vt, Vt.Ten_Vt, Vt.Dvt, Ct0.So_Luong FROM CtCt AS Ct0 LEFT OUTER JOIN Ct ON Ct0.Stt_Ct = Ct.Stt_Ct LEFT OUTER JOIN DmDt AS Dt ON Ct.Ma_Dt = Dt.Ma_Dt LEFT OUTER JOIN DmVt AS Vt ON Ct0.Ma_Vt = Vt.Ma_Vt WHERE Ct.Ma_Ct = ‘PN’ K t qu : Ma_C Ngay_Ct Dien_Giai Ten_Dt Ma_Vt Ten_Vt Dvt So_Luon t g PN. 01/06/11. Nh p v t tư ph c Cty C ph*n CB v s n xu t th$c ph'm mi n b c. VT001. B t mì lo i 1. Kg. 120. PN. 01/06/11. Nh p v t tư ph c Cty C ph*n CB v s n xu t th$c ph'm mi n b c. VT002. Hương li u. Kg. 15. PN. 02/06/11. Nh p nguyên li u. Cty C ph*n L c H ng. VT004. Socola nguyên li u. Kg. 30. PN. 02/06/11. Nh p nguyên li u. Cty C ph*n L c H ng. VT001. B t mì lo i 1. Kg. 32. PN. 02/06/11. Nh p nguyên li u. Cty C ph*n L c H ng. VT003. B tn. Kg. 56. 2.3.8. Kết hợp các query H*u h t các query SQL ch a m t câu l nh SELECT ñơn v n tr v d li u t% m t ho#c nhi u b ng. Tuy nhiên, SQL cũng cho phép b n th$c hi n nhi u câu query và k t qu tr v dư i d ng m t t p h p d li u t% các query ñơn. Đ k t h p các Query ñơn v i nhau chúng ta dùng t% khóa UNION ñ#t gi a m<i câu l nh SELECT, cũng ví d ph*n trư c chúng ta thêm m t dòng t ng c ng ñ bi t xem t ng s ch ng t% nh p xu t c a t t c khách hàng nhà cung c p. Câu l nh SQL như sau: SELECT dt.Ma_Dt, max(dt.Ten_Dt) AS Ten_Dt, MAX(dt.Dia_Chi) AS Dia_Chi, Gi ng viên: Th.S Nguy n Trí Nhân. 52. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(54)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. COUNT(ct.So_Ct) AS So_Ct_Nx FROM DmDt as dt LEFT OUTER JOIN CT ON dt.Ma_Dt = Ct.Ma_Dt GROUP BY dt.Ma_Dt UNION SELECT '' AS Ma_Dt, N'T ng c ng' AS Ten_Dt, '' AS Dia_Chi, COUNT(*) AS So_Ct_Nx FROM CT K t qu : Ma_Dt. Ten_Dt. Dia_Chi. T ng c ng. So_Ct_Nx 3. N001. Công ty TNHH ABC. Hà N i. 2. N002. Công ty C ph*n CB th$c ph'm mi n b c. Hà N i. 1. N003. Công ty liên doanh Vi t Pháp. H i Phòng. 0. N004. Công ty TNHH m t thành viên c p nư c Yên Bái. NULL. 0. Lưu ý: - M t UNION ph i có t% 2 câu l nh SELECT tr lên, m<i câu l nh ñư c tách b i t% khóa UNION. - Danh sách c t c a các câu SELECT trong cùng m t UNION ph i tương ng và cùng ki u. - S d ng UNION ALL khi mu n l y t t c các l*n xu t hi n c a các giá tr th a mãn. 2.4. CẬ CẬP NHẬ NHẬT DỮ DỮ LIỆ LIỆU (DATA MANIPULATION LANGUAGE) 2.4.1. Chèn dữ liệu 2.4.1.1. Chèn dữ liệu trực tiếp Cú pháp: INSERT INTO <Ten_Bang> [(Danh_Sach_Truong)] VALUE (<Danh_Sach_Gia_Tri>) Gi i thích: - <Ten_Bang>: Tên b ng c*n chèn d li u - [(Danh_Sach_Truong]): Danh sách trư ng c*n chèn d li u ñư c li t kê trong d u ngo#c ñơn, danh sách trư ng có th b tr ng n u chèn d li u vào t t c các dòng. - <Danh_Sach_Gia_Tri>: Danh sách giá tr tương ng v i danh sách trư ng c*n chèn d li u. Ví d : Gi ng viên: Th.S Nguy n Trí Nhân. 53. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(55)</span> B c Cao Đ ng Công ngh Thông tin. Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Vi t câu l nh chèn d li u trong danh sách sau vào b ng DmVt Ma_Vt Ten_Vt Dvt Quy_Cach TP001. Bánh tr ng Custas. H p. H p 20 cái. TP002. Bánh kem x p. Gói. Gói 200 gram. TP003. Bánh kem bơ. Gói. Gói 150 gram. TP004. Bánh Socola Vinasun. H p. H p 6 cái. INSERT INTO DmVt ( Ma_Vt, Ten_Vt, Dvt, Quy_Cach ) VALUES ( N‘TP001’, N‘Bánh tr ng Custas’, N’H p’, N’H p 20 cái’ ) 2.4.1.2. Chèn dữ liệu truy vấn Cú pháp: INSERT INTO <Ten_Bang> [(Danh_Sach_Truong)] SELECT <Danh_Sach_Truong_Truy_Van> FROM <Ten_Bang_Truy_Van> ... Gi i thích: - Giá tr d li u có th ñư c l y t% m t Query, danh sách trư ng trong câu Query này ph i tương ng v i các trư ng c*n chèn d li u. - Các tùy ch n và m nh ñ có th s d ng trong Query l y d li u như WHERE, GROUP BY. 2.4.1.3. Sao chép dữ liệu từ bảng khác Cú pháp: SELECT * INTO <Ten_Bang_Can_Chen_DL> Gi ng viên: Th.S Nguy n Trí Nhân. 54. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(56)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. FROM <Ten_Bang_Chua_DL> Gi i thích: - <Ten_Bang_Can_Chen_DL>: B ng c*n chèn d li u - <Ten_Bang_Chua_DL>: B ng ch a d li u c*n chèn - B t kỳ các tùy ch n và m nh ñ SELECT có th s d ng bao g m WHERE và GROUP BY. 2.4.2. Cập nhật, xóa dữ liệu 2.4.2.1. Cập nhật chỉnh sửa dữ liệu Cú pháp: UPDATE <Ten_Bang> SET <Truong_Cap_Nhat1> = <Gia_Tri_Cap_Nhat1>, <Truong_Cap_Nhat2> = <Gia_Tri_Cap_Nhat2>, ..................................... <Truong_Cap_NhatN> = <Gia_Tri_Cap_NhatN> WHERE <Dieu_Kien_Cap_Nhat> Gi i thích: - <Ten_Bang>: Tên b ng c*n c p nh t d li u - <Truong_Cap_Nhat>: Tên trư ng c*n c p nh t d li u - <Gia_Tri_Cap_Nhat>: Giá tr m i c*n c p nh t và trư ng tương ng - <Dieu_Kien_Cap_Nhat>: Bi u th c ñi u ki n c p nh t d li u Ví d : - S a l i tên cho v t tư có “Bánh tr ng Custas” thành “Bánh tr ng Custas lo i 1” trong b ng DmVt. UPDATE DmVt SET Ten_Vt = N’Bánh tr ng Custas lo i 1’ WHERE Id = 1 - S a l i mã “Công ty TNHH ABC” t% “N001” thành “N009” - Do mã s c a “Công ty TNHH ABC” b thay ñ i ph*n trư c hãy tìm và thay ñ i t t c thông tin này các b ng tương ng. 2.4.2.2. Xóa dữ liệu Cú pháp: DELETE FROM <Ten_Bang> WHERE <Dieu_Kien_Xoa> Gi i thích: - <Ten_Bang>: Tên b ng c*n xóa d li u - <Dieu_Kien_Xoa>: Bi u th c ñi u ki n xóa d li u Ví d : Gi ng viên: Th.S Nguy n Trí Nhân. 55. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(57)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. - Do sai sót nhân viên kho nh p nh*m v t tư có mã “VT002” hãy xóa v t tư này kh i DmVt. DELETE FROM DmVt WHERE Ma_Vt = ‘VT002’ - Do v t tư có mã “VT002” không t n t i hãy tìm và xóa phát sinh c a v t tư này trong các b ng tương ng ñ ñ m b o toàn v!n d li u. Lưu ý: khi th c thi câu l nh UPDATE ho c DELETE - N u m t câu l nh c p nh t ho#c xóa d li u không có m nh ñ WHERE nó s" áp d ng cho t t c d li u trong b ng. - Trư c khi th$c hi n hai câu l nh trên hãy s d ng m nh ñ WHERE trong m t l nh SELECT ñ ch c ch n d li u c*n c p nh t hay xóa là chính xác. - Không nên c p nh t ho#c xóa các d li u có quan h v i các b ng khác trong cùng m t cơ s d li u. 2.5. BÀI TẬ TẬP THỰ THỰC HÀNH 1. L p danh sách nh ng m#t hàng chưa ñư c bán trong tháng 06 năm 2013 bao g m các thông tin Ma_Vt, Ten_Vt, Dvt. 2. L p danh sách nh ng m#t hàng bán ch y nh t trong tháng 06 năm 2013 bao g m các thông tin Ma_Vt, Ten_Vt, Dvt, So_Luong, k t qu s p x p gi m d*n theo s lư ng. 3. L p b ng kê ch ng t% nh p kho tháng 06 năm 2013 bao g m các thông tin Ma_Ct, Ngay_Ct, So_Ct, Dien_Giai, Tong_Tien, Ten_Dt. 4. L p danh sách 02 khách hàng mua nhi u nh t trong tháng 06 năm 2013 (tính theo doanh s ) bao g m các thông tin Ma_Dt, Ten_Dt, Dia_Chi, So_Dt, Doanh_So. 5. L p danh sách nh ng khách hàng mua hàng có t ng tr giá l n hơn 5 tri u trong tháng 06 năm 2013 ñ làm căn c tính chi t kh u, danh sách này gi m d*n theo doanh s bán hàng. K t qu hi n th bao g m các trư ng Ma_Dt, Ten_Dt, Dia_Chi, Doanh_So 6. Thông kê 2 lo i v t tư nh p nhi u nh t trong tháng 06 bao g m các thông tin Ma_Vt, Ten_Vt, Dvt, Tien_Nhap. 7. L p danh sách nh ng m#t hàng bán trong tháng 05 năm 2013 nhưng l i chưa ñư c bán trong tháng 06 năm 2013, k t qu bao g m các thông tin Ma_Vt, Ten_Vt, Dvt, So_Luong_T5, Don_Gia_T5, Thanh_Tien_T5. 8. L p báo cáo t ng h p nh p kho theo quy cách sau ñây: Ma_Vt, Ten_Vt, Dvt, So_Luong_T5, So_Luong_T6. 9. L p báo cáo nh p xu t v t tư ñơn gi n theo m9u sau: Ma_Vt, Ten_Vt, Dvt, So_Luong_Nhap, So_Luong_Xuat. 10. Th ng kê v t tư nh p theo kho v i các thông tin sau: Ten_Kho, Ten_Vt, So_Luong, Don_Gia, Thanh_Tien.. Gi ng viên: Th.S Nguy n Trí Nhân. 56. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(58)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Chương 3. TẠO CƠ SỞ SỞ DỮ LIỆ LIỆU TRÊN SQL SERVER 3.1. CÁC LOẠ LOẠI FILE LƯU TRỮ TRỮ CƠ SỞ SỞ DỮ LIỆ LIỆU Là cơ s d li u ñư c dùng cho d ch v SQL Server Agent, d ch v này s" t$ ñ ng th$c hi n các hành ñ ng mà ngư i qu n tr cơ s d li u ñã ñưa ra trong th i gian bi u như sao chép an toàn d li u (backup), ñ ng b hóa d li u (replicate), … B n có th h y b các cơ s d li u: Pubs, NorthWind trong trư ng h p không mu n s d ng n a mà không làm nh hư ng ñ n h th ng Microsoft SQL Server. Tuy nhiên, n u dung lư ng ñĩa c ng b n còn tr ng nhi u, b n không nên h y b các cơ s d li u này. 3.1.1. Các tập tin vật lý lưu trữ cơ sở dữ liệu M#c dù ph i qu n lý nhi u ñ i tư ng bên trong cơ s d li u nhưng Microsoft SQL Server ch( t ch c m t vài t p tin d li u (data files) v t lý ñ lưu tr , ñó là ñi u c i ti n t% phiên b n 7.0 tr lên c a Microsoft SQL Server. M t cơ s d li u trong Microsoft SQL Server t i thi u ph i bao g m hai t p tin v t lý ñ lưu tr d li u. - M t dùng ñ lưu tr d li u (data file). - M t dùng ñ lưu v t các giao tác mà ngư i dùng ñã th$c hi n (transaction log file).. Hình 3.1. Các lo i t p tin lưu tr d li u c a SQL Server. Các t p tin lưu tr cơ s d li u bên trong Microsoft SQL Server ñư c phân chia thành ba lo i t p tin v t lý khác nhau. 3.1.2. Tập tin dữ liệu chính (Primary Data File) Đây là t p tin chính dùng ñ lưu tr các thông tin h th ng c a cơ s d li u và ph*n còn l i dùng lưu tr m t ph*n d li u. Ph*n m r ng c a t p tin này thông thư ng là *.MDF. Gi ng viên: Th.S Nguy n Trí Nhân. 57. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(59)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 3.1.3. Tập tin dữ liệu thứ yếu (Secondary Data Files) Đây là t p tin dùng ñ lưu tr các ñ i tư ng d li u không n)m trong t p tin d li u chính. Lo i t p tin này không b t bu c ph i có khi t o m i cơ s d li u. Ph*n m r ng c a t p tin này thông thư ng là *.NDF. 3.1.4. Tập tin lưu vết (Log Files) Đây là t p tin dùng ñ lưu v t các giao tác, là nh ng hành ñ ng c p nh t d li u (thêm, s a, xóa) vào các b ng do ngư i dùng tác ñ ng trên cơ s d li u. T p tin này h< tr cho phép b n có th h y b (Rollback) các thao tác c p nh t d li u v%a m i th$c hi n. Đi u này giúp cho d li u không h b thay ñ i. Ph*n m r ng c a t p tin này thông thư ng là *.LDF. M#c ñ nh các t p tin d li u c a cơ s d li u Microsoft SQL Server s" ñư c lưu tr trong thư m c C:\Program Files\Microsoft SQL Server\MSSQL\Data ho#c ñư ng d9n mà b n ñã ch( ñ nh l i trong quá trình cài ñ#t Microsoft SQL Server. 3.2. TẠO CƠ SỞ SỞ DỮ LIỆ LIỆU 3.2.1. Sử dụng tiện ích Enterprise Manager: - Kh i ñ ng ti n ích Enterprise Manager, ch n m t Microsoft SQL Server ñã ñư c ñăng ký qu n tr trư c ñó. Click chu t ph i trên ñ i tư ng Database, ch n New Database,. Hình 3.2.. Ch c năng New Database. Xu t hi n h p h i tho i:. Gi ng viên: Th.S Nguy n Trí Nhân. 58. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(60)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 3.3.. B c Cao Đ ng Công ngh Thông tin. Các thu c tính cơ s d li u - tab General. - Ch n tab General, nh p vào tên cơ s d li u mu n t o, ví d QLBanHang, ch( ñ nh kích thư c ban ñ*u kh i t o c a t p tin d li u chính, thay ñ i các thu c tính khác (n u c*n). - Ch n tab Transaction Log ñ thay ñ i các thu c tính c a t p tin lưu v t.. - Ch n tab Data Files ñ ch( ñ nh kích thư c ban ñ*u khi kh i t o c a t p tin d li u chính, thay ñ i các thu c tính khác (n u c*n).. Gi ng viên: Th.S Nguy n Trí Nhân. 59. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(61)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 3.4.. B c Cao Đ ng Công ngh Thông tin. Các thu c tính cơ s d li u - tab Data Files. - Ch n tab Transaction Log ñ thay ñ i kích thư c và các thu c tính c a t p tin lưu v t giao tác. - T i tab Transaction Log ch( ñ nh kích thư c ban ñ*u khi kh i t i c a t p tin lưu v t giao tác, thay ñ i các thu c tính khác (n u c*n).. Hình 3.5.. Các thu c tính cơ s d li u - tab Transaction Log. Nh n OK ñ h th ng b t ñ*u th$c hi n vi c kh i t o cơ s d li u ñã ch( ñ nh. Th i gian th$c hi n vi c t o cơ s d li u tùy thu c vào kích thư c c a cơ s d li u mu n t o. Gi ng viên: Th.S Nguy n Trí Nhân. 60. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(62)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 3.2.2. Sử dụng câu lệnh Transaction - SQL: Ngoài ra, b n có th t o m i m t cơ s d li u b)ng câu l nh CREATE DATABASE ñư c th$c hi n trong ti n ích Query Analyzer. Cú pháp: CREATE DATABASE database_name [ ON [ < filespec > [ ,...n ] ] [ , < filegroup > [ ,...n ] ] ] [ LOG ON { < filespec > [ ,...n ] } ] [ COLLATE collation_name ] [ FOR LOAD | FOR ATTACH ] < filespec > ::= [ PRIMARY ] ( [ NAME = logical_file_name , ] FILENAME = 'os_file_name' [ , SIZE = size ] [ , MAXSIZE = { max_size | UNLIMITED } ] [ , FILEGROWTH = growth_increment ] ) [ ,...n ] < filegroup > ::= FILEGROUP filegroup_name < filespec > [ ,...n ] Ví d T o m t cơ s d li u có tên là QLBanHang v i kích thư c ban ñ*u lúc kh i t o c a t p tin d li u chính là 50MB, t$ ñ ng tăng kích thư c lên 10% khi d li u b ñ*y, kích thư c tăng trư ng t p tin d li u t i ña không quá 200MB, t p tin lưu v t v i kích thư c ban ñ*u lúc kh i t o là 10MB, t$ ñ ng tăng kích thư c t p tin lên 5MB khi d li u b ñ*y, kích thư c tăng trư ng t p tin không gi i h n. B n th$c hi n câu l nh như sau:. Gi ng viên: Th.S Nguy n Trí Nhân. 61. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(63)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 3.6.. B c Cao Đ ng Công ngh Thông tin. T o cơ s d li u QLBanHang b)ng ti n ích Query Analyzer. Như v y, b n có hai cách ñ th$c hi n các hành ñ ng trong Microsoft SQL Server: ho#c th$c hi n các thao tác trong ti n ích Enterprise Manager ho#c th$c hi n các câu l nh T-SQL (Transaction SQL) trong ti n ích Query Analyzer ñ t o ra các ñ i tư ng bên trong Microsoft SQL Server. Đ môi trư ng làm vi c tr nên sinh ñ ng hơn, b n nên ph i h p s d ng c hai ti n ích nêu trên. 3.3. XÓA, SỬ SỬA, ĐỔ ĐỔI TÊN, XEM THÔNG TIN CƠ SỞ SỞ DỮ LIỆ LIỆU 3.3.1. Xóa cơ sở dữ liệu M t cơ s d li u sau khi t o xong sau m t th i gian b n không còn khai thác các d li u bên trong ñó thì b n có th h y b ñ c i thi n dung lư ng ñĩa c ng. Tuy nhiên ph i ch c r)ng các thông tin d li u trong cơ s d li u mà b n d$ ñ nh xóa s" không còn h u ích v sau. B i vì b n không th khôi ph c l i sau khi ñã xóa. Đ h y b cơ s d li u trong Microsoft SQL Server, b n có th s d ng nhi u cách: ho#c s d ng câu l nh T-SQL (Transaction SQL) trong ti n ích Query Analyzer ho#c s d ng ch c năng t% th$c ñơn ng c nh trong ti n ích Enterprise Manager. Ví d H y b cơ s d li u QLBanHang ñã t o trong Microsoft SQL Server. 3.3.1.1. Sử dụng tiện ích Enterprise Manager Kh i ñ ng ti n ích Enterprise Manager trong Microsoft SQL Server.. Gi ng viên: Th.S Nguy n Trí Nhân. 62. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(64)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 3.7.. B c Cao Đ ng Công ngh Thông tin. Xóa cơ s d li u QLBanHang b)ng ti n ích Enterprise Manager. Ch n cơ s d li u QLBanHang, nh n phím Delete ho#c click chu t ph i t i cơ s d li u QLBanHang, ch n Delete, xu t hi n thông báo:. Hình 3.8.. Xác nh n ñ ng ý h y b cơ s d li u. 3.3.1.2. Sử dụng tiện ích Query Analyzer Kh i ñ ng ti n ích Query Analyzer trong Microsoft SQL Server. Xóa cơ s@ d9 li,u QLBanHang bAng ti,n ích Query Analyzer. Gi ng viên: Th.S Nguy n Trí Nhân. 63. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(65)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. H th ng Microsoft SQL Server không cho phép ngư i dùng h y b các cơ s d li u h th ng như Master, Model, Tempdb b i vì các cơ s d li u luôn ñư c h th ng Microsoft SQL Server s d ng. Vi c h y b m t cơ s d li u thành công ph i ñ m b o không còn ngư i dùng nào truy c p vào cơ s d li u ñó. N u còn ngư i dùng truy c p cơ s d li u mà b n mu n xóa, h th ng s" l<i. • Lưu ý B n không nên xóa cơ s d li u b)ng cách s d ng Windows Explorer ho#c Windows Commander ñ h y b các t p tin d li u trong thư m c C:\Program Files\Microsoft SQL Server\MSSQL\Data vì th$c hi n như th s" nh hư ng ñ n h th ng cơ s d li u Microsoft SQL Server. Cú pháp: DROP DATABASE database_name [ ,...n ]. Hình 3.9.. H p tho i SQL Query Analyer. 3.3.2. Đổi tên Database (Rename) Đ ñ i tên Database trong h qu n tr cơ s d li u Sql Server 2008 và máy tính, các bư c th$c hi n như sau: Bư c 1: Ch n Database c*n xóa trong Object Explorer. Bư c 2: Nh p ph i chu t vào Database này ch n Remane Bư c 3: Nh p tên m i và nh p Ok ñ th$c hi n ñ i tên. Gi ng viên: Th.S Nguy n Trí Nhân. 64. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(66)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Chương 4. TẠO VÀ QUẢ QUẢN LÝ BẢ BẢNG (TABLE) 4.1. TẠO BẢ BẢNG (TABLE) 4.1.1. Khái niệm về bảng B ng trong Microsoft SQL Server dùng cho vi c lưu tr các thông tin d li u c a nh ng ñ i tư ng, th$c th trong th gi i th$c mu n ñư c lưu tr vào máy tính. Ví d : Thông tin các khách hàng, nhà cung c p, hóa ñơn xu t hàng, hóa ñơn nh p hàng, … các thông tin này s" ñư c t ch c thành các dòng (row) và các c t (column) mà thông thư ng ñ nh d ng c a nó s" g*n gi ng như m t danh sách trong b ng tính Excel c a các b n thư ng dùng. M<i dòng d li u trong b ng thư ng ph i là duy nh t do ñó s" có m t ho#c nhi u c t bên trong b ng s" tham gia làm khóa chính (primary key). Giá tr d li u t i các c t tham gia làm khóa chính là duy nh t không b trùng l p bên trong b ng. H*u như các b ng trong m t cơ s d li u s" có các quan h v i các b ng khác nh)m ki m tra tính t n t i d li u (foreign key) và trao ñ i, chia s= thông tin v i nhau. Ví d : Trong cơ s d li u qu n lý bán hàng, b ng nhà cung c p s" có quan h v i b ng ñơn ñ#t hàng ñ nói r)ng vi c ñ#t hàng cho nh ng nhà cung c p ng v i các lo i v t tư nào. Các thuộc tính của bảng: Trư c khi th$c hi n vi c t o c u trúc b ng, b n xem xét m t s các thu c tính liên quan ñ n b ng. M c ñích c a nh)m giúp b n hi u rõ v các thu c tính liên quan ñ n b ng ñ có th th$c hi n vi c t o c u trúc b ng ñư c t t hơn. Các thu c tính cơ b n c a m t b ng d li u bao g m: • Tên b ng (table name): Là tên c a b ng d li u do b n quy ñ nh, ñ dài không quá 128 ký t$. Tên b ng ph i duy nh t bên trong ph m vi c a ngư i ñã t o ra nó trong m t cơ s d li u. Đi u này có nghĩa là n u ngư i s d ng ND1 ñã t o b ng KHACHHANG thì ND2 cũng ñư c phép t o ra b ng KHACHHANG khác trong cùng m t cơ s d li u. • Tên c t (column name): Là tên c a các c t bên trong b ng, tên c a các c t bên trong b ng ph i duy nh t 4.1.2. Tạo cấu trúc bảng dữ liệu Đ t o c u trúc b ng, b n có hai cách th$c hi n. Đ*u tiên là t o c u trúc b ng b)ng ti n ích Enterprise Manager. Gi ng viên: Th.S Nguy n Trí Nhân. 65. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(67)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. K t% bây gi xem như b n ñã ñăng ký qu n tr m t Microsoft SQL Server và bên trong Microsoft SQL Server này, cơ s d li u qu n lý bán hàng (QLBanHang) ñã ñư c t o l p. Các b ng d li u và nh ng ñ i tư ng khác các bài hư ng d9n k ti p s" ñư c t o ra bên trong cơ s d li u QLBanHang này. Các bư c th$c hi n vi c t o b ng d li u trong Enterprise Manager: • Trong ng d ng Enterprise Manager, m r ng cơ s d li u QLBanHang ñ th y các ñ i tư ng d li u bên trong. Click chu t ph i trên ñ i tư ng Tables, ch n New Table trong th$c ñơn t t.. Hình 4.1.. Ch n ch c năng New Table ñ t o m i b ng. • Trong màn hình thi t k c u trúc b ng (design table), l*n lư t nh p vào tên các c t bên trong b ng, ch n l$a các ki u d li u tương ng thích h p và ch( ñ nh các thu c tính c*n thi t cho các c t bên trong b ng. Sau cùng ñ nh nghĩa khóa chính cho b ng.. Gi ng viên: Th.S Nguy n Trí Nhân. 66. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(68)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Hình 4.2. Thi t k c u trúc b ng • Lưu l i c u trúc b ng v%a ñ nh nghĩa k t thúc quá trình t o c u trúc b ng b)ng ti n ích Enterprise Manager.. Hình 4.3.. Ch( ñ nh tên b ng m i. Ngoài ra b n cũng có th t o c u trúc b ng b)ng câu l nh CREATE TABLE, cú pháp ñ*y ñ c a câu l nh này r t ph c t p và r t dài. Do ñó, s" hư ng d9n b n t%ng thành ph*n nh bên trong câu l nh CREATE TABLE ñ b n t%ng bư c làm quen v i các cú pháp c a câu l nh này. Sau ñó b n có th k t h p các thành ph*n này l i trong m t câu l nh CREATE TABLE ñ xây d$ng c u trúc b ng d li u hoàn ch(nh. 4.1.2.1. Tạo cấu trúc bảng đơn giản: V i cú pháp CREATE TABLE bên dư i cho phép b n t o ra c u trúc b ng g m: tên b ng, tên các c t cùng v i ki u d li u tương ng và ch( ñ nh giá tr d li u t i các c t bên trong b ng không ñư c phép b tr ng. M#c ñ nh giá tr d li u t i m t c t không tham gia làm khóa chính c a b ng ñư c phép b tr ng d li u khi thêm m i. Cú pháp:. Gi ng viên: Th.S Nguy n Trí Nhân. 67. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(69)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Trong ñó: • Tên b ng, tên c t và ki u d li u ñã ñư c mô t trong ph*n các thu c tính c a b ng. • T% khóa NOT NULL ch( ñ nh không cho phép d li u t i c t ñư c phép b tr ng. Ví d : Đ t o b ng có tên là VATTU (v t tư) g m có nh ng c t và ki u d li u mô t như trên, ch( có d li u t i c t ph*n trăm (Phantram) là ñư c phép b tr ng. B n th$c hi n câu l nh CREATE TABLE như sau:. 4.1.2.2. Tạo cấu trúc bảng có giá trị mặc định: V i cú pháp CREATE TABLE bên dư i cho phép b n t o ra c u trúc b ng v i ñ nh nghĩa giá tr m#c ñ nh cho c t. Giá tr m#c ñ nh là nh ng giá tr s" ñư c gán vào bên trong c t d li u c a b ng trong trư ng h p d li u t i c t ñó b tr ng khi thêm dòng d li u m i vào b ng. Cú pháp:. Trong ñó: • Giá tr6: là giá tr c th s" ñư c gán vào c t. • Hàm: là tên hàm cùng v i tham s (n u có), tuy nhiên ki u d li u mà hàm tr v ph i cùng v i ki u d li u mà c t s" lưu tr . Ví d : Gi ng viên: Th.S Nguy n Trí Nhân. 68. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(70)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Đ t o b ng có tên VATTU (v t tư) g m có nh ng c t và ki u d li u như mô t trên, có thêm yêu c*u là t o giá tr m#c ñ nh t i c t ph*n trăm (Phantram) là 20. B n th$c hi n câu l nh CREATE TABLE như sau:. 4.2.. THAY ĐỔ ĐỔI CẤ CẤU TRÚC BẢ BẢNG (TABLE) Trong th$c t vi c thay ñ i c u trúc b ng v9n thư ng ñư c th$c hi n ñ i v i các b ng ñã có ch a nhi u d li u. Trong trư ng h p này b n tuy t ñ i không h y b b ng hi n có và t o l i c u trúc m i b i vì làm như th là b n s" m t ñi t t c các d li u ñang hi n có bên trong b ng. B n có th thay ñ i c u trúc b ng b)ng ti n ích Enterprise Manager trong màn hình thi t k b ng. Tuy nhiên, trong bài này s" hư ng d9n b n các tính năng mà câu l nh ALTER TABLE s" mang ñ n khi b n th$c hi n vi c thay ñ i c u trúc b ng. 4.2.1. Thêm một cột mới trong bảng: V i cú pháp ALTER TABLE bên dư i cho phép b n thêm vào m t ho#c nhi u c t m i vào trong b ng hi n ñang có. Tên các c t m i ph i khác tên các c t hi n ñang có bên trong b ng. M#c nhiên d li u c a các c t m i thêm vào ph i ñư c phép b tr ng. Cú pháp: ALTER TABLE Tên_b ng ADD Tên_C>t Ki'u_d9_Li,u[,…] Trong ñó: • Tên c>t: tên c a c t m i ñư c thêm vào b ng. • Ki'u d9 li,u: ki u d li u tương ng c a c t m i. Ví d : Đ thêm vào b ng DONDH (ñơn ñ#t hàng) m t c t ngày d$ ki n nh n hàng có ki u d li u là ngày. B n th$c hi n câu l nh ALTER TABLE như sau: Cú pháp ALTER TABLE DONDH ADD NGAYDKNH DATETIME. Gi ng viên: Th.S Nguy n Trí Nhân. 69. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(71)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 4.2.2. Hủy bỏ cột hiện có bên trong bảng: V i cú pháp ALTER TABLE bên dư i cho phép b n h y b m t ho#c nhi u c t hi n có bên trong b ng. Nên nh vi c h y b các c t ñ ng nghĩa v i các d li u mà c t hi n ñang lưu tr cũng s" b m t theo. Do ñó c*n th n tr ng khi s d ng câu l nh này: Cú pháp: ALTER TABLE Tên_B ng DROP COLUMN Tên_c>t [,…] Trong ñó: • Tên c>t: tên c t s" b h y b ra kh i b ng. Ví d : Đ h y b c t ngày d$ ki n nh n hàng trong b ng DONDH (ñơn ñ#t hàng) v%a thêm ví d trên, b n th$c hi n câu l nh ALTER TABLE như sau: ALTER TABLE DONDH DROP COLUMN Ngaydknh Lưu ý: Đ i v i nh ng c t nào ñã có ñ nh nghĩa các quy t c ki m tra tòan v!n d li u thông qua các constraint thì b n không th h y b . Trong các trư ng này ñ có th h y b các c t ñó, trư c tiên b n ph i h y b các constraint có liên quan ñ n chúng. 4.2.3. Sửa đổi kiểu dữ liệu của cột: V i cú pháp ALTER TABLE bên dư i cho phép b n s a ñ i ki u d c a c t hi n có trong b ng. Đ i v i các ki u d li u d ng text, ntext ho#c image thì không th ñ i sang ki u d li u khác. Thông thư ng b n r t ít khi s a ñ i ki u d li u c a các c t m t cách tr$c ti p mà thay vào ñó b n thêm m t c t m i v i ki u d li u như mong mu n vào b ng, sau ñó c p nh t d li u c a c t hi n có sang c t m i v%a thêm vào, ki m tra vi c d li u sau khi c p nh t có ñúng theo như mong mu n không. Cu i cùng là h y b c t d li u cũ và ñ i tên c t d li u m i thành tên c a c t d li u cũ trư c ñó. Cú pháp: ALTER TABLE Tên_B ng ALTER COLUMN Tên_c t Ki u_d _li u_m i Ví d : Đ s a l i ki u d li u và tăng ñ dài lưu tr c a c t ñơn v tính lên 20 ký t$ trong b ng VATTU (v t tư), b n th$c hi n câu l nh ALTER TABLE như sau: ALTER TABLE VATTU ALTER COLUMN Dvtinh VARCHAR(20) Lưu ý: Gi ng viên: Th.S Nguy n Trí Nhân. 70. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(72)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Gi ng như vi c h y b các c t, v i nh ng c t ñã có ñ nh nghĩa các quy t c ki m tra toàn v!n d li u thông qua các constraint thì không th thay ñ i ki u d li u c a chúng. 4.2.4. Tắt bỏ quy tắc kiểm tra toàn vẹn dữ liệu: V i cú pháp ALTER TABLE bên dư i cho phép b n t m th i b qua vi c ki m tra toàn v!n d li u thông qua các ñ i tư ng constraint bên trong b ng b)ng cách t t các quy t c. Các quy t c mà b n ch( ñ nh s" không còn ñư c áp d ng dùng ñ ki m tra tính toàn v!n d li u cho ñ n khi nào b n b t cho nó ho t ñ ng tr l i. Tuy nhiên các quy t c này s" hoàn toàn không b xóa ñi ra kh i cơ s d li u. Cú pháp: ALTER TABLE Tên_b ng NOCHECK CONSTRAINT ALL | Tên_constraint [,…] Trong ñó: • Tên constraint: tên c a các constraint ph i có t n t i bên trong cơ s d li u mà b n mu n t m ngưng vi c ki m tra tính toàn v!n d li u trên ñó. • T< khóa ALL: ñư c s d ng khi b n mu n t m ngưng vi c ki m tra tính toàn v!n d li u cho t t c các constraint có liên quan ñ n b ng ñã ñư c ñ nh nghĩa trư c ñó. Lưu ý: B n t m th i t t vi c ki m tra d li u trong c t s lư ng ñ#t hàng c a b ng CTDONDH (chi ti t ñ#t hàng) n)m trong mi n giá tr t% 10 ñ n 50 khi ngư i dùng thêm ho#c s a d li u trong b ng CTDONDH, b n th$c hi n câu l nh ALTER TABLE như sau: ALTER TABLE CTDONDH NOCHECK CONSTRAINT CHK_CTDONDH_SLDAT Lưu ý: B n ch( ñư c phép t t các quy t c ki m tra toàn v!n d li u c a các constraint là khóa ngo i (FOREIGN KEY), mi n giá tr (CHECK) và giá tr m#c ñ nh (DEFAULT). Hai lo i constraint còn l i là khóa chính (PRIMARY KEY) và duy nh t (UNIQUE) h th ng Microsoft SQL Server hoàn toàn không cho phép t t là b i vì h th ng c*n ph i ki m tra tính duy nh t c a d li u bên trong b ng có ñ nh nghĩa khóa chính. 4.2.5. Bật lại quy tắc kiểm tra toàn vẹn dữ liệu: V i cú pháp ALTER TABLE bên dư i cho phép b n b t l i vi c áp d ng các quy t c ki m tra toàn v!n d li u thông qua các ñ i tư ng constraint bên trong b ng sau khi b n t m th i ñã t t ñi trư c ñó. Cú pháp: ALTER TABLE Tên_B ng CHECK CONSTRAINT ALL | Tên_Constraint [,…] Trong ñó: Gi ng viên: Th.S Nguy n Trí Nhân. 71. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(73)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Tên constraint: tên c a các constraint ph i t n t i trong cơ s d li u mà b n mu n b t tr l i sau khi ñã t t t m th i. T< khóa ALL: ñư c s d ng khi mu n b t vi c ki m tra toàn v!n d li u cho toàn b t t c các constraint liên quan ñ n b ng. Ví d : B n b t l i vi c ki m tra toàn v!n d li u trong c t s lư ng ñ#t hàng c a b ng CTDONDH (chi ti t ñ#t hàng) ñã b t t t m th i ví d trên, b n th$c hi n l nh ALTER TABLE như sau: ALTER TABLE CTDONDH CHECK CONSTRAINT CHK_CTDONDH_SLDAT 4.2.6. Đổi tên cột, tên bảng dữ liệu: Trong th$c t , vi c thay ñ i tên c t ho#c tên b ng d li u là r t h n ch b i vì chúng s" làm nh hư ng r t nhi u ñ n các ño n chương trình có tham chi u ñ n tên c t ho#c tên b ng ñâu ñó trong ng d ng. B n ch( th$c hi n vi c này khi th t s$ c*n thi t. Đ có th ñ i tên c t ho#c tên b ng, b n có th vào tr$c ti p ti n ích Enterprise Manager. Tuy nhiên, b n c*n bi t thêm v Procdure Store h th ng (system stored procedure) có tên là sp_rename. Các Procdure Store h th ng là m t t p h p các th t c do Microsoft SQL Server t o ra và cung c p cho ngư i s d ng th$c hi n m t s x lý s>n có bên trong Microsoft SQL Server. Cú pháp: EXEC sp_rename ‘Tên_B ng[. Tên_C t]’, ‘Tên_M i’ [, ‘COLUMN’] Trong ñó: • EXE: l nh dùng ñ th$c thi (execute) các Procdure Store bên trong Microsoft SQL Server. • Tên b ng: tên c a b ng mà b n s" ñ i tên ho#c tên b ng ch a tên c t mà b n mu n ñ i tên. • Tên c>t: tên c t mà b n mu n ñ i tên. Khi mu n ñ i tên m t c t trong b ng thì b n ph i ch( ra ñ*y ñ tên b ng ch a tên c t mu n ñ i tên. • Tên m.i: tên m i c a c t ho#c tên m i c a b ng sau khi ñ i. • COLUMN: t% khóa ch( ñư c s d ng khi thay ñ i tên c t. Ví d : Đ thay ñ i tên c t h tên nhà cung c p trong b ng NHACC (nhà cung c p) t% c t cũ Tennhacc thành c t m i là Hotenncc, b n th$c hi n câu l nh như sau: EXEC sp_rename ‘NHACC.TenNhaCC’, ‘HoTenNCC’ Gi ng viên: Th.S Nguy n Trí Nhân. 72. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(74)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Đ thay ñ i tên b ng hi n có c a NHACC thành tên m i là NHACCAP, b n th$c hi n câu l nh như sau: EXEC sp_rename ‘NHACC’, ‘NHACCAP’ 4.3. XÓA BẢ BẢNG (TABLE) Trong th$c t thì l nh xóa b c u trúc b ng r t ít ñư c th$c hi n b i vì nó r t nguy hi m, khi ñó nó s" làm m t toàn b các dòng d li u bên trong ñó. Vì th b n nên h n ch s d ng câu l nh này. Cú pháp: Trong ñó: • Danh sách tên b ng: là danh sách tên các b ng mà b n mu n h y b , tên các b ng mu n h y b ñư c ngăn cách nhau b i d u ph'y (,). Thông thư ng mu n h y b các b ng có quan h trong cơ s d li u, b n b t bu c ph i h y b các b ng bên nhánh quan h N trư c và sau ñó m i ñ n h y b các b ng bên nhánh 1. Ví d : Đ h y b b ng VATTU (v t tư) v%a t o trên, b n th$c hi n câu l nh DROP TABLE như sau: Lưu ý: Trong các ví d k ti p, n u b ng nào ñã có t n t i trong cơ s d li u r i thì trư c khi t o l i c u trúc m i c a b ng ñó, b n ph i ra l nh h y b b ng hi n có r i m i th$c hi n l nh t o l i b ng v i c u trúc m i. N u không thì Microsoft SQL Server s" thông báo r)ng b ng ñã có trong cơ s d li u r i. 4.4. QUẢ QUẢN LÝ BẢ BẢNG 4.4.1. Tính toàn vẹn dữ liệu trong cơ sở dữ liệu Toàn v!n d li u là vi c ñ#t ra các quy t c trong m t cơ s d li u nh)m ki m tra các giá tr c a d li u trư c khi ñư c lưu tr ph i ñ m b o tính chính xác và h p lý bên trong m t cơ s d li u. N u các giá tr d li u nào vi ph m các quy t c ñ#t ra thì các d li u ñó s" không ñư c lưu vào b ng. Các quy t c này ph*n l n ñư c xây d$ng d$a vào các quy t c hi n h u ñang t n t i trong công vi c kinh doanh. Ví d : Trong cơ s d li u QLBanHang (qu n lý bán hàng) b n có th ñưa ra m t s quy t c như sau: • S lư ng ñ#t hàng ph i dương (mi n giá tr ). • Ngày nh p hàng ph i sau ngày ñ#t hàng. Gi ng viên: Th.S Nguy n Trí Nhân. 73. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(75)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. • S hóa ñơn giao hàng không b c p trùng s (khóa chính). • Đơn ñ#t hàng ph i g i cho m t nhà cung c p có trong danh sách nhà cung c p (khóa ngo i). • S lư ng bán hàng ph i dương và còn ñ s lư ng hi n có trong kho hàng. Đi u gì x y ra n u d li u bên trong các b ng có vi ph m các quy t c trên mà v9n ñư c lưu tr vào bên trong cơ s d li u? Do ñó, trong các h cơ s d li u quan h l n ngày nay, h th ng s" giúp cho ngư i s d ng có th ñ nh nghĩa ra các quy t c thông qua các t% khóa ho#c thu c tính có liên quan ñ n cơ s d li u nh)m ñ m b o d li u khi lưu tr vào cơ s d li u ph i chính xác và h p lý. Bên trong cơ s d li u c a Microsoft SQL Server vi c ki m tra tính toàn v!n d li u s" thông qua hai ñ i tư ng qu n lý, ñó là các constraint và trigger. C hai ñ i tư ng này ñ u ñư c liên k t tr$c ti p vào b ng d li u. Các lo i quy t c ki m tra tính toàn v!n d li u bao g m: 4.4.1.1. Kiểm tra duy nhất dữ liệu: Lo i ràng bu c toàn v!n này cho phép b n có th ki m tra tính duy nh t c a d li u bên trong b ng. Đi u này ngăn c n vi c ngư i s d ng tình c nh p trùng l i các giá tr d li u bên trong b ng. B n có th s d ng hai thành ph*n PRIMARY KEY ho#c UNIQUE trong câu l nh CREATE TABLE ñ th$c hi n vi c ki m tra tính duy nh t c a d li u. Đi m khác bi t chính gi a PRIMARY KEY và UNIQUE là s$ xu t hi n c a các thành ph*n trong câu l nh CREATE TABLE. Thành ph*n PRIMARY KEY cho phép b n t o ra c u trúc b ng có ch a khóa chính. Do m t b ng ch( có m t khóa chính, tuy nhiên khóa chính ñư c phép ñ nh nghĩa có nhi u c t tham gia. Vì th thành ph*n PRIMARY KEY ch( xu t hi n m t l*n duy nh t khi t o c u trúc b ng. Thành ph*n UNIQUE cho phép b n ki m tra tính duy nh t c a các c t không tham gia làm khóa chính c a b ng. Thành ph*n UNIQUE ñư c phép xu t hi n nhi u l*n khi t o c u trúc b ng n u c*n ki m tra tính duy nh t c a các c t không làm khóa chính. Cú pháp:. Trong ñó: • Tên constraint: ph i là duy nh t trong cơ s d li u. Thông thư ng quy ñ nh tên constraint g m có 3 ph*n. B t ñ*u b)ng các ch PRK, k ti p là tên b ng và cu i cùng là tên c t áp d ng quy t c ki m tra duy nh t d li u c a các c t khóa chính. • Danh sách c>t khóa chính: là danh sách tên các c t tham gia làm khóa chính, tên các c t ñư c ngăn cách nhau b i d u ph'y (,). Cú pháp:. Gi ng viên: Th.S Nguy n Trí Nhân. 74. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(76)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Trong ñó: • Tên constraint: ph i là duy nh t trong cơ s d li u. Thông thư ng quy ñ nh tên constraint g m có 3 ph*n. B t ñ*u b)ng các ch UNQ, k ti p là tên b ng và cu i cùng là tên c t áp d ng quy t c ki m tra duy nh t d li u c a các c t không tham gia làm khóa chính. • Danh sách c>t: là danh sách tên các c t c*n ki m tra duy nh t, tên các c t ñư c ngăn cách nhau b i d u ph'y (,). Lưu ý: M#c ñ nh tên các constraint s" do h th ng Microsoft SQL Server t o ra nh)m ñ m b o tính duy nh t bên trong cơ s d li u. Tuy nhiên b n có th ch ñ ng ñ#t tên cho các constraint khi t o ra chúng b)ng cách ñưa thêm t% khóa CONSTRAINT trong các thành ph*n ñ nh nghĩa các ki m tra ràng bu c toàn v!n d li u. Ví d : T o b ng VATTU ki m tra d li u c a c t mã v t tư ph i là duy nh t. Trư ng h p ch( ñ nh c t mã v t tư làm khóa chính c a b ng. B n th$c hi n câu l nh CREATE TABLE như sau:. V i cú pháp như trên b ng VATTU có s d ng m t constraint lo i PRIMARY KEY dùng ñ nh nghĩa khóa chính c a b ng là c t Mavtu. Tuy nhiên tên c a constraint s" do h th ng Microsoft SQL Server t o ra. Trong trư ng h p n u b n mu n ch( ñ nh tên c a constraint do b n ñ nh nghĩa thì b n th$c hi n câu l nh CREATE TABLE có s d ng t% khóa CONSTRAINT như sau:. Gi ng viên: Th.S Nguy n Trí Nhân. 75. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(77)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Khi mà các thành ph*n c a ñ i tư ng constraint xu t hi n ngay phía sau tên c t như hai ví d trên thì ràng bu c toàn v!n d li u s" ñư c ki m tra trên c t d li u. B n nên ch n cách này khi th$c hi n vi c ki m tra các ràng bu c toàn v!n d li u ch( trên m t c t bên trong b ng d li u. Trong trư ng h p n u b n ñ#t các thành ph*n c a ñ i tư ng constraint bên dư i t t c các c t d li u bên trong b ng thì ràng bu c toàn v!n d li u s" ñư c ki m tra trên b ng. B n nên ch n cách này khi th$c hi n vi c ki m tra các ràng bu c toàn v!n d li u trên nhi u c t có liên quan bên trong b ng d li u. Ví d : Đ t o b ng có tên CTDONDH (chi ti t ñơn ñ#t hàng) g m có nh ng c t như: s ñ#t hàng có ki u d li u là chu<i và chi u dài 4 ký t$, mã v t tư có ki u d li u là chu<i và chi u dài 4 ký t$, s lư ng ñ#t có ki u s nguyên. D li u t i các c t không ñư c phép tr ng. Khóa chính g m có 2 c t là s ñ#t hàng và mã v t tư. B n th$c hi n câu l nh CREATE TABLE như sau:. Ho#c mu n ñ#t tên c a constraint là PRK_CTDONDH_SodhID. Gi ng viên: Th.S Nguy n Trí Nhân. 76. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(78)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Lưu ý: Khi s d ng các lo i ràng bu c toàn v!n d li u ñư c ki m tra trên c t d li u thì c*n nh r)ng d u ph'y (,) luôn ñư c ñ#t v trí sau cùng c a thành ph*n constraint ch không ñư c ñ#t v trí phía sau tên ki u d li u c a c t. Ngư c l i khi s d ng các lo i ràng bu c toàn v!n d li u ñư c ki m tra trên b ng thì không c*n có thêm d u ph'y (,) v trí phía sau c a c t d li u cu i cùng bên trong b ng. Đôi khi nh ng ñi u lưu ý này s" làm cho b n c m th y khó nh . Do v y ñ ñơn gi n khi t o c u trúc b ng, b n th$c hi n hai bư c: Bư.c 1: T o c u trúc b ng ñơn gi n b)ng l nh CREATE TABLE g m có tên b ng, tên các c t và các ki u d li u mong mu n. Bư.c 2: Thêm các lo i constraint tương ng b)ng l nh ALTER TABLE ADD CONSTRAINT ñ áp d ng các ki m tra ràng bu c toàn v!n d li u cho b ng d li u. 4.4.1.2. Kiểm tra tồn tại dữ liệu: Lo i ràng bu c toàn v!n này cho phép b n có th ki m tra tính t n t i c a d li u (khóa ngo i), b t bu c ph i có bên m t b ng khác, còn g i là b ng tham chi u. Đi u này ngăn c n vi c ngư i s d ng nh p m t giá tr d li u không có trong m t b ng d li u khác. B n có th s d ng thành ph*n FOREIGN KEY trong câu l nh CREATE TABLE ñ th$c hi n vi c ki m tra tính t n t i c a d li u. Trong m t b ng ñư c phép có nhi u khóa ngo i, tuy nhiên các c t tham chi u ph i ñư c ñ nh nghĩa là khóa chính trong các b ng tham chi u trư c ñó. Vì th thành ph*n FOREIGN KEY ñư c phép xu t hi n nhi u l*n khi t o c u trúc b ng n u b n c*n ki m tra tính t n t i c a nhi u c t khác nhau trong các b ng khác nhau. Cú pháp:. Trong ñó: • Tên constraint: ph i là duy nh t trong cơ s d li u. Thông thư ng quy ñ nh tên constraint g m có 3 ph*n. B t ñ*u b)ng các ch : FRK, k ti p là tên b ng và cu i cùng là tên c t áp d ng quy t c ki m tra t n t i d li u. • Danh sách c>t khóa ngo5i: là danh sách tên các c t tham gia làm khóa ngo i, tên các c t ñư c ngăn cách nhau b i d u ph'y (,). • Tên b ng tham chi4u: là tên c a b ng tham chi u ñ ki m tra tính t n t i d li u bên b ng tham chi u. • Danh sách c>t tham chi4u: là danh sách tên các c t tham chi u trong b ng tham chi u, tên các c t ngăn cách nhau b i d u ph'y (,). Lưu ý r)ng danh sách các c t khóa ngo i và danh sách các c t tham chi u ph i tương x ng nhau. Gi ng viên: Th.S Nguy n Trí Nhân. 77. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(79)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Ví d : T o l i b ng CTDONDH có b sung thêm hai ràng bu c toàn v!n d li u khóa ngo i: s ñ#t hàng tham chi u qua b ng DONDH, nghĩa là giá tr d li u t i c t s ñ#t hàng ph i t n t i trong b ng DONDH và mã v t tư tham chi u qua b ng VATTU, nghĩa là giá tr d li u t i c t mã v t tư ph i t n t i trong b ng VATTU. B n th$c hi n câu l nh CREATE TABLE như sau: create Table CTDONDH ( SODH INT, MaVTu Char(4), SLDat SmallInt PRIMARY KEY (SODH, MAVTU), FOREIGN KEY (SODH) REFERENCES DONDH (SODH), FOREIGN KEY (MAVTU) REFERENCES VATTU (MAVTU)) Ho c mu n ñ t tên cho các constraint liên quan CREATE TABLE CTDONDH111 ( SODH INT, MaVTu Char(4), SLDat SmallInt CONSTRAINT PRK_CTDONDH_SODH PRIMARY KEY (SODH, MAVTU), CONSTRAINT FRK_CTDONDH_SODH FOREIGN KEY (SODH) REFERENCES DONDH (SODH), CONSTRAINT FRK_CTDONDH_MAVTU FOREIGN KEY (MAVTU) REFERENCES VATTU (MAVTU)) 4.4.1.3. Kiểm tra miền giá trị: Lo i ràng bu c toàn v!n này cho phép b n có th ki m tra mi n giá tr c a các c t d li u bên trong b ng. Đi u này ngăn c n vi c ngư i s d ng nh p m t giá tr d li u vư t ra kh i ph m vi mà b n quy ñ nh trư c ñó. B n có th s d ng thành ph*n CHECK trong câu l nh CREATE TABLE ñ th$c hi n vi c ki m tra mi n giá tr c a d li u. Có th th$c hi n vi c ki m tra ñ so sánh giá tr c a m t c t bên trong b ng v i m t giá tr c th ho#c m t hàm tính toán c a Microsoft SQL Server mà ki u tr v c a hàm ph i kh p v i ki u d li u c a c t. Ngoài ra b n cũng có th ki m tra giá tr c a nhi u c t có liên quan trong cùng m t b ng d li u. Cú pháp:. Trong ñó: Gi ng viên: Th.S Nguy n Trí Nhân. 78. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(80)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. • Tên constraint: ph i là duy nh t trong cơ s d li u. Thông thư ng quy ñ nh tên constraint g m có 3 ph*n. B t ñ*u b)ng các ch : CHK, k ti p là tên b ng và cu i cùng là tên c t áp d ng quy t c ki m tra mi n giá tr d li u. • Bi'u th3c lu n lý: là m t bi u th c ch( ñ nh quy t c ki m tra d li u trong b ng. Thông thư ng bi u th c lu n lý s" là bi u th c so sánh. Ví d : Trong b ng CTDONDH (chi ti t ñơn ñ#t hàng) ki m tra quy t c giá tr d li u c a c t s lư ng ñ#t t i thi u là 10 và không l n hơn 50. Có nghĩa là c t s lư ng ñ#t >=10 và s lư ng ñ#t <=50, giá tr m#c ñ nh s" là 10 khi ngư i s d ng không cung c p giá tr c t s lư ng ñ#t. create Table CTDONDH2 ( SODH INT, MaVTu Char(4), SLDat SmallInt Default 20 CHECK(SLDAT BETWEEN 10 AND 50) PRIMARY KEY (SODH, MAVTU), FOREIGN KEY (SODH) REFERENCES DONDH (SODH), FOREIGN KEY (MAVTU) REFERENCES VATTU (MAVTU)) Ho#c mu n ñ#t tên cho các constraint liên quan create Table CTDONDH ( SODH INT, MaVTu Char(4), SLDat SmallInt Default 20 CONSTRAINT CHK_CTDONDH_SLDAT CHECK(SLDAT BETWEEN 10 AND 50), CONSTRAINT PRK_CTDONDH_SODH PRIMARY KEY (SODH, MAVTU), CONSTRAINT FRK_CTDONDH_SODH FOREIGN KEY (SODH) REFERENCES DONDH (SODH), CONSTRAINT FRK_CTDONDH_MAVTU FOREIGN KEY (MAVTU) REFERENCES VATTU (MAVTU)) Khi mu n xem tên c a các constraint và các quy t c liên quan ñư c ñ nh nghĩa trong c u trúc b ng, b n ch n ch c năng Properties sau khi nh n vào tên b ng trong màn hình mô hình quan h d li u (diagram).. Gi ng viên: Th.S Nguy n Trí Nhân. 79. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(81)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 4.4.. B c Cao Đ ng Công ngh Thông tin. H p tho i thu c tính mô hình quan h. Tương t$, b n có th di chuy n qua các tab Relationships ho#c Indexs/Keys ñ th y ñư c các quy t c ki m tra d li u v tính duy nh t, tính t n t i c a các d li u bên trong b ng.. Hình 4.5.. Gi ng viên: Th.S Nguy n Trí Nhân. H p tho i thu c tính mô hình quan h. 80. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(82)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Thay vì t o c u trúc b ng b)ng duy nh t m t câu l nh CREATE TABLE v i nhi u thành ph*n c a các ñ i tư ng constraint khó nh bên trong ñó, b n có th t o ra c u trúc b ng ñơn gi n và sau ñó thêm vào các constraint m i trong b ng dùng ñ th$c hi n quy t c ki m tra cho các lo i ràng bu c toàn v!n d li u trên b ng. 4.4.1.4. Thêm vào constraint mới trong bảng: V i cú pháp ALTER TABLE t ng quát bên dư i cho phép b n thêm vào các lo i quy t c ki m tra toàn v!n d li u thông qua các ñ i tư ng constraint bên trong b ng. Cú pháp:. Trong ñó: • Tên constraint: ph i là duy nh t bên trong cơ s d li u. Thông thư ng quy ñ nh tên c a m t constraint bao g m 3 ph*n nh . B t ñ*u b)ng các ch : PRK, FRK, UNQ, CHK, DEF ch( các lo i constraint tương ng s" là khóa chính, khóa ngo i, duy nh t, mi n giá tr , giá tr m#c ñ nh, k sau ñó là tên c a b ng và cu i cùng là tên c t s" áp d ng quy t c ki m tra d li u. • Lo5i: là các t% khóa tương ng cho các thành ph*n theo t%ng lo i constraint như ki m tra tính duy nh t (PRIMARY KEY, UNIQUE), ki m tra khóa ngo i (FOREIGN KEY), ki m tra mi n giá tr (CHECK), giá tr m#c ñ nh (DEFAULT). • Các tham s+: là các tham s c*n thi t ñi kèm theo v i các t% khóa c a t%ng lo i constraint tương ng. Cú pháp chi ti t t%ng lo i constraint:. Ví d : Gi ng viên: Th.S Nguy n Trí Nhân. 81. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(83)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. T o c u trúc b ng NHACC (nhà cung c p) v i khóa chính là c t mã nhà cung c p. Trư c tiên b n t o c u trúc b ng ñơn gi n. create tabLe NHACC ( MANHACC CHAR(3) NOT NULL, TENNHACC CHAR(30) NOT NULL, DIACHI CHAR(50) NOT NULL, DIENTHOAI CHAR(15) ) Sau ñó b n thêm vào các quy t c ki m tra duy nh t c a d li u t i khóa chính c a b ng là c t mã nhà cung c p b)ng l nh ALTER TABLE ADD CONSTRAINT. ALTER TABLE NHACC ADD CONSTRAINT PRK_NHACC_MANHACC PRIMARY KEY(MANHACC) B n có th thêm m t quy t c m i dùng ñ ki m tra tính duy nh t d li u t i c t ñ a ch( c a b ng nhà cung c p và ñưa vào giá tr m#c ñ nh cho c t ñi n tho i c a b ng nhà cung c p là "Chưa có" b)ng các câu l nh như sau:. Lưu ý: Trong l nh ALTER TABLE ADD CONSTRAINT khi c*n ñ nh nghĩa giá tr m#c ñ nh cho m t c t d li u bên trong b ng thì b t bu c b n ph i có thêm t% khóa FOR tên c t ñ ch( ñ nh giá tr m#c ñ nh ñư c t o ra s" áp d ng cho c t d li u nào. S d ng các câu l nh CREATE TABLE ñ t o ra c u trúc các b ng VATTU (v t tư), NHACC (nhà cung c p), DONDH (ñơn ñ#t hàng) và CTDONDH (chi ti t ñơn ñ#t hàng). B ng VATTU có các quy t c ki m tra toàn v!n d li u: • Khóa chính là c t mã v t tư. • Giá tr d li u duy nh t t i c t tên v t tư. • Giá tr m#c ñ nh cho c t ph*n trăm là 20. • Ki m tra ph m vi giá tr c a ph*n trăm t% 5 ñ n 100. CREATE TABLE VATTU ( Gi ng viên: Th.S Nguy n Trí Nhân. 82. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(84)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. MAVTU CHAR(4) NOT NULL, TENVTU CHAR(3) NOT NULL, DVTINH CHAR(10) NOT NULL, PHANTRAM TINYINT CONSTRAINT DEF_VATTU_PHANTRAM DEFAULT 20, CONSTRAINT PRK_VATTU_MAVTU PRIMARY KEY(MAVTU), CONSTRAINT UNQ_VATTU_TENVTU UNIQUE(TENVTU), CONSTRAINT UNQ_VATTU_PHANTRAM CHECK (PHANTRAM BETWEEN 5 AND 100) ) Ho#c ñ*u tiên t o b ng có c u trúc ñơn gi n và sau ñó thêm vào các ràng bu c toàn v!n d li u. CREATE TABLE VATTU ( MAVTU CHAR(4) NOT NULL, TENVTU CHAR(3) NOT NULL, DVTINH CHAR(10) NOT NULL, PHANTRAM TINYINT ) GO ALTER TABLE VATTU6 ADD CONSTRAINT PRK_VATTU_MAVTU6 PRIMARY KEY(MAVTU), CONSTRAINT DEF_VATTU_PHANTRAM DEFAULT 20 FOR PHANTRAM, CONSTRAINT UNQ_VATTU_TENVTU UNIQUE(TENVTU), CONSTRAINT CHK_VATTU_PHANTRAM CHECK (PHANTRAM BETWEEN 5 AND 100) B ng NHACC có các quy t c ki m tra toàn v!n d li u: • Khóa chính là c t mã nhà cung c p. • Giá tr d li u duy nh t t i c t ñ a ch(. • Giá tr m#c ñ nh cho c t ñi n tho i là "Chưa có". Gi ng viên: Th.S Nguy n Trí Nhân. 83. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(85)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. CREATE TABLE NHACC ( MANHACC CHAR(3) NOT NULL, TENNHACC CHAR(30) NOT NULL, DIACHI VARCHAR(50) NOT NULL, DIENTHOAI CHAR(15) NOT NULL CONSTRAINT DEF_NHACC_DIENTHOAI DEFAULT 'Chưa có', CONSTRAINT PRK_NHACC_MANHACC PRIMARY KEY (MANHACC), CONSTRAINT UNQ_NHACC_DIACHI UNIQUE(DIACHI) ) Ho#c ñ*u tiên t o b ng có c u trúc ñơn gi n và sau ñó thêm vào các ràng bu c toàn v!n d li u. CREATE TABLE NHACC ( MANHACC CHAR(3) NOT NULL, TENNHACC CHAR(30) NOT NULL, DIACHI VARCHAR(50) NOT NULL, DIENTHOAI CHAR(15) NOT NULL ) GO ALTER TABLE NHACC ADD CONSTRAINT PRK_NHACC_MANHACC PRIMARY KEY (MANHACC), CONSTRAINT DEF_NHACC_DIENTHOAI DEFAULT 'Chưa có' FOR DIENTHOAI, CONSTRAINT UNQ_NHACC_DIACHI UNIQUE(DIACHI) B ng DONDH có các quy t c ki m tra toàn v!n d li u: • Khóa chính là c t s ñơn ñ#t hàng. • Giá tr m#c ñ nh cho các c t ngày ñ#t hàng và ngày d$ ki n nh n hàng là ngày hi n hành. • Ngày d$ ki n nh n hàng ph i sau ngày ñ#t hàng. Gi ng viên: Th.S Nguy n Trí Nhân. 84. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(86)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. • Ki m tra tính t n t i d li u c a c t mã nhà cung c p bên b ng NHACC. CREATE TABLE DONDH ( SODH CHAR(4), NGAYDH DATETIME NOT NULL CONSTRAINT DEF_DONDH_NGAYDH DEFAULT GETDATE(), NGAYDKNH DATETIME NOT NULL CONSTRAINT DEF_DONDH_NGAYDKNH DEFAULT GETDATE(), MANHACC CHAR(3) NOT NULL CONSTRAINT PRK_DONDH_SODH PRIMARY KEY(SODH), CONSTRAINT CHK_DONDH_NGAYDKNH CHECK (NGAYDH<=NGAYDKNH), CONSTRAINT FRK_DONDH_MANHACC FOREIGN KEY (MANHACC) REFERENCES NHACC(MANHACC) ) Ho#c ñ*u tiên t o b ng có c u trúc ñơn gi n và sau ñó thêm vào các ràng bu c toàn v!n d li u. CREATE TABLE DONDH ( SODH CHAR(4), NGAYDH DATETIME NOT NULL, NGAYDKNH DATETIME NOT NULL, MANHACC CHAR(3) NOT NULL ) GO ALTER TABLE DONDH ADD CONSTRAINT PRK_DONDH_SODH PRIMARY KEY(SODH), CONSTRAINT DEF_DONDH_NGAYDH DEFAULT GETDATE() FOR NGAYDH, CONSTRAINT DEF_DONDH_NGAYDKNH DEFAULT GETDATE()FOR NGAYDKNH, CONSTRAINT CHK_DONDH_NGAYDKNH CHECK (NGAYDH<=NGAYDKNH), Gi ng viên: Th.S Nguy n Trí Nhân. 85. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(87)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. CONSTRAINT FRK_DONDH_MANHACC FOREIGN KEY (MANHACC) REFERENCES NHACC(MANHACC) B ng CTDONDH có các quy t c ki m tra toàn v!n d li u: • Khóa chính là c t s ñ#t hàng và mã v t tư. • Giá tr m#c ñ nh cho c t s lư ng ñ#t là 10. • Ki m tra ph m vi giá tr c a s lư ng ñ#t t% 10 ñ n 50. • Ki m tra tính t n t i d li u c a c t s ñ#t hàng trong b ng DONDH và c t mã v t tư trong b ng VATTU. CREATE TABLE CTDONDH ( SODH CHAR(4), MAVTU CHAR(4), SLDAT SMALLINT CONSTRAINT DEF_CTDONDH_SLDAT DEFAULT 10, CONSTRAINT PRK_CTDONDH_SODH PRIMARY KEY(SODH, MAVTU), CONSTRAINT FRK_CTDONDH_SODH FOREIGN KEY (SODH) REFERENCES DONDH(SODH), CONSTRAINT FRK_CTDONDH_MAVTU FOREIGN KEY (MAVTU) REFERENCES VATTU(MAVTU), CONSTRAINT CHK_CTDONDH_SLDAT CHECK(SLDAT BETWEEN 10 AND 50) ) Ho#c ñ*u tiên t o b ng có c u trúc ñơn gi n và sau ñó thêm vào các ràng bu c toàn v!n d li u. CREATE TABLE CTDONDH ( SODH CHAR(4), MAVTU CHAR(4), SLDAT SMALLINT ) GO ALTER TABLE CTDONDH ADD Gi ng viên: Th.S Nguy n Trí Nhân. 86. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(88)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. CONSTRAINT DEF_CTDONDH_SLDAT DEFAULT 10 FOR SLDAT, CONSTRAINT PRK_CTDONDH_SODH PRIMARY KEY(SODH, MAVTU), CONSTRAINT FRK_CTDONDH_SODH FOREIGN KEY (SODH) REFERENCES DONDH(SODH), CONSTRAINT FRK_CTDONDH_MAVTU FOREIGN KEY (MAVTU) REFERENCES VATTY(MAVTU), CONSTRAINT CHK_CTDONDH_SLDAT CHECK(SLDAT BETWEEN 10 AND 50) Lưu ý: Khi th$c hi n t o b ng có c u trúc ñơn gi n và sau ñó thêm vào các ràng bu c toàn v n d li u thì b n ph i luôn luôn thêm t khóa NOT NULL phía sau các c t tham gia làm khóa chính c a b ng khi t o c u trúc b ng l nh CREATE TABLE. 4.4.1.5. Hủy bỏ constraint đã có trong bảng: V i cú pháp ALTER TABLE bên dư i cho phép b n h y b các quy t c ki m tra tòan v!n d li u thông qua các ñ i tư ng constraint có bên trong b ng ñã t o trư c ñó. Các quy t c mà b n h y b s" không còn th$c hi n vi c ki m tra tính toàn v!n d li u bên trong c a b ng cho ñ n khi b n ph i t o m i l i nó. Mu n h y b ñư c các ñ i tư ng constraint b t bu c b n ph i ghi nh ñư c tên c a các constraint lúc t o ra nó. Ho#c xem l i trong màn hình thu c tính c a b ng. Do v y khi t o ra các quy t c ñ ki m tra các ràng bu c toàn v!n d li u b n nên ch ñ ng ñ#t tên cho các ñ i tư ng constraint bên trong cơ s d li u Microsoft SQL Server. Cú pháp:. Trong ñó: • Tên constraint: ph i t n t i trong cơ s d li u mà b n mu n h y b . Do ñó ñ i v i tên c a các constraint mà b n ch ñ ng ñ#t khi s d ng t% khóa CONSTRAINT thì s" giúp b n dA dàng g i nh hơn tên c a các constraint do h th ng t$ ñ#t. Ví d;: H y b quy t c ki m tra s lư ng ñ#t hàng trong b ng CTDONDH có gi i h n t% 10 ñ n 50. ALTER TABLE CTDONDH DROP CONSTRAINT CHK_CTDONDH_SLDAT. Gi ng viên: Th.S Nguy n Trí Nhân. 87. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(89)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 4.5.. TẠO MỘ MỘT DATABASE DIAGRAM Đ i v i ngư i s d ng ñã quen thu c v i lo i cơ s d li u Microsoft Access, màn hình Relationship trong Microsoft Access s" giúp cho b n hi n th và t o l p các m i quan h d li u gi a các b ng trong t p tin cơ s d li u MDB. 4.5.1. Khái niệm về mô hình quan hệ dữ liệu: Th$c ra vi c t o m i quan h gi a các b ng là nh)m trao ñ i và chia s= thông tin qua l i gi a các b ng v i nhau, ñ ng th i cũng giúp ki m tra tính t n t i d li u (khóa ngo i). Riêng trong môi trư ng cơ s d li u c a Microsoft SQL Server khi ñ n giai ño n này thì b n ch( bi t ñư c vi c t o c u trúc các b ng có th t o thêm các m i quan h d li u ng*m ñ nh gi a các b ng thông qua quy t c ki m tra ràng bu c v khóa ngo i (foreign key constraint). Tuy nhiên các m i quan h này không th hi n m t cách tr$c quan ñ giúp cho ngư i s d ng dA dàng quan sát. Th y ñư c s$ thi u sót này trong các phiên b n cũ trư c ñây. Vì th k t% phiên b n 7.0 tr lên, Microsoft ñã ñưa m t ñ i tư ng m i trong cơ s d li u c a Microsoft SQL Server, ñó chính là ñ i tư ng mô hình quan h d li u (diagram). Trong mô hình quan h d li u này, b n có th dA dàng nhìn th y m i quan h d li u gi a các b ng có liên quan v i nhau, th$c hi n m t s các hành ñ ng tác ñ ng tr$c ti p ngay trong các b ng như là t o c u trúc b ng m i, xóa c u trúc b ng ñã có, ch( ñ nh khóa chính cho b ng, thêm các b ng hi n có vào bên trong mô hình quan h d li u. 4.5.2. Tạo mới mô hình quan hệ dữ liệu: Đ i tư ng mô hình quan h d li u ch( ñư c t o ra và hi n th trong ti n ích Enterprise Manager nh)m h th ng Microsoft SQL Server ki m tra các ràng bu c d li u khóa ngo i trong cơ s d li u và giúp cho ngư i dùng dA dàng th y ñư c các m i liên k t d li u gi a các b ng m t cách tr$c quan hơn. Thông thư ng các m i k t h p bên trong mô hình quan h d li u s" ñư c t$ ñ ng t o ra khi b n chèn các b ng vào mô hình này. Đ t o m i mô hình quan h d li u trong m t cơ s d li u b n l*n lư t th$c hi n các bư c sau: • Bư.c 1: Kh i ñ ng ti n ích Enterprise Manager, ch n cơ s d li u có ch a các b ng c*n t o m i mô hình quan h d li u. Ch n ch c năng New Database Diagram trong th$c ñơn t t sau khi click chu t ph i trên ñ i tư ng Diagrams.. Gi ng viên: Th.S Nguy n Trí Nhân. 88. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(90)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 4.6.. B c Cao Đ ng Công ngh Thông tin. T o m i mô hình quan h d li u. • Bư.c 2: Trong màn hình Welcome vi c t o m i mô hình quan h d li u b)ng trình tr giúp thông minh, h th ng hi n th cho b n bi t các bư c s" th$c hi n trong quá trình t o m i mô hình quan h d li u. Nh n Next ñ ti p t c.. Hình 4.7.. Màn hình t o m i mô hình quan h d li u. Gi ng viên: Th.S Nguy n Trí Nhân. 89. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(91)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. • Bư.c 3: Trong màn hình ch n các b ng (Select Tables), l*n lư t ch n các b ng trong danh sách b ng ñang có trong cơ s d li u (Available tables)) mà b n mu n ñưa chúng vào mô hình quan h d li u, sau ñó nh n Add. Nh n Next ñ ti p t c.. Hình 4.8.. Ch n các b ng ñưa vào mô hình quan h d li u. Ngư c l i khi mu n b ñi các b ng có trong mô hình quan h d li u thì b n s" nh n vào nút Remove sau khi ñã ch n các b ng c*n xóa trong danh sách bên ph i (Tables to add to diagram). • Bư.c 4: Trong màn hình k t thúc (Completing) h th ng s" hi n th danh sách các b ng mà b n ñã ch n bư c 3, các b ng này s" xu t hi n ñ*y ñ trong mô hình quan h d li u. N u b n th y còn thi u b ng nào c*n b sung thêm thì b n có th nh n nút Back ñ quay l i bư c 3. Nh n nút Finish ñ k t thúc quá trình t o m i mô hình quan h d li u.. Gi ng viên: Th.S Nguy n Trí Nhân. 90. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(92)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 4.9.. B c Cao Đ ng Công ngh Thông tin. K t thúc quá trình t o m i mô hình quan h d li u. Sau m t th i gian ng n, h th ng s" t$ ñ ng t o ra các m i liên k t gi a các b ng ñã ch n và s p x p vào bên trong mô hình quan h d li u. Bên trong cơ s d li u Microsoft SQL Server, m t mô hình quan h d li u ñã ñư c t o l p theo mô hình bên dư i.. Hình 4.10.. M i liên k t gi a các b ng trong mô hình quan h d li u. Cu i cùng b n nh n vào bi u tư ng nút Save trên thanh công c và gõ vào tên c a mô hình quan h d li u dùng ñ lưu l i mô hình quan h d li u v%a m i t o các bư c trên.. Hình 4.11. Gi ng viên: Th.S Nguy n Trí Nhân. Nh p tên mô hình quan h d li u 91. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(93)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 4.6. BÀI TẬ TẬP THỰ THỰC HÀNH 1. T o các b ng dư i ñây b)ng công c trên giao di n ho#c b)ng câu l nh SQL B ng danh m;c ñ+i tư)ng (Lưu khách hàng ho0c nhà cung c:p) Tên b ng: DMDT Khóa chính: Ma_Dt Stt Trư1ng Ki'u & ñ> r>ng DiBn gi i 1. Id. Int. Trư ng tăng t$ ñ ng, xác ñ nh b n ghi duy nh t. 2. Ma_Dt. Nchar(16). Trư ng khóa, lưu mã ñ i tư ng. 3. Ten_Dt. Nvarchar(96). Tên ñ i tư ng. 4. Dia_Chi. Nvarchar(64). Đ a ch(. 5. So_Dt. char(20). S ñi n tho i. 6. Fax. char(20). S Fax. 7. Email. Nvarchar(64). Thư ñi n t. 8 Ghi_Chu Ntext Thông tin ghi chú B ng danh m;c v t tư Tên b ng: DMVT Khóa chính: Ma_Vt Stt Trư1ng Ki'u & ñ> r>ng. DiBn gi i. 1. Id. Int. Trư ng tăng t$ ñ ng, xác ñ nh b n ghi duy nh t. 2. Ma_Vt. Nchar(16). Trư ng khóa, lưu mã v t tư, hàng hóa. 3. Ten_Vt. Nvarchar(96). Tên v t tư hàng hóa. 4. Dvt. Nvarchar(10). Đơn v tính. 5. Quy_Cach. Nvarchar(96). Quy cách s n ph'm. 6 Ghi_Chu Ntext B ng danh m;c kho Tên b ng: DMKHO Khóa chính: Ma_Kho Ki'u & ñ> Stt Trư1ng r>ng. Thông tin ghi chú. DiBn gi i. 1. Id. Int. Trư ng tăng t$ ñ ng, xác ñ nh b n ghi duy nh t. 2. Ma_Kho. Nchar(16). Trư ng khóa, lưu mã kho. 3. Ten_Kho. Nvarchar(96) Tên kho hàng. Gi ng viên: Th.S Nguy n Trí Nhân. 92. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(94)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 4 Ghi_Chu Ntext Thông tin ghi chú B ng tCn kho ñ u kỳ Tên b ng: TONDK Khóa chính: Id Stt Trư1ng Ki'u & ñ> r>ng. DiBn gi i. 1. Id. Int. Trư ng tăng t$ ñ ng, xác ñ nh b n ghi duy nh t. 2. Ma_Kho. Nchar(16). Mã kho t n. 3. Ma_Vt. Nchar(16). Mã v t tư hàng hóa t n kho. 4. So_Luong Numeric(15, 3). S lư ng t n. 5. Don_Gia. Giá t n kho. Numeric(18, 0). 6 Ghi_Chu Ntext B ng ch3ng t< Tên b ng: CT Khóa chính: Stt_Ct Stt Trư1ng Ki'u & ñ> r>ng. Thông tin ghi chú. DiBn gi i. 1. Stt_Ct. Char(10). Là trư ng khóa chính lưu s th t$ ch ng t%. 2. Ma_Ct. Char(3). Mã ch ng t% (PX, PN). 3. Nhom_Ct. Tinyint. Nhóm ch ng t% (1: Nh p, 2: Xu t). 4. So_Ct. Char(10). S ch ng t%. 5. Ngay_Ct. DateTime. Ngày ch ng t%. 6. Ma_Dt. Char(16). Mã khách hàng ho#c nhà cung c p. 7. Ong_Ba. Nvarchar(32). Ngư i th$c hi n ch ng t%. 8. Dia_Chi. Nvarchar(96). Đ a ch(. 9. Dien_Giai Nvarchar(128). DiAn gi i ch ng t%. 10. Dia_Diem Nvarchar(96). Đ a ñi m nh p, xu t hàng. B ng ch3ng t< chi ti4t Tên b ng: CTCT Khóa chính: Stt_Ct, Stt_Dong Stt. Trư1ng. Ki'u & ñ> r>ng. DiBn gi i. 1. Stt_Ct. Char(10). Là trư ng khóa chính lưu s th t$ ch ng t%. 2. Stt_Dong. Char(3). S th t$ t%ng dòng chi ti t ch ng t%. Gi ng viên: Th.S Nguy n Trí Nhân. 93. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(95)</span> B c Cao Đ ng Công ngh Thông tin. Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. 3. Ma_Vt. Nchar(16). Mã v t tư hàng hóa. 4. So_Luong Numeric(15, 3). S lư ng v t tư hàng hóa nh p, xu t. 5. Don_Gia. Numeric(18, 0). Đơn giá. 6. Ma_Kho. Numeric(18, 0). Mã kho nh p, xu t v t tư hàng hóa. 2. Thêm các d li u m9u dư i ñây vào b ng tương ng B ng tCn kho ñ u kỳ (TONDK) Id. Ma_Vt. Ma_Kho. So_Luong. Don_Gia Ghi_Chu. 1. TP001. KTP. 10. 125.000. 2. VT004. KVT. 20. 75.000. 3. VT003. KVT. 4. 110.000. B ng danh m;c ñ+i tư)ng (DMDT) Id. Ma_D t. Ten_Dt. Dia_Chi. So_Dt. 1. N001. Cty TNHH ABC. Hà N i. 04 3640 0119. 3. N002. Cty C ph*n CB th$c ph'm mi n b c. Hà N i. 046 3423 3438. 4. N003. Cty liên doanh Vi t Pháp. H i Phòng. 033 6534 391. 5. N004. Cty TNHH m t thành viên c p nư c Yên Bái. Yên Bái. 02183 543 443. 6. N005. Cty C ph*n L c H ng. B c Ninh. 0240 362 552. 7. N006. Cty XNK Á Châu. H i Dương. 0320 3111 411. Fax. B ng danh m;c v t tư, hàng hóa (DMVT) Id. Ma_Vt. Ten_Vt. 1. TP001. Bánh tr ng Custas. H p. H p 20 cái. 2. TP002. Bánh kem x p. Gói. Gói 200 gram. 3. VT001. B t mì lo i 1. Kg. 4. VT002. Hương li u. Kg. Gi ng viên: Th.S Nguy n Trí Nhân. Dvt. 94. Quy_Cach. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng. Email.
<span class='text_page_counter'>(96)</span> B c Cao Đ ng Công ngh Thông tin. Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. 5. VT003. B tn. Kg. 6. TP003. Bánh kem bơ. Gói. Gói 150 gram. 7. TP004. Bánh Socola Vinasun. H p. H p 6 cái. 8. VT004. Socola nguyên li u. Kg. 9. VT005. S a ông th. Thùng. B ng ch3ng t< (CT) Stt Ct. Ma_Ct. Nhom_Ct. 1. PX. 2. So_Ct. Ngay_Ct. Ma_Dt. 1. PX001. 31/05/1 1. N001. PX. 1. PX002. 01/06/1 1. 3. PN. 2. PN001. 4. PX. 1. 5. PN. 6. PX. Ong_Ba. Dia_Chi. Dien_Giai. Lê Văn Khương. Hà N i. Xu t hàng hóa bán ñ i lý. N001. Đào Th H nh. Hà N i. Xu t hàng hóa bán ñ i lý. 01/06/1 1. N002. T Thu Loan. Công ty. Nh p v t tư ph c v s n xu t. PX003. 01/06/1 1. N004. Phan Th Anh. Hà N i. Xu t bán hàng hóa. 2. PN002. 02/06/1 1. N005. T Th Minh. Hà Tây Nh p nguyên li u. 1. PX004. 05/06/1 1. N004. Phan Th Anh. Hà N i. Xu t bán hàng hóa. B ng chi ti4t ch3ng t< (CTCT) Stt_Dong Stt_Ct. Ma_Vt. Ma_Kho. So_Luong. Don_Gia. 1. 1. TP001. KTP. 120.000. 120,00. 2. 1. TP002. KTP. 23.500. 45,00. 1. 2. TP001. KTP. 11.500. 35,00. 1. 3. VT001. KVT. 30.000. 120,00. 2. 3. VT002. KVT. 120.000. 15,00. 1. 4. TP001. KTP. 110.000. 75,00. 2. 4. TP004. KTP. 34.000. 44,00. 1. 5. VT004. KVT. 75.000. 30,00. 2. 5. VT001. KVT. 31.000. 32,00. Gi ng viên: Th.S Nguy n Trí Nhân. 95. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(97)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. 3. 5. VT003. Gi ng viên: Th.S Nguy n Trí Nhân. KVT. 96. B c Cao Đ ng Công ngh Thông tin. 120.000. 56,00. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(98)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Chương 5. 5. TẠ TẠO VIEW (BẢ (BẢNG ẢO) 5.1. 5.1.. KHÁI NIỆ NIỆM VIEW B ng o th$c ch t là m t ñ i tư ng mà bên trong nó ch( lưu tr duy nh t m t câu l nh SELECT dùng ñ ch( ñ nh các c t, các dòng d li u bên dư i các b ng d li u mà nó ch n l$a ra ñ hi n th cho ngư i s d ng xem ho#c c p nh t. V i nguyên t c này, b n có th hi n th ra ñúng các thông tin t i thi u mà ngư i s d ng c*n dùng, không c*n thi t ph i hi n th ra t t c các thông tin hi n ñang ñư c lưu tr bên trong b ng (ñáp ng ñư c tính b o m t thông tin). Ngoài ra còn giúp nh ng ngư i s d ng dA dàng truy xu t ñ n các thông tin mà h ñang c*n, khi ñó ñơn gi n s" thông qua vi c th$c hi n các truy v n tr$c ti p ñ n các b ng o mà không c*n quan tâm các thông tin này ñang ñư c lưu tr trong nh ng b ng d li u nào (ñáp ng ñư c tính dA s d ng). Trong th$c t , b n thư ng t o ra các b ng o ñ lưu tr các thông tin cho các lo i báo cáo ñơn gi n ho#c d li u c a các màn hình nh p li u ph c t o có liên k t d li u v i nhi u b ng khác ho#c các màn hình tra c u thông tin cho các ngư i s d ng. Lưu ý: B ng o hoàn toàn không lưu tr d li u m t cách riêng l=. Các d li u ñư c hi n th trong b ng o s" ñư c l y t% bên dư i d li u c a các b ng cơ s (underlying table) trong cơ s d li u hi n hành. Tuy nhiên b n v9n có th c p nh t (thêm, s a, xóa) d li u trong các b ng o như là ñang c p nh t d li u trong các b ng cơ s . 5.2. 5.2. SỬ DỤNG T – SQL Cú pháp:. Trong ñó: • Tên b ng o: tên c a b ng o mu n t o m i. • Tên các c>t: danh sách tên các c t s" ñư c s d ng v sau bên trong b ng o khi tham chi u ñ n các c t trong b ng o. Thông thư ng ñư c s d ng trong b ng o có s d ng các hàm tính toán, các bi u th c tính toán, ho#c các c t trùng tên trong các b ng khác nhau.. Gi ng viên: Th.S Nguy n Trí Nhân. 97. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(99)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. • T< khóa WITH ENCRYPTION: dùng ñ mã hóa n i dung câu l nh SELECT bên trong b ng o. Không ai có th bi t ñư c n i dung c a câu l nh SELECT trong b ng o là gì. • Câu l,nh SELECT: câu l nh truy v n ch n l$a d li u t% m t ho#c nhi u b ng có liên k t ñ hi n th d li u trong b ng o. M t s t% khóa có trong câu l nh SELECT chu'n s" không ñư c dùng kèm theo trong khi t o b ng o như là: ORDER BY (dùng ñ s p x p d li u), COMPUTE (th ng kê d li u cu i cùng), COMPUTE BY (th ng kê d li u theo t%ng nhóm), SELECT INFO (sao chép c u trúc và d li u sang b ng d li u m i). Thông thư ng b n nên th$c hi n câu l nh SELECT này trư c ñ xem k t qu ñúng như mong mu n hay không trư c khi ñưa nó l ng vào câu l nh CREATE VIEW. • T< khóa WITH CHECK OPTION: dùng ñ ngăn c n các thao tác c p nh t d li u (thêm, s a) tác ñ ng tr$c ti p vào b ng o có làm nh hư ng ñ n d li u ñ i v i các b ng o có s d ng m nh ñ WHERE trong câu l nh SELECT. Ví d : Đ t o b ng o ñơn gi n có tên là vw_DONDH_NHACC dùng ñ hi n th thông tin t t c các c t trong b ng DONDH (ñơn ñ#t hàng) và hai c t ñ a ch( và tên nhà cung c p trong b ng NHACCAP (nhà cung c p), b n th$c hi n câu l nh CREATE VIEW như sau: CREATE view vw_DONDH_NHACC1 as Select DonDH.*, NhaCCAP.DiaChi As [Đ a ch ], NhaCCAP.HoTenNCC as [Tên Nhà cung c p] from DonDh inner join NhaCCAP on DonDh.MaNhaCC = NhaCCAP.MaNhaCc Khi mu n xem n i dung c a câu l nh SELECT bên trong b ng o, b n có th s d ng Procdure Store h th ng có tên sp_helptext ñ xem, cú pháp c a nó khá ñơn gi n ñư c minh h a tr$c ti p b)ng ví d bên dư i. Ví d : Đ xem n i dung câu l nh SELECT c a b ng o v%a ñư c t o ví d trên, b n g i th$c hi n th t c h th ng sp_helptext như sau: EXEC SP_HELPTEXT VW_DONDH_NHACCAP Ho#c EXEC SP_HELPTEXT VW_DONDH_NHACCAP K t qu tr v :. Gi ng viên: Th.S Nguy n Trí Nhân. 98. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(100)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Hình 5.1. K t qu th$c thi xem câu l nh SELECT Tuy nhiên khi b n s d ng t% khóa WITH ENCRYPTION bên trong câu l nh CREATE VIEW lúc t o ra b ng o thì khi ñó n i dung c a câu l nh SELECT s" ñư c mã hóa và b n không th nào xem ñư c n i dung c a câu l nh SELECT cho ñ n khi ph i h y b và t o l i b ng b o b)ng l nh CREATE VIEW mà không s d ng t% khóa WITH ENCRYPTION. Ví d : Đ t o b ng o có tên là vw_DONDH_NHACC gi ng ví d trên nhưng có b sung thêm c t ñi n tho i và t% khóa WITH ENCRYPTION ñ ch ñ ng mã hóa n i dung câu l nh SELECT bên trong b ng o, b n th$c hi n câu l nh như sau: DROP VIEW VW_DONDH_NHACCAP GO create view vw_DONDH_NHACCAP WITH ENCRYPTION as Select DonDH.*, NhaCCAP.DiaChi As [Đ a ch ], Dienthoai As [Đi n tho i], NhaCCAP.HoTenNCC as [Tên Nhà cung c p] from DonDh inner join NhaCCAP on DonDh.MaNhaCC = NhaCCAP.MaNhaCc Sau ñó th$c hi n l i câu l nh ñ xem n i dung câu l nh SELECT bên trong b ng o. EXEC SP_HELPTEXT VW_DONDH_NHACCAP Gi ng viên: Th.S Nguy n Trí Nhân. 99. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(101)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. K t qu tr v là m t thông báo: "N i dung ñ i tư ng ñã ñư c mã hóa". Khi th$c hi n các b ng o dùng ñ tính toán d li u cho các th ng kê, b n thư ng s d ng các hàm tính toán SUM, MIN, MAX, COUNT, AVG ñi kèm theo câu l nh SELECT. Tuy nhiên d li u c a các b ng o d ng này ch( có tính ch t th ng kê ho#c hi n th d li u cho ngư i s d ng xem mà không cho phép các hành ñ ng c p nh t d li u tr$c ti p ngay trên b ng o. Đ ch( ñ nh ñ n các c t d li u t ng h p này b n có th s d ng hai cách: ho#c ñ#t tên các c t ngay sau l nh CREATE VIEW ho#c s d ng bí danh ñ ch( tên c t trong câu l nh SELECT. Ví d : Đ t o m t b ng o có tên là vw_TINH_TONGSLDAT dùng ñ tính t ng s lư ng ñ#t hàng c a các v t tư. D li u hi n th g m các c t: mã v t tư, tên v t tư và t ng s lư ng ñ#t, b n th$c hi n câu l nh CREATE VIEW ñ t o b ng o như sau: CREATE VIEW vw_TinhSLDAT(MaVTu, TenVtu, TongSlDat) as SELECT CTDH.MaVTu, TenVtu, SUM(SlDat) From CTDONDH CTDH INNER JOIN VATTU VT ON CTDH.MAVTU = VT.MAVTU GROUP BY CTDH.MaVtu, tenVTu Ho#c create view vw_TinhSLDAT as Select CTDH.MaVTu, TenVtu, SUM(SlDat)As Tong_sldat From CTDONDH CTDH INNER JOIN VATTU VT ON CTDH.MAVTU = VT.MAVTU GROUP BY CTDH.MaVtu, TenVTu Đ hi u rõ v t% khóa WITH CHECK OPTION bên trong câu l nh CREATE VIEW, b n xem xét các ví d bên dư i: Ví d : Đ t o m t b ng o có tên là vw_VATTU_TIVI g m các c t d li u c a b ng VATTU: mã v t tư, tên v t tư, ñơn v tính nhưng các dòng d li u ch( l c ra các lo i hàng ti vi. B n th$c hi n câu l nh CREATE VIEW như sau: CREATE VIEW vw_VATTU_TIVI as Select MaVTu, TenVtu, DVTinh From VATTU WHERE MaVTu Like 'TV%' Go Gi ng viên: Th.S Nguy n Trí Nhân. 100. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(102)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. K ti p b n s d ng l nh INSERT ñ thêm m t hàng hóa m i thu c lo i máy hát nh c vào b ng o. Câu l nh này ñư c th$c hi n thành công. INSERT INTO VW_VATTU_TIVI VALUES ('MH01','Máy hát Sony ñ i IK-2002','B ') Nhưng khi xem l i d li u c a b ng o b)ng câu l nh SELECT bên dư i b n s" ng c nhiên vì khi ñó s" không th y hi n th c a m9u tin v%a thêm m i trên. SELECT * FROM VW_VATTU_TIVI Tuy nhiên khi xem d li u c a b ng VATTU, b n v9n th y r)ng d li u ñã ñư c lưu tr bên dư i b ng VATTU. SELECT * FROM VATTU Đi u này s" làm cho m t s ngư i s d ng r t khó hi u. Lý do mà d li u không ñư c hi n th bên trong b ng o b i vì m9u tin mà b n thêm vào ñã không th a ñi u ki n l c bên trong m nh ñ WHERE c a câu l nh SELECT trong b ng o. (mã c a hàng hóa m i thêm vào không b t ñ*u b)ng ch TV mà là ch MH). Do ñó ñ tránh nh ng hành ñ ng có th làm cho ngư i s d ng khó hi u, Microsoft SQL Server cho phép b n ngăn c n các m9u tin không th a ñi u ki n WHERE ñư c c p nh t vào b ng o b)ng m nh ñ WITH CHECK OPTION. Tr l i ví d trên nhưng bây gi b n có thêm t% khóa WITH CHECK OPTION trong câu l nh t o ra b ng o. Drop View vw_VatTu_TiVi go create view vw_VatTu_TiVi As Select MaVTu, TenVTu, DVTinh From VatTu Where MaVTu Like 'TV%' With Check Option K ti p khi b n s d ng l nh INSERT ñ thêm m t hàng hóa m i thu c tho i máy hát nh c vào b ng o. insert into vw_VatTu_TiVi Values('MH02', 'Máy hát Sony ñ i AK - 2002', 'B ') Ho#c s a ñ i mã c a hàng hóa ti vi Sony 14 inches thành "TI14’ b)ng câu l nh UPDATE như bên dư i. Update vw_VATTU_TIVI SET Mavtu = ‘TI14’ WHERE Mavtu = ‘TV14’. Gi ng viên: Th.S Nguy n Trí Nhân. 101. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(103)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. M#c dù d li u và cú pháp các câu l nh này hoàn toàn ñúng nhưng nó s" không ñư c th$c hi n thành công b i vì mã v t tư c a nó ñã vi ph m m nh ñ WHERE (không b t ñ*u b)ng ch TV). Tóm l i: khi s d ng m nh ñ WITH CHECK OPTION trong câu l nh CREATE VIEW dùng ñ ngăn c n các hành ñ ng c p nh t d li u trong b ng o không th a ñi u ki n trong m nh ñ WHERE c a câu l nh SELECT. 5.3. 5.3. SỬ DỤNG ENTERPRISE MANAGER Đ t o b ng o, b n có th s d ng ti n ích Enterprise Manager. Các bư c t o b ng o như sau: Bư.c 1: Kh i ñ ng ti n ích Enterprise Manager. Ch n ch c năng New View … trong th$c ñơn t t sau khi nh n chu t ph i trên ñ i tư ng Views.. Hình 5.2.. T o m i b ng o trong Enterprise Manager. Bư.c 2: Trong màn hình thi t k d li u b ng o, nh n vào bi u tư ng Add Table trên thanh công c ñ ñưa các b ng d li u làm d li u ngu n cho b ng o.. Gi ng viên: Th.S Nguy n Trí Nhân. 102. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(104)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 5.3.. B c Cao Đ ng Công ngh Thông tin. Thi t k d li u b ng o. Màn hình này có cách trình bày g*n gi ng như màn hình t o truy v n b)ng ví d (QBE – Query by Example) trong Microsoft Access, nó s" giúp cho b n phát sinh n i dung c a câu l nh SELECT b)ng các hành ñ ng kéo th chu t c a chính b n trên màn hình này. Bư.c 3: Trong màn hình ch n các d$ li u cho b ng o, b)ng cách ch n vào ô ki m tra (check box) phía trư c tên c a các c t ho#c thao tác kéo th (drag drop) ñ ch n các c t mu n hi n th d li u trong b ng o. S a l i bí danh (alias) các c t ñ g i nh .. Hình 5.4.. Ch( ñ nh các c t hi n th d li u bên trong b ng o. Gi ng viên: Th.S Nguy n Trí Nhân. 103. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(105)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Bư.c 4: Nh n vào bi u tư ng Save trên thanh công c và gõ vào tên c a b ng o, nh n OK ñ k t thúc quá trình t o b ng o b)ng ti n ích Enterprise Manager.. Hình 5.5.. Nh p tên b ng o mu n lưu l i. Sau khi t o xong b ng o, b n cũng có th quay l i ñ s a ñ i n i dung câu l nh SELECT trong b ng o b)ng cách ch n ch c năng Design View ñ quay l i màn hình thi t k d li u b ng o trư c ñó ho#c ch n ch c năng Properties ñ có th s a tr$c ti p câu l nh SELECT bên trong b ng o. Các ch c năng này hi n th trong th$c ñơn t t sau khi nh n chu t ph i trên tên c a b ng o c*n s a ñ i.. Hình 5.6.. Hi n th câu l nh SELECT trong b ng o. Gi ng viên: Th.S Nguy n Trí Nhân. 104. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(106)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 5.4. BÀI TẬ TẬP THỰ THỰC HÀNH 1. T o View th= kho (TheKhoView) v i các thông tin sau ñây: Ma_Ct, Nh_Ct, So_Ct, Ngay_Ct, Ma_Vt, Ten_Vt, Ma_Kho, Ten_Kho, So_Luong, Don_Gia, Thanh_Tien l y d li u t% b ng CT, CTCT và các b ng danh m c liên quan. 2. T o View nh t ký chung (NhatKyChungView) v i các thông tin sau ñây: Ma_Ct, Nh_Ct, So_Ct, Ngay_Ct, Ong_Ba, Dia_Chi, Dien_Giai, Ma_Dt, Ten_Dt, Ma_Vt, Ten_Ct, So_Luong, Don_Gia, Thanh_Tien, Ma_Kho, Ten_Kho. D li u l y t% b ng CT, CTCT và các b ng danh m c liên quan.. Gi ng viên: Th.S Nguy n Trí Nhân. 105. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(107)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Chương 6. STORE PROCEDURE 6.1. 6.1.. KHÁI NIỆ NIỆM STORE PROCEDURE Gi ng như ý nghĩa c a vi c s d ng th t c dùng chung trong nh ng ngôn ng l p trình khác, Procdure Store trong Microsoft SQL Server dùng ñ t o ra nh ng x lý thư ng dùng bên trong ng d ng và nh)m ñ chia nh các x lý theo mô hình thi t k x lý topdown, m t cách làm giúp chia nh m t x lý ph c t p thành các x lý nh d*n, ñơn gi n hóa các x lý ph c t p. 6.1.1. Thủ tục nội là gì ? Procdure Store th t s$ là m t t p h p ch a các dòng l nh, các bi n và các c u trúc ñi u khi n bên trong ngôn ng Transaction-SQL dùng ñ th$c hi n m t hành ñ ng nào ñó, t t c các n i dung c a Procdure Store s" ñư c lưu tr t i cơ s d li u c a Microsoft SQL Server. Các nét ñ#c trưng c a m t Procdure Store cũng hoàn toàn gi ng các th t c trong các ngôn ng l p trình khác: tên Procdure Store, tham s truy n giá tr vào và tham s ñón nh n giá tr tr ra. Ngoài ra bên trong m t Procdure Store b n cũng ñư c phép g i th$c thi m t Procdure Store khác ñã có trư c ñó. Ph m vi ho t ñ ng c a các Procdure Store do ngư i dùng t o ra ch( có tính c c b bên trong m t cơ s d li u lưu tr th t c ñó. M t nét riêng bi t c a Procdure Store là nó có th ñư c g i th$c hi n trong môi trư ng không ph i là Microsoft SQL Server. Khi xây d$ng giao di n màn hình trên các ngôn ng l p trình khác nhau, b n v9n có th g i th$c hi n các Procdure Store m t cách dA dàng. Ngoài ra do Procdure Store ñư c lưu tr v t lý trong cơ s d li u c a Microsoft SQL Server, nên các Procdure Store s" ñư c th$c thi khá nhanh b i vì n i dung bên trong Procdure Store ñã ñư c phân tích cú pháp các l nh khi chúng ñư c t o m i. L*n ñ*u tiên khi Procdure Store ñư c g i th$c hi n thì n i dung các l nh bên trong Procdure Store s" ñư c biên d ch và lưu l i trên b nh , k t% các l*n k ti p thì Procdure Store s" ñư c th$c thi càng nhanh hơn (vì các mã l nh ñã ñư c lưu l i trên b nh ). Đây cũng là m t trong nh ng lý do mà t i sao chúng ta nên s d ng Procdure Store trong Microsoft SQL Server ñ th$c thi các x lý tính toán. 6.1.2. Các Procdure Store hệ thống: Trong Microsoft SQL Server cung c p cho chúng ta m t s l n các Procdure Store h th ng dùng ñ th$c hi n các x lý trong vi c qu n tr cơ s d li u. M t Procdure Store h th ng luôn luôn ñư c b t ñ*u b)ng ch sp_ và h*u h t t t c các Procdure Store h th ng ñư c lưu tr bên trong cơ s d li u Master. Vi c làm quen và s d ng nhu*n nhuyAn các th t c h th ng s" giúp b n hi u rõ thêm v cách t ch c c u trúc các b ng h th ng bên dư i Microsoft SQL Server. Ngoài Gi ng viên: Th.S Nguy n Trí Nhân. 106. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(108)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. ra còn giúp b n bi t ñư c các x lý bí 'n bên dư i ti n ích Enterprise Manager sau khi b n th$c hi n các hành ñ ng ch n l$a trong ti n ích ñ h a này. Ví d : Có th t o m i m t ngư i dùng có tên là "TTTH", v i m t kh'u "T3HNVC" cho phép truy c p vào cơ s d li u NorthWind c a Microsoft SQL Server b)ng th t c h th ng sp_addlogin như sau: EXEC sp_addlogin 'TTTH', 'T3HNVC','NorthWind' Các bài liên quan ñ n Procdure Store h th ng ch( hư ng d9n b n th$c hi n vi c tri n khai m t cơ s d li u trong Microsoft SQL Server. Do ñó s" không ñ c p ñ n các Procdure Store h th ng c a Microsoft SQL Server mà ch( trình bày cách th c t o ra m t th t c do ngư i dùng ñ nh nghĩa ñ th$c hi n các x lý riêng bi t cho ng d ng c a b n. Trong các bài k ti p, khi ñ c p ñ n c m t% Procdure Store thì xem như nói ñ n các Procdure Store do ngư i dùng ñ nh nghĩa. 6.1.3. Các lợi ích khi sử dụng Procdure Store: Store Nên xem xét th t k? các l i ích khi s d ng Procdure Store ñư c mô t bên dư i ñ có th áp d ng vào ñúng các trư ng h p th$c t trong khi xây d$ng các ng d ng theo mô hình khách ch . • T+c ñ> x? lý c(a các Procdure Store sE r:t nhanh b i vì b n thân n i dung c a các Procdure Store ñư c lưu tr và th$c hi n ngay t i máy ch . Hơn th n a, các d li u cũng ñư c lưu tr trên cùng máy ch nên không c*n m t th i gian ñ truy n d li u qua h th ng m ng cho các x lý bên trong Procdure Store b i vì các x lý và d li u cùng ñư c lưu tr trên cùng m t v trí v t lý là máy ch . • Vi,c t8 ch3c và phân chia các x? lý thành hai nơi khác nhau: t i máy ch ho#c t i máy tr m s" giúp các b n có th làm gi m th i gian xây d$ng ng d ng. B i vì b n thân m t Procdure Store trong Microsoft SQL Server có th ñư c g i th$c thi nhi u l*n trên các màn hình khác nhau trong các ngôn ng l p trình khác nhau: Visual Basic, C++, Delphi, … • Gi+ng như nh9ng l)i ích khi s? d;ng ñ+i tư)ng b ng o (View): b n có th s d ng Procdure Store ñ phân c p quy n h n (security) cho nh ng ngư i s d ng v i các hành ñ ng c p nh t d li u như: thêm, s a, xóa d li u ho#c xem ch( có quy n xem n i dung c a các báo cáo. 6.2. 6.2. TẠO STORE PROCEDURE BẰ BẰNG LỆ LỆNH CREATE Gi ng như các ñ i tư ng khác trong Microsoft SQL Server ñã trình bày trư c ñây, b n có hai cách ñ có th t o m i m t Procdure Store. Các bư c bên dư i s" hư ng d9n các b n cách th c t o m i m t Procdure Store b)ng ti n ích Enterprise Manager. Bư.c 1:. Gi ng viên: Th.S Nguy n Trí Nhân. 107. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(109)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Kh i ñ ng ti n ích Enterprise Manager. Ch n ch c năng New Stored Procedure … trong th$c ñơn t t sau khi nh n chu t ph i trên ñ i tư ng Stored Procedures ñ t o m i m t Procdure Store ñơn gi n.. Hình 6.1.. H p tho i t o th t c trong Enterprise Manager. Bư.c 2: Trong màn hình ñ nh nghĩa Procdure Store m i, l*n lư t ch( ñ nh tên c a Procdure Store và các câu l nh c*n thi t bên trong n i dung c a Procdure Store dùng ñ x lý, tính toán theo m t yêu c*u c th nào ñó. Nh n vào nút Check Syntax ñ h th ng ki m tra Cú pháp các l nh bên trong Procdure Store có h p l hay không ? Sau cùng nh n nút OK ñ lưu l i n i dung c a Procdure Store v%a m i t o.. Hình 6.2. Gi ng viên: Th.S Nguy n Trí Nhân. H p tho i ki m tra th t c 108. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(110)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Nh n xét: Trong màn hình minh h a bên trên ph*n tên th t c và ph*n n i dung th t c ñư c ngăn cách nhau b i t% khóa AS. X lý bên trong th t c này dùng ñ tính ra tên c a v t tư nào kèm v i s lư ng v i doanh s bán ra là cao nh t. Ngoài ra b n cũng có th t o m i Procdure Store b)ng l nh CREATE PROCEDURE trong ti n ích Query Analyzer, cú pháp như sau: Cú pháp:. • Tên th( t;c: tên Procdure Store ñư c t o m i, tên Procdure Store này ph i là duy nh t trong m t cơ s d li u. • Bi4n c;c b>: là nh ng bi n c c b ñư c s d ng tính toán t m th i bên trong th t c, nh ng bi n này ch( có ph m vi c c b bên trong Procdure Store. • Các l,nh: các l nh bên trong Procdure Store dùng ñ x lý tính toán theo m t yêu c*u nào ñó. Ví d : Đ t o th t c tính ra v t tư nào có doanh s bán cao nh t trong tháng 01/2013. B n th$c hi n câu l nh CREATE PROCEDURE như sau: CREATE PROCEDURE spud_MaxSLVattu_201301 AS Declare @sTenVTu Char(50), @nMaxSL Int Select @sTenVTu = RTrim(TenVTu), @nMaxSL = SLXuat From CTPXuat CTPX INNER JOIN VATTU VT ON VT.MAVTU = CTPX.MAVTU JOIN PXUAT PX ON PX.SOPX = CTPX.SOPX WHERE CONVERT(CHAR(7), NGAYXUAT, 21) = '2013-01' AND SLXUAT = (SELECT MAX(SLXUAT) FROM CTPXUAT INNER JOIN PXUAT ON PXUAT.SOPX = CTPXUAT.SOPX Gi ng viên: Th.S Nguy n Trí Nhân. 109. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(111)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. WHERE CONVERT(CHAR(7), NGAYXUAT,21)= '2013-01') PRINT @sTenVTu + 'có doanh thu s bán cao nh t' PRINT 'V i s lư ng là:' + cast (@nMaxSL as Char(10)) Nh n xét: Trong ví d trên, có s d ng hai bi n c c b dùng ñ lưu tr tên c a v t tư có s lư ng bán ra nhi u nh t trong tháng 01/2013 sau ñó dùng nó ñ hi n th cu i th t c. 6.3. 6.3. THI HÀNH STORE PROCEDURE B n có th g i th$c hi n Procdure Store b)ng l nh EXECUTE trong ti n ích Query Analyzer. cú pháp bên dư i mô t vi c g i th$c hi n m t Procdure Store ñơn gi n, không có tham s g i vào ho#c ñón nh n giá tr tr v gì c . Cú pháp: EXEC[UTE] Tên_Th(_T;c Trong ñó: • Tên th( t;c: tên Procdure Store ñã ñư c t o trư c ñó mà b n mu n g i th$c thi. Ví d : Đ th$c hi n th t c spud_MaxSLVattu_201301 ñã ñư c t o ra trong ví d trư c ñó. B n th$c hi n l nh EXECUTE như sau: EXECUTE spud_MaxSLVattu_201301 K t qu tr v :. 6.4. 6.4. CÁC PHÁT BIỂ BIỂU ĐIỀ ĐIỀU KHIỂ KHIỂN 6.4.1. Biểu thức Case Các câu l,nh truy v:n d9 li,u – Bi'u th3c CASE Bi u th c CASE trong Transaction-SQL vô cùng h u ích. Ho t ñ ng c a bi u th c CASE r t ñơn gi n ch( là th$c hi n vi c so sánh m t bi u th c b t kỳ v i hàng lo t các giá tr ch( ñ nh trư c ñó, n u b n là ngư i l p trình trong môi trư ng Visual Basic thì bi u th c CASE c a Transaction-SQL g*n gi ng như c u trúc ñi u khi n Select Case. Tuy nhiên bi u th c CASE hoàn toàn không ph i là m t c u trúc ñi u khi n, ñi u này có nghĩa là nó ch( ñư c s d ng l ng vào các câu l nh khác mà không th th$c hi n ñơn l= như các c u trúc ñi u khi n khác. Bi u th c CASE có th s d ng hai d ng khác nhau. Cú pháp CASE d ng ñơn gi n:. Gi ng viên: Th.S Nguy n Trí Nhân. 110. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(112)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Trong ñó: • Bi'u th3c: bi u th c tính toán ho#c tên c t d li u c a b ng ñư c dùng ñ so sánh. • Giá tr6 1, giá tr6 2: là các giá tr c th ñ so sánh b)ng (=) v i bi u th c. • Bi'u th3c k4t qu 1, bi'u th3c k4t qu 2: là các bi u th c s" ñư c tr v khi vi c so sánh c a bi u th c b)ng v i các giá tr so sánh tương ng. • Bi'u th3c k4t qu N: là bi u th c s" ñư c tr v khi t t c các trư ng h p so sánh ñ u không b)ng v i các giá tr ñưa ra. Ví d : Đ hi n th danh sách các v t tư có trong b ng VATTU theo t%ng lo i hàng, có ñ m t ng s các v t tư theo t%ng lo i hàng. B n s d ng l nh SELECT FROM có k t h p bi u th c CASE ñơn gi n như sau: SELECT LOAI = CASE LEFT(MAVTU, 2) WHEN 'DD' THEN 'Đ u DVD' WHEN 'VD' THEN 'Đ u VCD' WHEN 'TV' THEN 'Ti vi' WHEN 'TL' THEN 'T laïnh' WHEN 'BI' THEN 'Bia lon' ELSE 'Chưa phân lo i' END, MAVTU, TENVTU, DVTINH FROM VATTU ORDER BY LEFT(MAVTU, 2) COMPUTE COUNT(MAVTU) BY LEFT(MAVTU,2) K t qu truy v n tr v :. Gi ng viên: Th.S Nguy n Trí Nhân. 111. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(113)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Cú pháp CASE d ng tìm ki m:. Trong ñó: • Bi'u th3c logic1, bi'u th3c logic2: là các bi u th c lu n lý dùng ñ th$c hi n các phép so sánh trong bi u th c CASE. • Bi'u th3c k4t qu 1, bi'u th3c k4t qu 2: là các bi u th c s" ñư c tr v khi m t trong các bi u th c lu n lý so sánh có k t qu là ñúng.. Gi ng viên: Th.S Nguy n Trí Nhân. 112. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(114)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. • Bi'u th3c k4t qu N: là bi u th c s" ñư c tr v khi t t c các bi u th c logic so sánh ñưa ra ñ u sai. Ví d : Đ hi n th danh sách các v t tư có trong b ng VATTU, thông tin b sung thêm chu<i ghi chú, tùy thu c vào giá tr c a c t tD l ph*n trăm giá bán. B n s d ng l nh SELECT FROM có k t h p bi u th c CASE tìm ki m như sau: SELECT GHICHU = CASE WHEN PHANTRAM < 20 THEN 'L i ít' WHEN PHANTRAM BETWEEN 20 AND 40 THEN 'L i nhi u' ELSE 'R t l i' END, MAVTU, TENVTU, DVTINH FROM VATTU ORDER BY PHANTRAM K t qu truy v n tr v :. Th$c t thì nhưng ngư i l p trình trong môi tư ng Transaction-SQL thư ng s d ng bi u th c CASE tìm ki m b i vì khi ñó các bi u th c lu n lý mà b n dùng ñ so sánh ñư c phép ch a nhi u toán t so sánh khác nhau, trong khi ñó bi u th c CASE ñơn gi n ph*n trên ch( cho phép b n th$c hi n phép so sánh b)ng (=) trên m t bi u th c ñơn gi n. Ví d : Đ gi m giá bán hàng trong tháng 02/2013 theo quy t c: • N u s lư ng hàng <= 2 thì không gi m giá. • N u s lư ng hàng t% 3 ñ n 10 thì gi m 10%. Gi ng viên: Th.S Nguy n Trí Nhân. 113. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(115)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. • N u s lư ng hàng > 10 thì gi m 20%. B n s d ng l nh UPDATE SET có k t h p bi u th c CASE tìm ki m như sau: UPDATE CTPXUAT SET DGXUAT = CASE WHEN SLXUAT <=2 THEN DGXUAT WHEN SLXUAT BETWEEN 3 AND 10 THEN DGXUAT* 0.9 ELSE DGXUAT *0.8 END FROM CTPXUAT CTPX INNER JOIN PXUAT PX ON PX.SOPX = CTPX.SOPX WHERE CONVERT(CHAR(7), NGAYXUAT, 21) = '2013-02' Tóm l i: bi u th c CASE có th ñư c phép k t h p s d ng trong các câu l nh SELECT, UPDATE SET, DELETE dùng ñ bi n lu n các trư ng h p khác nhau c a các giá tr d li u bên trong m t câu l nh truy v n. 6.4.2. Cấu trúc rẽ nhánh IF... ELSE V i c u trúc r= nhánh, ngư i l p trình có th ch( m t m t ho#c nhi u câu l nh s" ñư c th$c hi n khi giá tr c a m t bi u th c lu n lý là ñúng ho#c là sai. C u trúc r" nhánh ñư c phép s d ng bên trong m t lô (batch) các l nh ho#c bên trong m t Procdure Store. C u trúc r" nhánh ñư c phép l ng nhi u c p bên trong và c p ñ l ng nhau c a các c u trúc r" nhánh là không có gi i h n. Cú pháp:. Trong ñó: • Bi'u th3c lu n lý: thông thư ng là m t bi u th c so sánh dùng ñ ch( ra m t ñi u ki n so sánh nào ñó. • Câu l,nh 1/Kh+i l,nh 1: các l nh s" ñư c th$c hi n khi bi u th c lu n lý so sánh có giá tr là ñúng (True). • Câu l,nh 2/Kh+i l,nh 2: các l nh s" ñư c th$c hi n khi bi u th c lu n lý so sánh có giá tr là sai (False). Lưu ý: Kh i l nh ñư c ñ c p là m t t p h p t% hai câu l nh tr lên, trong các trư ng h p này b t bu c b n ph i s d ng các t% khóa BEGIN và END ñ hình thành m t nhóm các câu l nh trong m t kh i l nh. Gi ng viên: Th.S Nguy n Trí Nhân. 114. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(116)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Cú pháp:. Ví d : Tính xem có v t tư nào ñã bán ra v i s lư ng nhi u hơn 4 không ? N u có thì in ra danh sách các v t tư ñó, ngư c l i thì thông báo chưa bán ñư c v t tư nào v i s lư ng nhi u hơn 4. B n s d ng cú pháp IF... ELSE như sau: IF (SELECT COUNT(*) FROM CTPXUAT WHERE SLXUAT >4) >0 BEGIN PRINT 'Danh sách cacs hàng hóa bán v i s lư ng >4' SELECT CTPX.MAVTU, TENVTU, SLXUAT FROM CTPXUAT CTPX INNER JOIN VATTU VT ON VT.MAVTU = CTPX.MAVTU WHERE SLXUAT >4 END ELSE PRINT 'Chưa bán hàng nào v i s lư ng > 4' K t qu tr v :. Nh n xét: trong ví d trên, s d ng bi u th c lu n lý là m t bi u th c so sánh có s d ng truy v n SELECT COUNT WHERE dùng ñ ñ m các hàng hóa bán ra có s lư ng l n hơn 4. N u k t qu ñ m > 0 thì in danh sách các v t tư ñó ra. Ngư c l i thông báo chưa bán hàng hóa v i s lư ng nhi u hơn 4. Khi l p trình trong Transaction-SQL, thông thư ng b n c*n ph i ki m tra d li u có t n t i bên trong các b ng trư c khi th$c hi n ti p các hành ñ ng liên quan ñ n các dòng d li u ñó. Cú pháp IF có k t h p t% khóa EXISTS dùng ñ ki m tra s$ t n t i c a các dòng d li u bên trong b ng r t h u hi u. Gi ng viên: Th.S Nguy n Trí Nhân. 115. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(117)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Cú pháp:. Trong ñó: • T< khóa EXISTS: dùng ñ ki m tra s$ t n t i các dòng d li u trong câu l nh truy v n SELECT sau ñó. K t qu IF tr v ñúng (True) khi câu l nh SELECT tr v ít nh t m t dòng d li u, ngư c l i thì tr v sai (False). Ví d : Th$c hi n l i ví d trên nhưng s d ng cú pháp IF EXISTS dùng ñ ki m tra xem ñã có hàng hóa nào bán ra v i s lư ng nhi u hơn 4 chưa. IF EXISTS (SELECT * FROM CTPXUAT WHERE SLXUAT >4) BEGIN PRINT 'Danh sách các hàng hóa bán v i s lư ng >4' SELECT CTPX.MAVTU, TENVTU, SLXUAT FROM CTPXUAT CTPX INNER JOIN VATTU VT ON VT.MAVTU = CTPX.MAVTU WHERE SLXUAT >4 END ELSE PRINT 'Chưa bán hàng nào v i s lư ng > 4' Ví d : Đ ki m tra xem có phi u nh p hàng nào ñã l p vào ngày ch nh t không. N u có thì in ra danh sách các phi u nh p hàng ñó. B n s d ng cú pháp IF như sau: IF EXISTS (SELECT * FROM PNHAP WHERE DATENAME(DW, NGAYNHAP) = 'Sunday') BEGIN PRINT 'Danh sách các phi u nh p vào ngày ch nh t' SELECT * FROM PNHAP WHERE DATENAME(dw, NGAYNHAP) = 'Sunday' END Nh n xét: trong ví d trên s d ng hàm DATENAME v i tham s dw (vi t t t c a t% day of week, ngày trong tu*n) dùng ñ tr v ngày trong tu*n c a ngày nh p hàng. Gi ng viên: Th.S Nguy n Trí Nhân. 116. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(118)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 6.4.3. Cấu trúc lặp WHILE V i c u trúc l#p, ngư i l p trình có th ch( ñ nh m t ho#c nhi u câu l nh s" ñư c th$c hi n l#p l i nhi u l*n trong khi giá tr c a bi u th c lu n lý so sánh v9n còn ñúng. Gi ng như c u trúc r" nhánh, c u trúc l#p ñư c phép s d ng bên trong m t lô (batch) các l nh ho#c bên trong m t Procdure Store. Gi a c u trúc r" nhánh và c u trúc l#p không có th t$ ưu tiên khi chúng l ng vào nhau và c p ñ l ng nhau là không có gi i h n. Th$c t vi c s d ng c u trúc l#p WHILE b gi i h n trong nhi u trư ng h p. B i vì b n thân các l nh truy v n c p nh t d li u như là: SELECT, UPDATE SET, DELETE trong Transaction-SQL ñã t$ ñ ng th$c hi n vi c l#p t% dòng d li u ñ*u tiên ñ n dòng d li u cu i cùng bên trong b ng. C u trúc l#p WHILE thông thư ng ñư c dùng v i các bi n có ki u d li u cursor, cách th c s d ng bi n ki u d li u cursor s" ñư c hư ng d9n trong các ph*n sau. Cú pháp:. Trong ñó: • Bi u th c lu n lý: thông thư ng là m t bi u th c so sánh ñ ch( các l nh s" ñư c l#p l i trong khi mà giá tr c a bi u th c v9n còn ñúng. • Các l nh l#p: các câu l nh ñư c th$c hi n bên trong vòng l#p. Ví d : Đ in ra 10 s nguyên dương b t ñ*u t% 100. B n s d ng c u trúc l#p WHILE như sau: DECLARE @SoNguyen int SET @SoNguyen = 100 While (@SoNguyen < 110) BEGIN PRINT' S nguyên:' + Convert(char(3), @Songuyen) SET @SoNguyen = @SoNguyen +1 END K t qu tr v :. Gi ng viên: Th.S Nguy n Trí Nhân. 117. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(119)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. B n có th s d ng t% khóa BREAK l ng vào c u trúc l#p WHILE ñ có th k t thúc vi c l#p c a các l nh bên trong vòng l#p mà không c*n xét ñ n giá tr tr v c a bi u th c lu n lý dùng ñ so sánh phía sau t% khóa WHILE ph i là sai. Tuy nhiên t% khóa BREAK thư ng ñư c s d ng kèm theo v i m t bi u th c lu n lý khác. Ví d : Th$c hi n vi c l#p gi ng ví d trên, tuy nhiên mu n r)ng vòng l#p s" b k t thúc khi m i in t i s nguyên 105. B n s d ng c u trúc l#p WHILE như sau: DECLARE @SoNguyen int SET @SoNguyen = 100 While (@SoNguyen < 110) BEGIN PRINT N' S nguyên:' + Convert(char(3), @Songuyen) IF @SoNguyen = 105 BREAK SET @SoNguyen = @SoNguyen +1 END PRINT N'K t thúc vòng l p' K t qu tr v :. B n cũng có th s d ng t% khóa CONTINUE l ng vào c u trúc l#p WHILE ñ ch( ñ nh các l nh bên trong vòng l#p phía dư i t% khóa CONTINUE t m th i không th$c hi n ti p, khi ñó con tr vòng l#p s" nh y v ñ*u dòng l#p ñ ki m tra giá tr c a bi u th c Gi ng viên: Th.S Nguy n Trí Nhân. 118. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(120)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. lu n lý so sánh là v9n còn ñúng hay không. Tuy nhiên t% khóa CONTINUE thông thư ng ñư c dùng kèm theo v i m t bi u th c lu n lý khác. Ví d : Th$c hi n vi c l#p gi ng các ví d trên, tuy nhiên mu n r)ng vòng l#p s" in xót s nguyên 105. B n s d ng c u trúc l#p WHILE như sau: DECLARE @SoNguyen int SET @SoNguyen = 99 While (@SoNguyen < 110) BEGIN SET @SoNguyen = @SoNguyen +1 IF @SoNguyen = 105 CONTINUE PRINT N' S nguyên:' + Convert(char(3), @Songuyen) END PRINT N'K t thúc vòng l p' K t qu tr v :. K t qu tr v b n suy lu n khi vòng l#p th$c hi n ñ n giá tr c a bi n @Songuyen = 105 thì khi ñó l nh PRINT "S nguyên: "... không ñư c th$c hi n và con tr chương trình ñư c quay lên ñ*u vòng l#p ñ ki m tra ti p bi u th c lu n lý so sánh. Sơ ñ tóm t t ý nghĩa c a c u trúc l p WHILE kèm v i các t khóa CONTINUE ho c BREAK: Cú pháp:. Gi ng viên: Th.S Nguy n Trí Nhân. 119. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(121)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Ví d : Đ tăng t$ ñ ng tD l ph*n trăm cho các v t tư trong b ng VATTU theo quy t c sau: • M<i l*n ch( tăng lên 5% cho các v t tư có giá tr t i c t tD l nh hơn 30%. • L#p l i hành ñ ng tăng trong khi mà giá tr trung bình tD l ph*n trăm c a các v t tư v9n còn th p hơn 40%. B n s d ng các l nh như sau: --In giá tr trung bình trư c khi tăng PRINT 'Trung bình t l ph n trăm trư c khi tăng' SELECT AVG(PHANTRAM) FROM VATTU --B t ñ u th c hi n vi c l p t ñ ng DECLARE @Lantang int SET @LanTang = 0 While (Select AVG(PhanTram) From VATTU) < 40 BEGIN UPDATE VATTU SET PHANTRAM = PHANTRAM - 5 WHERE PHANTRAM <30 SET @Lantang = @Lantang +1 IF NOT EXISTS (SELECT * FROM VATTU WHERE PHANTRAM <30) BREAK END -- In giá tr trung bình t l sau khi tăng PRINT 'Đã tăng:'+ CONVERT(VARCHAR(7), @LanTang) + 'L n' PRINT 'Trung bình t l ph n trăm sau khi tăng ' SELECT AVG(PHANTRAM) FROM VATTU Gi ng viên: Th.S Nguy n Trí Nhân. 120. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(122)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Nh n xét: ví d trên khá ph c t p, do th b n ph i chèn thêm vào các ghi chú (comment) ñ giúp b n th y ñư c t%ng x lý r i r c nh)m dA xem, dA hi u. Trong Transaction-SQL, b n có th chèn các ghi chú trong các câu l nh b)ng hai d u tr% liên ti p nhau ho#c mu n che l i m t kh i các l nh liên ti p nhau thì b n s" s d ng c#p ký t$ như bên dư i:. Ngoài ra trong vòng l#p b n có th s d ng l nh IF EXISTS dùng ñ ki m tra trư ng h p sau khi ñã tăng h t t t c tD l ph*n trăm các v t tư v i ñ u l n hơn 30 mà trung bình tD l ph*n trăm c a các v t tư v9n chưa l n hơn 40 thì b t bu c vòng l#p ph i ñư c thoát ra ngoài, b i vì n u không thì vòng l#p s" b l#p vô t n không bao gi thoát ra ñư c. 6.5. 6.5. SỬA, XÓA, ĐỔ ĐỔI TÊN THỦ THỦ TỤC (STORE PROCEDURE) 6.5.1. Hủy bỏ Procdure Store: Store Khi m t Procdure Store không còn c*n s d ng n a thì b n có th h y b nó ra kh i cơ s d li u. C'n th n khi s d ng hành ñ ng này b i vì b n s" không có cơ h i ph c h i l i n i dung c a th t c sau khi ñã xóa. Cú pháp l nh DROP PROCEDURE bên dư i cho phép b n có th h y b m t Procdure Store. Cú pháp: DROP PROC[EDURE] Tên_Th(_T;c Trong ñó: • Tên th( t;c: tên Procdure Store ñã ñư c t o trư c ñó mà b n mu n h y b khi không còn s d ng n a. Ví d : Đ xóa th t c spud_MaxSLVattu_200201 ñã ñư c t o ra trong ví d trư c ñó, b n th$c hi n l nh DROP PROCEDURE như sau: DROP PROC spud_MaSLVatTu_200201 6.5.2. Thay đổi nội dung của Procdure Store: Store Đôi khi n i dung c a các Procdure Store c*n ph i thay ñ i l i ñ cho các hành ñ ng bên trong Procdure Store th$c hi n ñư c ñúng ñ n theo các yêu c*u m i. B n có hai cách th$c hi n vi c thay ñ i n i dung bên trong c a Procdure Store: • Ho#c là dùng l nh xóa b Procdure Store cũ và t o l i Procdure Store m i v i n i dung ñư c thay ñ i m i phù h p theo yêu c*u m i. • Ho#c là dùng l nh ALTER PROCEDURE ñ thay ñ i n i dung cú pháp c a l nh ALTER PROCEDURE bên dư i hoàn toàn gi ng cú pháp c a l nh CREATE PROCEDURE. Cú pháp: Gi ng viên: Th.S Nguy n Trí Nhân. 121. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(123)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Ví d : C*n b sung thêm ph*n ki m tra d li u ñã có bán hàng trong tháng 01/2002 trong Procdure Store spud_MaxSLVattu_200201 ñã ñư c t o ra ví d trư c. B n th$c hi n l nh ALTER PROCEDURE như sau: ALTER PROC spud_MaxSLVatTu_200201 as DECLARE @sTenVTu varChar(50), @nMaxSL int if not Exists (Select MaVTu From CTPXuat CTPX INNER JOIN PXUAT PX ON PX.SOPX = CTPX.SOPX WHERE CONVERT(CHAR(7),NGAYXUAT,21) = '2002-01') BEGIN PRINT 'Tháng2002/01 chưa có bán v t tư nào c !' Return END SELECT @sTenVTu = RTrim(TenVTu), @nMaxSL = SLXuat FROM CTPXUAT CTPX INNER JOIN VATTU VT ON VT.MAVTU = CTPX.MAVTU JOIN PXUAT PX ON PX.SOPX = CTPX.SOPX WHERE (CONVERT(CHAR(7), NGAYXUAT, 21) = '2002-01') AND SLXUAT = (SELECT MAX(SLXUAT) FROM CTPXUAT INNER JOIN PXUAT ON PXUAT.SOPX = CTPXUAT.SOPX WHERE CONVERT(CHAR(7), NGAYXUAT, 21) = '2002-01') PRINT @sTenVTu + 'có doanh s bán cao nh t' PRINT 'V i s lư ng là: ' + cast (@nMaxSL as Char(10)) Nh n xét: Trong ví d trên, s d ng l nh RETURN dùng ñ thoát ra kh i Procdure Store trong trư ng h p khi không có v t tư nào bán ra trong tháng 01/2002. Ý nghĩa c a l nh RETURN dùng ñ thoát kh i m t Procdure Store, các dòng l nh phía sau l nh RETURN s" không ñư c th$c hi n sau khi th t c th$c hi n l nh RETURN.. Gi ng viên: Th.S Nguy n Trí Nhân. 122. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(124)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 6.6. 6.6.. XỬ LÝ LỖ LỖI TRONG STORE PROCEDURE (SP) (SP) Vì các Procdure Store ngày càng ph c t p nên vi c kêt h p các ño n l nh ki m tra l<i trong các Procdure Store là r t c*n thi t. Chúng ta có th s d ng mã tr v ho#c câu l nh RAISERROR ñ 6.6.1. Mã trả về Trong các Procdure Store, các mã tr v ch( có giá tr s nguyên. M#c ñ nh, giá tr c a mã là 0, ch( ra r)ng vi c th$c hi n Procdure Store là thành công. Đ xu t ra mã tr v , chúng ta c*n khai báo m t bi n và th$c thi m t Procdure Store. Sau ñó chúng ta có th xem giá tr bi n ñó. Mã tr v ph i tr l i giá tr c a chúng vào trong m t bi n s . Câu l nh ñ khai báo bi n s và s d ng nó trong su t quá trình th$c thi th t c là: DECLARE @return_variable_name data_type EXECUTE @return_variable_name = procedure_name Trong ñó, @return_variable_name ch a mã tr v b i Procdure Store.. Ví d;: Hãy s a ñ i th t c Titles_Pub ñ tr v giá tr 0, giá tr m#c ñ nh c a SQL Server, n u nó th$c hi n thành công thì hi n th các hàng. N u không có hàng nào ñư c tìm th y, nó s" tr v giá tr 1. Câu l nh ALTER PROCEDURE s" như sau: ALTER PROCEDURE Titles_Pub @v_pubid char(4) AS DECLARE @v_return int SELECT @v_return=COUNT(*) FROM titles WHERE pub_id = @v_pubid IF @v_return>0 SELECT * FROM titles WHERE pub_id = @v_pubid ELSE RETURN @v_return+1 K t qu th$c thi th t c ñư c trình bày trong b ng. Gi ng viên: Th.S Nguy n Trí Nhân. 123. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(125)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. Hình 6.3.. B c Cao Đ ng Công ngh Thông tin. S d ng mã tr v. B i vì không có tiêu ñ nào ñư c tìm th y c a publisher ID ‘9952’, nên th t c tr l i giá tr 1 và thông báo tương ng ñư c hi n th . 6.6.2. Câu lệnh RAISERROR Trong m t Procdure Store, chúng ta có th s d ng l nh PRINT ñ hi n th thông báo l<i do ngư i dùng ñ nh nghĩa. Tuy nhiên, các thông báo này ch( là t m th i và ch( hi n th cho ngư i s d ng. Câu l nh RAISERROR ñư c s d ng ñ ghi l i nh ng l<i này và gán cho chúng các c p ñ .Cú pháp là: RAISERROR ({msg_id | msg_str}{, severity, state} [WITH option[,...n]] Trong ñó, msg_id: Thông báo l<i c th do ngư i s d ng ñ nh nghĩa trong h th ng b ng . msg_str: Thông báo ñ#c bi t mà chúng ta ñã ñ nh nghĩa, nhi u nh t là ñ n 255 kí t$. severity: Các c p ñ do ngư i s d ng ñ nh nghĩa liên quan v i thông báo ñ#c bi t. Ngư i s d ng có th s d ng các c p ñ t% 0 ñ n 18. Các c p ñ t% 19 ñ n 25 ñư c dành riêng cho các thành viên trong sysadmin, và yêu c*u ñi kèm tùy ch n WITH LOG . Các c p ñ t% 20-25 ñư c coi là m c cao. state: Các giá tr t% 1 ñ n 127 trình bày tình tr ng l<i. option: Ch( ra khi nào l<i s" ñư c ghi vào trong nh t ký l<i c a server. Ví d , ño n mã dư i ñây hi n th th t$ s b t ñ*u t% s 5, theo th t$ gi m d*n. Khi giá tr này là 2, m t l<i ñư c ñưa ra và vòng l#p b ñóng. CREATE PROCEDURE Myproc AS DECLARE @v_ctr INT Gi ng viên: Th.S Nguy n Trí Nhân. 124. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(126)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. SELECT @v_ctr = 5 WHILE @v_ctr > 0 BEGIN SELECT @v_ctr * @v_ctr SELECT @v_ctr = @v_ctr - 1 IF @v_ctr = 2 BEGIN RAISERROR('Counter has fallen below 3', 1, 2) BREAK END END K t qu ñ*u ra c a ño n mã trên là: 25 16 9 B ng thông báo s" hi n th ra như sau: (1 row(s) affected) (1 row(s) affected) (1 row(s) affected) Msg 50000, Level 1, State 50000 Counter has fallen below 3 6.7. BÀI TẬ TẬP THỰ THỰC HÀNH 1. Vi t báo cáo b ng kê ch ng t% bao g m các thông tin: Mã Ct, S Ct, Ngày Ct, DiAn gi i, Mã Đt, Mã Vt, Tên Vt, Đvt, S lư ng, Đơn giá, Thành Ti n. 2. Vi t báo cáo t ng h p nh p kho bao g m các thông tin: Mã v t tư, Tên Vt, Đvt, S lư ng, Đơn giá, Thành ti n (nhóm theo t%ng v t tư). 3. Vi t báo cáo s chi ti t v t tư bao g m các thông tin: Mã Ct, S Ct, Ngày Ct, DiAn gi i, Mã Vt, Tên Vt, Đvt, Sl Nh p, Ti n nh p, Sl xu t, Ti n xu t, Sl t n, giá tr t n (li t kê chi ti t các l*n nh p xu t). 4. Vi t báo cáo t ng h p nh p – xu t – t n bao g m các thông tin: Mã v t tư, Tên v t tư, Đvt, T n ñ*u, dư ñ*u, Sl Nh p, Ti n nh p, Sl Xu t, Ti n Xu t, T n cu i, Dư cu i (Nhóm theo t%ng v t tư).. Gi ng viên: Th.S Nguy n Trí Nhân. 125. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(127)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Chương 7. CHUYỂ CHUYỂN TÁC, BẪ BẪY LỖ LỖI VÀ KIỂ KIỂU CON TRỎ TRỎ TRONG SQL SERVER 7.1. 7.1. CHUYỂ CHUYỂN TÁC (TRANSACTION) 7.1.1. Khái niệm Giao tác trong các lo i cơ s d li u quan h l n ñư c s d ng trong nh ng trư ng h p mà các hành ñ ng c p nh t d li u trên nhi u b ng khác nhau ñư c th$c hi n trong cùng m t ñơn v (unit). Nói m t cách khác thì các hành ñ ng c p nh t d li u trong m t ñơn v s" ñư c ghi nh n l i khi t t c các hành ñ ng con bên trong ñó th$c hi n thành công, ngư c l i n u có ít nh t m t hành ñ ng nào ñó th$c hi n th t b i thì t t c các hành ñ ng bên trong ñơn v s" b h y b ñ ñ m b o tính toàn v!n c a d li u trong các b ng. Ví d;: B n hình dung m t khách hàng có cùng lúc 2 lo i tài kho n trong ngân hàng. M t là tài kho n thanh toán dùng ñ th$c hi n các giao d ch thu chi qua l i c a khách hàng v i các công ty khác. Hai là tài kho n ti t ki m cá nhân c a khách hàng cho phép khách hàng g i ti n ti t ki m ñ l y ti n lãi cu i kỳ theo kỳ h n 3 tháng. Gi s sau th i gian 3 tháng, khách hàng ñ n ngân hàng ñ nh n s ti n lãi t% tài kho n ti t ki m cá nhân. Tuy nhiên khách hàng này mu n b ph n giao d ch tài kho n th$c hi n t$ ñ ng chuy n s ti n lãi t% tài kho n ti t ki m sang tài kho n thanh toán c a mình. Nh n xét th y r)ng trong h th ng chương trình t i ngân hàng ph i th$c hi n hai hành ñ ng c p nh t d li u: m t là l y ra s ti n lãi trong tài kho n ti t ki m, hai là n p s ti n lãi vào tài kho n thanh toán. Chuy n gì x y ra n u m t trong hai hành ñ ng th$c hi n không thành công mà hành ñ ng còn l i v9n ñư c ghi l i nh n vào cơ s d li u? B n cùng xem xét như sau: • Trư1ng h)p 1: n u hành ñ ng rút s ti n lãi trong tài kho n ti t ki m th$c hi n thành công và hành ñ ng n p s ti n lãi ñó vào tài kh an thanh toán th$c hi n b th t b i thì xem như khách hàng ñã m t ñi s ti n lãi c a tài kho n ti t ki m (khách hàng m t ti n). • Trư1ng h)p 2: n u hành ñ ng rút s ti n lãi trong tài kh an ti t ki m th$c hi n th t b i và hành ñ ng n p s ti n lãi ñó vào tài kho n thanh toán th$c hi n thành công thì xem như khách hàng có thêm s ti n lãi c hai tài kho n (ngân hàng m t ti n). Nh n xét th y r)ng c hai trư ng h p nêu trên ñ u làm cho h th ng vi ph m tính toàn v!n d li u và có nh hư ng ñ n uy tín ch t lư ng c a ngân hàng. Nhưng n u nh vào khái ni m c a giao tác, b n có th quy ñ nh c hai hành ñ ng trên s" ñư c bao bên trong m t ñơn v giao tác nh)m nói r)ng chúng s" ñư c ghi nh n l i khi c hai hành ñ ng con bên trong ñó th$c hi n thành công, ngư c l i n u trư ng h p 1 ho#c trư ng h p 2 mô t ph*n trên có x y ra thì t t c các hành ñ ng bên trong giao tác s" b h y b (không ghi l i các thay ñ i d li u). Đi u này s" làm cho h th ng không vi ph m tính toàn v!n d li u. 7.1.2. Cách tạo và ứng dụng 7.1.2.1. Giao tác tường minh: Đ b t ñ*u m t giao tác tư ng minh, b n ph i s d ng câu BEGIN TRAN trong dòng l nh ñ*u tiên c a m t ñơn v x lý. Đ ch( ñ nh cho Microsoft SQL Server k t thúc Gi ng viên: Th.S Nguy n Trí Nhân. 126. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(128)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. giao tác và ghi nh n l i các hành ñ ng c p nh t d li u thì b n ph i s d ng l nh COMMIT TRAN và ngư c l i khi s d ng l nh ROLLBACK TRAN dùng ñ ch( ñ nh cho Microsoft SQL Server k t thúc giao tác mà không ghi nh n l i các hành ñ ng c p nh t d li u trong giao tác. 7.1.2.2. Lệnh chỉ định bắt đầu một giao tác: Như ph*n trên ñã trình bày l nh BEGIN TRAN dùng ñ s d ng trong các giao tác tư ng minh. M<i giao tác có th ñư c ghép l ng các giao tác con bên trong ñó, b n có th ch( ñ nh tên cho t%ng giao tác l ng nhau nh)m th$c hi n dA dàng vi c k t thúc c a m<i giao tác. Bi n h th ng @@TRANCOUNT tr v c p ñ l ng hi n hành bên trong các giao tác. Cú pháp l nh ch( ñ nh b t ñ*u m t giao tác ñư c mô t như bên dư i. Cú pháp:. Trong ñó: • Tên giao tác: tên c a giao tác ñư c ch( ñ nh rõ ràng, ch( nên s d ng tên giao tác khi c p ñ l ng nhau c a các giao tác nhi u hơn hai c p. Ví d : S d ng l nh BEGIN TRAN ñ ch( ñ nh b t ñ*u th$c hi n giao tác: thêm v t tư m i vào b ng VATTU, tuy nhiên khi k t thúc giao tác b n không lưu l i v t tư này. SET ANSI_WARNINGS OFF GO SELECT COUNT(*) AS 'T ng v t tư trư c khi thêm' FROM VATTU BEGIN TRAN INSERT INTO VATTU (MAVTU, TENVTU, DVTINH, PHANTRAM) VALUES('BU01', 'BÀN I PHILIP', 'CÁI', 17) SELECT COUNT(*) AS 'T ng v t tư sau khi thêm trong gt' FROM VATTU ROLLBACK TRAN SELECT COUNT(*) AS 'T ng v t tư hi n t i' FROM VATTU SET ANSI_WARNINGS ON K t qu tr v :. Gi ng viên: Th.S Nguy n Trí Nhân. 127. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(129)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Nh n xét th y r)ng trong ví d này, trư c khi th$c hi n giao tác, chúng ta có 11 v t tư, sau ñó trong giao tác thêm vào m t v t tư m i. Tuy nhiên cu i cùng khi k t thúc giao tác chúng ta không ghi l i hành ñ ng thêm v t tư b)ng l nh ROLLBACK TRAN, do ñó t ng s v t tư v9n là 11 v t tư khi k t thúc giao tác. 7.1.2.3. Các lệnh chỉ định kết thúc một giao tác: Theo ví d trên chúng ta có th hi u ý nghĩa c a l nh ROLLBACK TRAN dùng ñ ch( ñ nh k t thúc giao tác nhưng không ghi nh n l i các hành ñ ng c p nh t d li u bên trong giao tác. Ngoài ra chúng ta c th s d ng l nh COMMIT TRAN dùng ñ ch( ñ nh k t thúc giao tác nhưng ñ ng ý ghi nh n l i các hành ñ ng c p nh t d li u bên trong giao tác. Cú pháp c a c hai l nh này ñư c mô t như bên dư i. Cú pháp: Ho#c. Trong ñó: • Tên giao tác: tên c a giao tác ñư c ñ nh nghĩa trư c ñó trong câu l nh BEGIN TRAN. Ví d : T o m t b ng t m dùng ñ minh h a vi c s d ng các giao tác l ng nhau. K t thúc giao tác ngoài cùng b)ng l nh ROLLBACK TRAN và không ghi nh n l i các hành ñ ng c p nh t d li u c a các giao tác con trư c ñó. Đi u này có nghĩa là d li u c a b ng t m #TestTran là hoàn toàn tr ng. CREATE TABLE #TestTran( CotA INT PRIMARY KEY, cotB CHAR(3) ) Gi ng viên: Th.S Nguy n Trí Nhân. 128. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(130)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. BEGIN TRAN Cap1 --@@TRANCOUNT = 1 INSERT INTO #TestTran VALUES (1, 'aaa') BEGIN TRAN Cap2 --@@TRANCOUNT = 2 INSERT INTO #TestTran VALUES(2, 'bbb') BEGIN TRAN Cap3 --@@TRANCOUNT = 3 INSERT INTO #TestTran VALUES(3,'CCC') COMMIT TRAN Cap3 --@@TRANCOUNT = 2 GO COMMIT TRAN Cap2 --@@TRANCOUNT = 1 GO ROLLBACK TRAN Cap1 --@@TRANCOUNT = 0 GO SELECT *FROM #TestTran GO DROP TABLE #TestTran GO Nh n xét th y r)ng trong ví d này tên c a các giao tác ñư c s d ng trong các l nh ROLLBACK TRAN ho#c COMMIT TRAN ch( ñ giúp cho chúng ta dA ñ c và dA th y ñư c c p ñ hi n hành c a các giao tác l ng nhau, nó hoàn toàn không có m t m i liên h gì gi a tên giao tác trong các l nh BEGIN TRAN trư c ñó. Vi c s d ng ñ i tư ng Procdure Store ñ cung c p các d li u, các tính toán trên các màn hình nh p li u, báo cáo bên trong ng d ng s" làm cho t c ñ các x lý t i nhánh máy ch ñư c nhanh hơn trong các ng d ng mô hình khách ch .. 7.1.2.4. Phân vùng trong giao tác: Chúng ta có th ch( ñ nh vi c ñ ng ý ghi nh n ho#c không ghi nh n l i các hành ñ ng c p nh t d li u riêng l= bên trong m t giao tác b)ng cách phân chia thành nhi u vùng nh cho các câu l nh bên trong m t giao tác. B)ng cách này chúng ta chia nh các hành ñ ng bên trong giao tác ra thành nhi u ph*n, tương ng t%ng ph*n nh chúng ta có th dA dàng ch ñ ng ñ ng ý ghi nh n ho#c không ghi nh n l i vi c c p nh t d li u. Cú pháp c a l nh SAVE TRANSACTION cho phép chúng ta có th làm ñư c nh ng ñi u như ñã mô t trên. Cú pháp:. Trong ñó: • Tên vùng: dùng ñ ch( ñ nh vùng ch a các l nh c p nh t d li u và tên vùng nên duy nh t trong m t giao tác. • Các l,nh: các l nh ñư c phân chia theo vùng bên trong giao tác. Gi ng viên: Th.S Nguy n Trí Nhân. 129. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(131)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Ví d : Như ví d trên, tuy nhiên chúng ta mu n phân chia l nh thêm m i m9u tin th nh t và th hai trong vùng th nh t, l nh thêm m i m9u tin th ba trong m t vùng th hai trong cùng m t giao tác. K t thúc giao tác th$c hi n ghi nh n l i các l nh trong vùng th nh t nhưng không ghi nh n l i các l nh trong vùng th hai (ch( có m9u tin th nh t và th hai ñư c ghi l i). CREATE TABLE #TestTran( CotA INT PRIMARY KEY, CotB CHAR(3) ) BEGIN TRAN --Vùng th 1 SAVE TRAN Dong_1_2 INSERT INTO #TestTran VALUES(1,'AAA') INSERT INTO #TestTran VALUES(2, 'BBB') --Vùng th 2 SAVE TRAN Dong_3 INSERT INTO #TestTran VALUES (3, 'CCC') ROLLBACK TRAN Dong_1_2 GO SELECT *FROM #TestTran GO DROP TABLE #TestTran GO 7.1.2.5. Kiểm lỗi bên trong giao tác: Thông thư ng khi làm vi c bên trong giao tác, chúng ta s" không bao gi ch( ñ nh rõ ràng vi c k t thúc m t giao tác b)ng các l nh c th COMMIT TRAN ho#c ROLLBACK TRAN mà thay vào ñó chúng ta s" ki m tra theo m t ñi u ki n quy ñ nh trư c. N u ñi u ki n này b sai thì b t bu c chúng ta s" không ghi nh n các hành ñ ng c p nh t d li u trong giao tác, ngư c l i s" ñ ng ý ghi nh n các hành ñ ng ñó. Đ làm ñư c ñi u này, thông thư ng chúng ta s d ng giá tr c a bi n h th ng @@ERROR trong vi c ki m tra ñ bi t k t qu c a câu l nh th$c hi n g*n nh t là thành công hay th t b i. Giá tr c a bi n h th ng @@ERROR tr v b)ng không khi câu l nh g*n nh t th$c hi n thành công, ngư c l i thì tr v giá tr khác không khi câu l nh g*n nh t th$c hi n có l<i. Ví d : Th$c hi n công vi c c p phát s ch ng t% t$ ñ ng cho các b ng DONDH, PNHAP, PXUAT ñ m b o r)ng các s này không b trùng l p khi cùng lúc có nhi u ngư i s d ng cùng l p các ch ng t% liên quan. Th$c hi n t%ng bư c như sau: Gi ng viên: Th.S Nguy n Trí Nhân. 130. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(132)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Đ*u tiên chúng ta xây d$ng b ng CAP_SOCTU dùng lưu tr s ch ng t% ñư c c p k ti p cho các b ng, g m có các c t: tên b ng (tenbang), s ch ng t% (soctu), ký t$ ñ*u (kytu). Trong ñó c t tên b ng tham gia làm khóa chính. CREATE TABLE CAP_SOCTU ( TENBANG CHAR(20), SOCTU INT, KYTU CHAR(1), PRIMARY KEY (TENBANG) ) K ti p l n lư t thêm các dòng d li u vào b ng CAP_SOCTU: INSERT INTO CAP_SOCTU VALUES ('DONDH',100,'D') INSERT INTO CAP_SOCTU VALUES ('PNHAP', 100, 'N') INSERT INTO CAP_SOCTU VALUES ('PXUAT', 100, 'X') Sau cùng, chúng ta xây d$ng th t c c p s ch ng t% t$ ñ ng ñ m b o không trùng l p. Có s d ng vi c ki m tra l<i khi th$c hi n các l nh trong giao tác. CREATE PROCEDURE SPUD_CAP_SOCTU_KE @sTenbang char(20), @sSoctuke char(20) output as Declare @nError Int, @nRowCount int, @nSoctuke int, @sChuoitam char(4), @sKytu char(1) Begin Tran -- Tăng s ch ng t k ti p Update Cap_soctu Set Soctu = Soctu +1 Where TenBang = @sTenbang -- Ki m tra vi c tăng có thành công hay không? Select @nError = @@Error, @nRowcount = @@Rowcount Gi ng viên: Th.S Nguy n Trí Nhân. 131. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(133)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. --N u có l i ho c không c p ñư c m u tin nào If (@nError <> 0 or @nRowCount <> 1) Begin RollBack Tran Return -999 End -- L y s ch ng t mà chúng ta ñã tăng thành công Select @nSoctuke = Soctu, @sKytu = Kytu From Cap_soctu Where Tenbang= @sTenBang --Ki m tra vi c l y d li u có thành công không? Select @nError = @@Error, @nRowCount = @@RowCount --N u có l i ho c không l y ñư c m u tin nào if @nError <> 0 Or @nRowCount <>1 Begin RollBack Tran Return -998 End --Tính s ch ng t khi không có l i nào h t Set @sChuoiTam = LTrim(Str(@nSoctuke)) set @sSoctuke = @sKytu + Replicate('0', 3 - len(@sChuoiTam))+@sChuoiTam Commit Tran Return 0 go G!i th c hi n th t"c trên ñ có ñư c s ch ng t cho b ng PXUAT. DECLARE @sSoctu Char(4), @nGttv Int EXEC @nGttv = SPUD_CAP_SOCTU_KE 'PXUAT', @sSoctu output if @nGttv <> 0 Gi ng viên: Th.S Nguy n Trí Nhân. 132. k. ti p. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(134)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Print N'Có l i c p ch ng t , xem l i...' else Print N'S ch ng t m i là: ' + @sSoctu K t qu tr v : Tóm l i: vi c s d ng ñ i tư ng Procdure Store ñ cung c p các d li u, các tính toán trên các màn hình nh p li u, báo cáo bên trong ng d ng s" làm cho t c ñ các x lý t i nhánh máy ch ñư c nhanh hơn trong các ng d ng mô hình khách ch . 7.2. 7.2. BẪY LỖ LỖI (TRIGGER) 7.2.1. Khái niệm Trigger là m t trư ng h p ñ#c bi t c a store procedure, nó s" có hi u l$c khi chúng ta thay ñ i d li u trên m t b ng d li u c th , ho#c các x lý làm thay ñ i d li u c a các l nh: insert, update, delete. Trigger có th ch a các l nh truy v n t% các b ng khác ho#c bao g m nh ng l nh SQL ph c t p. M t s thu n l i khi s d ng trigger: Trigger ch y m t cách t$ ñ ng: chúng ñư c kích ho t ngay t c thì khi có s$ thay ñ i d li u trên b ng d li u. Trigger có th th$c hi n cascade khi vi c thi hành có nh hư ng ñ n nh ng b ng liên quan. Trigger có nh ng hi u l$c ít b h n ch hơn so v i ràng bu c giá tr nghĩa là có th ràng bu c tham chi u ñ n nh ng c t c a nh ng b ng d li u khác. Khi trigger ñư c kích ho t b i 1 l nh Transact-SQL insert ñ thêm m t b m i vào b ng AAA thì b m i này ñư c lưu t m th i vào m t b ng t m có tên là inserted có cùng c u trúc v i b ng AAA. Khi k t thúc trigger này thì b d li u m i th t s$ lưu xu ng CSDL. Tương t$ ñ i v i l nh delete, các b d li u b xóa s" chuy n t m vào b ng t m deleted. 7.2.2. Cách tạo và ứng dụng 7.2.2.1. Lệnh tạo Trigger Create Trigger trigger_name on table_name For [insert, update, delete] As Begin {Khai báo các bi n x lý} {Các l nh Transact-SQL} End 7.2.2.2. Lệnh xóa Trigger Drop Trigger trigger_Name Ví d;: T o trigger cho thao tác xóa m t ñ*u sách trong b ng Muon. CREATE TRIGGER tg_delMuon ON muon Gi ng viên: Th.S Nguy n Trí Nhân. 133. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(135)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. FOR delete AS Begin DECLARE @isbn int, @ma_cuonsach smallint SELECT @isbn = isbn, @ma_cuonsach = ma_cuonsach FROM deleted UPDATE cuonsach SET tinhtrang = yes WHERE isbn = @isbn AND ma_cuonsach = @ma_cuonsach End 7.3. 7.3. KIỂ KIỂU CON TRỎ TRỎ (SQL CURSOR) 7.3.1. Khái niệm N u gi i thích m t cách ng n g n thì cursor tương t$ như recordset hay dataset trong các ngôn ng l p trình. Nghĩa là chúng ta trích l c m t s d li u vào b nh , sau ñó có th l*n lư t làm vi c v i t%ng b n ghi b)ng cách di chuy n l*n lư t qua t%ng b n ghi (Move Next...). Có 3 lo i cursors là Transact-SQL Cursors, API Cursors và Client Cursors. Trong ñó Transact-SQL và API thu c lo i Server Cursors nghĩa là cursors ñư c load lên và làm vi c bên phía server. Trong khuôn kh bài h c này ta ch( nghiên c u Transact-SQL cursors. 7.3.2. Cách tạo và ứng dụng Transact-SQL cursors ñư c t o ra trên server b)ng các câu l nh Transact-SQL và ch y u ñư c dùng trong stored procedure và trigger. Trư c h t hãy xem qua m t ví d v cursor: Vi t th t c s d ng Cursor ñ in ra l*n lư t danh sách khách hàng, nhà cung c p trong danh m c ñ i tư ng (th t c ñ#t tên là usp_DmDtPrint). CREATE PROCEDURE [dbo].[usp_DmDtPrint] AS BEGIN SET NOCOUNT ON; DECLARE @_Ma_Dt NVARCHAR(40), @_Ten_Dt NVARCHAR(20)s DECLARE DmDtCursor CURSOR FOR SELECT Ma_Dt, Ten_Dt FROM DmDt OPEN DmDtCursor FETCH NEXT FROM DmDtCursor INTO @_Ma_Dt, @_Ten_Dt WHILE @@FETCH_STATUS = 0 BEGIN Gi ng viên: Th.S Nguy n Trí Nhân. 134. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(136)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. PRINT N'Đ i tư ng: ' + RTRIM(@_Ma_Dt) + ' - ' + LTRIM(@_Ten_Dt) FETCH NEXT FROM DmDtCursor INTO @_Ma_Dt, @_Ten_Dt END CLOSE DmDtCursor DEALLOCATE DmDtCursor END Trong ví d trên ta s" trích ch n Ma_Dt và Ten_Dt t% b ng DmDt c a Database QLHTK và n p vào DmDtCursor, sau ñó l*n lư t in tên c a các ñ i tư ng ra màn hình. Ð làm vi c v i m t cursor ta c*n theo các bư c sau: - Dùng câu l nh DECLARE CURSOR ñ khai báo m t cursor. Khi khai báo ta cũng ph i cho bi t câu l nh SELECT s" ñư c th$c hi n ñ l y d li u. DECLARE DmDtCursor CURSOR FOR SELECT Ma_Dt, Ten_Dt FROM DmDt - Dùng câu l nh OPEN ñ ñưa d li u lên b nh hi n câu l nh SELECT v n ñư c khai báo trên. OPEN DmDtCursor. o (memory). Ðây chính là lúc th$c. - Dùng câu l nh FETCH ñ l y t%ng hàng data t% record set. C th là ta ph i g i câu l nh FETCH nhi u l*n. FETCH tương t$ như l nh Move trong ADO recordset ch< nó có th di chuy n t i lui b)ng câu l nh FETCH FIRST, FETCH NEXT, FETCH PRIOR, FETCH LAST, FETCH ABSOLUTE n, FETCH RELATIVE n nhưng khác ch< là nó l y data b vào trong variable (FETCH...FROM...INTO variable_name). Thông thư ng ta FETCH data trư c sau ñó loop cho t i record cu i c a Cursor b)ng vòng l#p WHILE b)ng cách ki m tra global variable @@FETCH_STATUS (=0 nghĩa là thành công). FETCH NEXT FROM DmDtCursor INTO @_Ma_Dt, @_Ten_Dt - Khi ta di chuy n t i t%ng b n ghi ta có th UPDATE hay DELETE tùy theo nhu c*u (trong thí d này ch( dùng l nh PRINT) PRINT N'Đ i tư ng: ' + RTRIM(@_Ma_Dt) + ' - ' + LTRIM(@_Ten_Dt) - Dùng câu l nh CLOSE ñ ñóng cursor. M t s tài nguyên (memory resource) s" ñư c gi i phóng nhưng cursor v9n còn ñư c khai báo và có th OPEN tr l i. CLOSE DmDtCursor - Dùng câu l nh DEALLOCATE ñ phóng thích hoàn toàn các tài nguyên dành cho cursor (k c tên c a cursor). DEALLOCATE DmDtCursor. Gi ng viên: Th.S Nguy n Trí Nhân. 135. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(137)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Lưu ý: Trong ví d trên trư c khi dùng Cursor chúng ta ph i khai báo trư c hai bi n @_Ma_Dt và @_Ten_Dt ñ ch a các giá tr l y ñư c t% cursor. 7.4. BÀI TẬ TẬP THỰ THỰC HÀNH 1. Hãy thêm trư ng ModifiedAt vào t t c các b ng trong Database QLHTK sau ñó vi t Trigger ñ lưu l i th i gian c p nh t vào trư ng này. 2. Hãy vi t Trigger ñ i mã cho t t c các danh m c.. Gi ng viên: Th.S Nguy n Trí Nhân. 136. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(138)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. Chương 8. QUẢ QUẢN LÝ BẢ BẢO MẬ MẬT VÀ NGƯỜ NGƯỜI DÙNG TRONG SQL SERVER 8.1. 8.1. KHÁI NIỆ NIỆM M<i CSDL có 1 hay nhi u users ñư c ch( ñ nh quy n truy xu t d li u. Ngư i qu n tr có th c p quy n truy xu t CSDL b)ng cách t o m t tài kho n ñăng nh p (login) SQL Server cho User, thêm User vào CSDL và gán quy n cho User trên CSDL ñó. Bao g m các lo i quy n: • Quy n truy c p vào SQL Server. • Quy n truy xu t CSDL. • Quy n th$c hi n trên các ñ i tư ng c a CSDL. • Quy n x lý d li u. 8.2. 8.2. TẠO VÀ QUẢ QUẢN LÝ NGƯ NGƯỜI DÙNG ĐĂNG NHẬ NHẬP 8.2.1. Sử dụng Enterprise Manager 8.2.1.1. Tạo tài khoản đăng nhập (Login Acount): (1) M m c Security, click ph i m c Login và ch n New Login… (2) Trên trang General, nh p tên ñăng nh p, ch ñ xác nh n, CSDL m#c ñ nh.. (Hình 8.1) (Hình 8.2) Chú ý: Đăng nh p v i SQL Server thư ng dùng cho vi c k t n i quay s và m ng peer-topeer. (3) Trang Server Roles: Ch n vai trò qu n tr m c Server cho tài kho n ñăng nh p Gi ng viên: Th.S Nguy n Trí Nhân. 137. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(139)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. System Administrators Security Administrators Server Administrators Setup Administrators Database Creator Disk Administrators Process Administrators Bulk Administrators. B c Cao Đ ng Công ngh Thông tin. Đ#c quy n cao nh t; cho phép th$c hi n m i tác v trên SQL Qu n lý các server logins. Cho phép b n ñ nh c u hình nh ng cài ñ#t server-wide. Cho phép thêm và xóa các linked servers, và truy xu t vài SP T o và hi u ch(nh databases. Qu n lý các files trên ñĩa. Qu n lý ti n trình ñang ch y trong m t th hi n c a SQL Server. Th$c hi n phát bi u BULK INSERT.. Chú ý: B t kỳ Users c a Windows NT thu c nhóm BUILTIN\Administrators ñ u có vai trò sysadmin. (4) Trang Database Access: Ch n CSDL ñư c phép truy xu t và vai trò c a nó trong t%ng CSDL ñư c ch n. Fixed Database. Role Description. Public. Vai trò chung cho t t c ngư i dùng.. db_owner. Quy n cao nh t trong database.. db_accessadmin. Đi u khi n truy xu t, cài ñ#t ho#c xóa user accounts.. db_datareader. Đ c t t c d li u trên database.. db_datawriter. Thêm, s a, xóa d li u trên các tables ngư i dùng trong database.. db_addladmin. Thêm, s a, xóa các ñ i tư ng objects (runs all DDLs).. db_securityadmin. Qu n lý các roles, các thành viên c a role, gi y phép trong database.. db_backupoperator. Cho phép back up database.. db_denydatareader. T% ch i quy n truy v y d li u trong database.. db_denydatawriter. T% ch i quy n thay ñ i d li u trong database.. Sau khi t o login, nó t$ ñ ng nh p vào t p Users c a m<i database ñư c ch n, v i tên User trùng v i tên Login. B n có th thay ñ i thu h i vai trò c a nó trên t%ng CSDL b)ng cách s a ñ i thu c tính c a Login, ho#c chuy n ñ n t p Users c a database và thay ñ i thu c tính ho#c xoá user nào mà b n không mu n cho truy xu t data c a b n. Các Login ñư c lưu trong table SysLogins c a CSDL Master: If Exists(Select 1 From Master..SysLogins Where Name = 'Login') Các User trong m t CSDL ñư c lưu trong table SysUsers c a CSDL ñó If Exists(Select 1 From SysUsers Where Name = 'User01') Gi ng viên: Th.S Nguy n Trí Nhân. 138. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(140)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 8.2.1.2. Thay đổi thuộc tính cho Login: B m ñúp vào tên Login ho#c click ph i và ch n m c Properties 8.2.2. Sử dụng Query Analyzer: 8.2.2.1. Thêm Tài khoản với chế độ xác nhận SQL Server: SP_ADDLOGIN [ @login = ] <'Tênñăngnh p'> [, @password = ] <'password'> [, @defdb = ] <'TênCSDL'> [, @deflanguage = ] <'Ngônng '> [, @sid =] <'Mã nh n d ng Login'> [, @encriptopt = 'skip_encription' ] o @defdb: tên CSDL m#c ñ nh ñư c m khi ñăng nh p. N u không ch( ñ nh m#c ñ nh là CSDL Master. o @deflanguage: Ngôn ng m#c ñ nh o @sid: varbinary(16): Mã nh n d ng c a h th ng. N u không ch( ñ nh, h th ng t$ t o m t mã s m i. o @encriptopt varchar(20): M#c ñ nh Password s" ñư c mã hóa khi lưu trong các table h th ng. Ngo i tr% b n gán giá tr skip_encryption cho tham s này. o Th t c tr v giá tr 0 n u thành công, ngư c l i tr v giá tr 1. Ví d;: T o tài kho n tên 'myname', m t kh'u 'mypwd' vào CSDL 'QLDeTai' Sp_AddLogin 'user01', '01', 'QLDeTai' K t qu tr v : New loigin created 8.2.2.2. Cấp quyền kết nối cho User hay nhóm User của Windows kết nối đến SQL Server: SP_GRANTLOGIN [@loginame =] 'login' 'Login': <Domain>|<Computer name>\<tênnhóm> Ví d;: Thêm tài kho n cho user Windows NT [Server4\User01] k t n i ñ n SQL Server. EXEC sp_grantlogin ' Server4\User01' Hay EXEC sp_grantlogin [Server4\User01] Chú ý: Ch ñư c th c hi n b i nh ng thành viên có vai trò sysadmin và securityadmin. 8.3. 8.3. CẤP PHÁT QUYỀ QUYỀN CHO NGƯỜ NGƯỜI DÙNG 8.3.1. Sử dụng Enterprise Manager 8.3.1.1. Cấp quyền thực thi trên mỗi CSDL: Ch n database, trong m c Users b m ñúp vào tên User c*n hi u ch(nh (Login-ID). Click nút Permission ñ ch( ñ nh quy n truy c p d li u trên t%ng Table, View. Quy n. Gi ng viên: Th.S Nguy n Trí Nhân. 139. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(141)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. ki m tra RB tham chi u (DRI - Declarative Referential Integrity). Quy n th$c hi n các Procdure Store tr . Chú thích: Quy n ki m tra RB tham chi u ñư c s d ng khi Table A ñư c c p quy n Update ho c Insert. Table A có RB FOREIGN KEY v i table B, mà table B không ñư c c p quy n SELECT. 8.3.1.2. Cấp quyển tạo đối tượng trên CSDL: o Click ph i vào tên CSDL, ch n Properties o Trong HT Properties, ch n trang Permissions o Đánh d u ch n các phát bi u ñư c c*n c p quy n th$c hi n cho các User. Xóa User trên m>t CSDL: Click ph i vào tên user và ch n Delete. T5o User v.i Login ñã có: Click ph i vào m c Users và ch n New Database User... Chú ý: B n có th thay ñ i tên User b ng cách xóa và t o l i v i login cũ.. (Hình 10.3) 8.3.1.3. Xóa Tài Khoản Đăng Nhập: Click ph i vào tên Login và ch n Delete V i cách này s" xóa b các user trong các CSDL ñã ch n cho tài kho n này. 8.3.2. Sử dụng Query Analyzer 8.3.2.1. Cấp quyền truy xuất CSDL hiện hành cho Login: Sp_GrantDBAccess [ @loginname = ] 'Tênñăngnh p' [ [, @name_in_db = ] 'TênUser' ] Ví d;: Use QLDeTai Go sp_GrantDBAccess 'user01', 'Anh' 8.3.2.2. Cấp quyền thực thi trên CSDL: Bao g m các quy n: Select, Insert, Update, Delete, Reference, Excecute. GRANT ALL | <quy n> [,…] Gi ng viên: Th.S Nguy n Trí Nhân. 140. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(142)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. ON <TênTable|View>[(<tênc t>,..)] | <tênSP> TO <tên Login ho#c Role> [,…] [WITH GRANT OPTION] [AS <tên Role> ] o All: C p t t c các quy n th$c thi Select, Insert, Update, Delete hay Reference trên table hay view; quy n Excecute cho SP. o TO <tên Login ho#c Role>: Khi c p quy n cho nhóm hay user c a Windows NT, ph i ch( ñ nh: <Domain>|<Computer name>\<tênnhóm>. Đ c p quy n cho nhóm c c b Windows NT built-in, dùng t% khóa BUILTIN thay th tên domain ho#c computer name. Quy n th$c thi ñã c p cho role Public ñư c áp d ng cho t t c users trong CSDL. Quy n th$c thi ñã c p cho user Guest ñư c s d ng cho t t c Users không ñư c phân quy n truy xu t trên CSDL. Ví d;: USE QLDeTai Grant All On DeTai To User01 GO GRANT SELECT ON DeTai TO public GO GRANT INSERT, UPDATE, DELETE ON DeTai TO Mary, [ Corporate\BobJ] GO o WITH GRANT OPTION: Cho phép Login c p quy n ñã ch( ñ nh trên ñ i tư ng cho Login khác. o AS {group | role}: Đư c dùng khi quy n th$c thi trên m t ñ i tư ng ñã c p cho nhóm ho#c role, và m t User c a nhóm ho#c Role mu n c p quy n th$c thi cho User khác không là thành viên c a nhóm ho#c Role. Ví d;: table NhatKy ñư c t o b i user Lac. Lac c p quy n SELECT table NhatKy cho Role BanBe v i m nh ñ WITH GRANT OPTION ñ các user thành viên c a Role BanBe có th như ng quy n này cho các user khác không thu c Role BanBe. User Hong, là thành viên c a BanBe, mu n như ng quy n SELECT table NhatKy cho user Khoa, không là thành viên c a role BanBe. /* User Lac */ GRANT SELECT ON NhatKy TO BanBe WITH GRANT OPTION /* User Hong */ GRANT SELECT ON NhatKy TO Khoa AS BanBe Gi ng viên: Th.S Nguy n Trí Nhân. 141. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(143)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 8.3.2.3. Cấp Quyền tạo đối tượng trong CSDL: GRANT ALL | <l nh> [,…] TO <tên Login ho#c Role> [,…] Bao g m các l nh: CREATE DATABASE; CREATE DEFAULT; CREATE PROCEDURE; CREATE RULE; CREATE TABLE; CREATE VIEW; BACKUP DATABASE; BACKUP LOG Ví d;: GRANT CREATE DATABASE, CREATE TABLE TO Mary, John, [Corporate\BobJ] 8.3.2.4. Từ Chối quyền thực thi trên CSDL: DENY ALL | <quy n> [,…] [ (column [,...n ]) ] ON { table | view } | ON table | view [ (column [,...n ]) ] | ON stored_procedure TO <tên Login ho#c Role> [,…] [Cascade] Ví d;: USE QLDeTai GO GRANT SELECT ON DeTai TO public GO DENY SELECT, INSERT, UPDATE, DELETE ON DeTai TO Mary, John, Tom 8.4. 8.4. THU HỒ HỒI QUYỀ QUYỀN ĐÃ ĐÃ CẤ CẤP PHÁT CHO NGƯỜ NGƯỜI DÙNG 8.4.1. Xóa quyền truy xuất CSDL hiện hành: Sp_RevokeDBAccess [ @name_in_db = ] 'TênUser' Ví d;: Sp_RevokeDBAccess 'Anh' 8.4.2. Xóa bỏ quyền thực thi đã cấp hoặc từ chối trên CSDL: REVOKE [ GRANT OPTION FOR ] { ALL | permission [,...n ] } [ (column [,...n ]) ] ON { table | view } | ON { table | view } [ (column [,...n ]) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } TO | FROM security_account [,...n ] [ CASCADE ] [ AS { group | role } ] Ví d;: Xóa b quy n Select ñã t% ch i cho User Mary trên table DeTai. REVOKE SELECT ON DeTai TO Mary Gi ng viên: Th.S Nguy n Trí Nhân. 142. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(144)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. 8.4.3. Xóa bỏ quyền tạo đối tượng đã cấp hoặc từ chối trên CSDL: REVOKE { ALL | statement [,...n ] } FROM security_account [,...n ] Ví d;: REVOKE CREATE TABLE FROM Joe, [Corporate\BobJ]. Gi ng viên: Th.S Nguy n Trí Nhân. 143. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(145)</span> Bài gi ng: H qu n tr cơ s d li u 2 – SQL Server. B c Cao Đ ng Công ngh Thông tin. TÀI LIỆU THAM KHẢO [1]. Marcilina S. Garcia, Jamie Reding, Edward Whalen, Steve Adrien DeLuca, SQL Server 2000 Administrator’s Companion, Microsoft Press, 2000. [2]. Microsoft SQL Server 2000 System Administration Training kit [3]. Tr*n Nguyên Phong, Bài gi ng SQL Server , Đ i h c khoa h c, Đ i h c Hu .. Gi ng viên: Th.S Nguy n Trí Nhân. 144. Khoa Công ngh Thông tin Đ i h c Ph m Văn Đ ng.
<span class='text_page_counter'>(146)</span> TRƯƠNG Đ/I HEC PH/M VĂN ĐGNG KHOA CÔNG NGH THÔNG TIN. BÀI GI NG:. H QU N TR CƠ S D SQL SERVER. LI U 2. Gi ng viên: Th.S Nguy n Trí Nhân. Qu ng Ngãi, 12/2013.
<span class='text_page_counter'>(147)</span>