SQL là viết tắt của Structure Query Language, nó là một công cụ quản lý dữ liệu được sử dụng phổ biến ở nhiều lĩnh vực. Hầu hết các ngôn ngữ bậc cao đều có trình hỗ trợ SQL như Visual Basic, Oracle,Visual C ... Trong Oracle tất cả các chương trình và người sử dụng phải sử dụng SQL để truy nhập vào dữ liệu trong CSDL của Oracle. Các chương trình ứng dụng và các công cụ Oracle cho phép người sử dụng truy nhập tới CSDL mà không cần sử dụng trực tiếp SQL. Nhưng những ứng dụng đó khi chạy phải sử dụng SQL.
TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN TIN HỌC KINH TẾ -*** - ĐỀ TÀI : TÌM HIỂU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQL SERVER 2005 VÀ CÁC ỨNG DỤNG CỦA SQL SERVER 2005 Nhóm sinh viên thực : Bùi Thị Khánh Linh Đoàn Thị Linh Nguyễn Thị Huế Trần Quang Huy Nguyễn Văn Khôi Lớp : Tin học Kinh tế K56 Hà Nội, 06/2013 MỤC LỤC LỜI MỞ ĐẦU Ngày nay, có nhiều hệ số hội tụ để tạo nên bùng nổ lưu trữ thông tin Lượng thông tin số bên tổ chức ngày tăng cách rõ rệt nhiều kiểu khác số hóa liệu từ ảnh số, video tín hiệu cảm biến Việc tăng thi hành tính tồn cầu hóa u cầu thơng tin lưu cách an toàn phải truy cập lúc Người dùng phải di chuyển qua hàng núi liệu để tìm thơng tin thích đáng Mặt khác họ muốn sử dụng thông tin thiết bị bên ứng dụng sử dụng hàng ngày Microsoft Office System Với phát triển công nghệ, chi phí cho việc lưu trữ giảm đáng kể; ổ đĩa FLASH cho phép lưu trữ lượng liệu lớn thiết bị Chính tổ chức lưu nhiều liệu giảm chi phí cho việc lưu trữ Mặc dù vậy, tồn nhiều khó khăn thách thức cịn việc quản lý bùng nổ liệu Toàn cảnh tảng liệu Microsoft đề cập đến vấn đề cần thiết việc bùng nổ liệu hệ ứng dụng thao tác liệu việc cung cấp liệu lúc, nơi Các tổ chức yêu cầu tảng liệu lưu quản lý liệu khác gồm XML, email, thời gian/lịch biểu, file, tài liệu, tính khơng gian… cung cấp loạt dịch vụ phong phú để tương tác với liệu như: tìm kiếm, truy vấn, phân tích, báo cáo, tích hợp liệu liên tục, đồng hóa liệu Người dùng truy cập thông tin từ ứng dụng đến kho lưu trữ liệu truy cập thiết bị nào, từ máy trạm hay thiết bị di động Nền tảng liệu Microsoft giải pháp xuyên suốt cần cho thách thức tồn nữa, việc đưa cách tân bốn lĩnh vực nhằm hỗ trợ cho liệu: Nền tảng cho nhiệm vụ then chốt, phát triển động, liệu quan hệ mở rộng, thông tin tồn doanh nghiệp Hãy tìm hiểu cách Sql server 2012 đáp ứng cần thiết cho hệ ứng dụng thao tác liệu CHƯƠNG I: GIỚI THIỆU VỀ SQL 2012 1.1 Giới thiệu chung SQL 1.1.1 SQL gì? - SQL viết tắt Structure Query Language, công cụ quản lý liệu sử dụng phổ biến nhiều lĩnh vực Hầu hết ngôn ngữ bậc cao có trình hỗ trợ SQL Visual Basic, Oracle,Visual C - Trong Oracle tất chương trình người sử dụng phải sử dụng SQL để truy nhập vào liệu CSDL Oracle Các chương trình ứng dụng cơng cụ Oracle cho phép người sử dụng truy nhập tới CSDL mà không cần sử dụng trực tiếp SQL Nhưng ứng dụng chạy phải sử dụng SQL 1.1.2 Lịch sử phát triển: - SQL phát triển từ ngơn ngữ SEQUEL2 IBM theo mơ hình Codd trung tâm nghiên cứu IBM California, vào năm 70 cho hệ thống QTCSDL lớn - Đầu tiên SQL sử dụng ngôn ngữ quản lý CSDL chạy máy đơn lẻ Song phát triển nhanh chóng nhu cầu xây dựng CSDL lớn theo mơ hình khách chủ (trong mơ hình tồn CSDL tập trung máy chủ (Server)) Mọi thao tác xử lý liệu thực máy chủ lệnh SQL máy trạm dùng để cập nhập lấy thông tin từ máy chủ) Ngày ngôn ngữ lập trình bậc cao có trợ giúp SQL Nhất lĩnh vực phát triển Internet ngơn ngữ SQL đóng vai trị quan trọng Nó sử dụng để nhanh chóng tạo trang Web động SQL viện tiêu chuẩn quốc gia Mỹ (ANSI) tổ chức tiêu chuẩn quốc tế (ISO) chấp nhận ngôn ngữ chuẩn cho CSDL quan hệ Nhưng chuẩn chưa đưa đủ 100% Nên SQL nhúng ngôn ngữ lập trình khác bổ xung mở rộng cho SQL chuẩn cho phù hợp với ứng dụng Do có khác rõ ràng giưã SQL 1.2 Đặc điểm SQL đối tượng làm việc: 1.2.1 Đặc điểm: - SQL ngôn ngữ tựa tiếng Anh - SQL ngôn ngữ phi thủ tục, khơng u cầu ta cách thức truy nhập CSDL Tất thông báo SQL dễ sử dụng + + + khả mắc lỗi SQL cung cấp tập lệnh phong phú cho công việc hỏi đáp DL Chèn, cập nhật, xoá hàng quan hệ Tạo, sửa đổi, thêm xoá đối tượng CSDL Điều khiển việc truy nhập tới sở liệu đối tượng CSDL để đảm bảo tính bảo mật sở DL + Đảm bảo tính quán ràng buộc CSDL - Yêu cầu để sử dụng cho hỏi đáp phải nắm vững cấu trúc CSDL 1.2.2 Đối tượng làm việc SQL - Là bảng (tổng quát quan hệ) liệu hai chiều Các bảng bao gồm nhiều cột hàng Các cột gọi trường, hàng gọi ghi Cột với tên gọi kiểu liệu (kiểu liệu cột nhất) xác định tạo nên cấu trúc bảng (Ta dùng lệnh Desc[ribe] TABLE-name để xem cấu trúc bảng, phần tuỳ chọn bỏ Oracle) Khi bảng tổ chức hệ thống cho mục đích có CSDL 1.3 Các kiểu liệu SQL: - Integer: Số nguyên: -2147483648 đến 2147483647 - Smallinteger: -32768 đến 32767 - Number(n,p): số thập phân độ dài tối đa n kể p chữ số thập phân (khơng tính dấu chấm) - Char(n): xâu có độ dàI cố định n (n n) - Long varchar: xâu có độ dài khơng cố định, độ dài thay đổi 4Kb => 32Kb - Date: Dữ liệu kiểu ngày 1.4 Một số tính SQL 2012 1.4.1 Giải pháp AlwaysOn Availability Group: Đây giải pháp thay đáng giá cho giải pháp Database Mirroring Log Shipping phiên Sql server 2012 trước AlwaysOn Availability Group cung cấp giải pháp hợp việc triển khai giải pháp HA (High Availability) DR (Disaster Recovery) Có mơ hình lựa chọn triển khai: AlwaysOn Availability Group cho local HA site-to-site DR Kết hợp AlwaysOn Availability Group cho local HA Failover Cluster Instance (FCI) cho DR Sẽ sớm có loạt viết nói rõ giải pháp với nội dung dự định sau: Giới thiệu giải pháp AlwaysOn Các chế độ đồng chế độ Failover tương quan Một số mơ hình ví dụ triển khai 1.4.2 Một số cải tiến bảo mật: Default Schema for Windows Group Ở phiên Sql server 2012 R2, Instance, người quản trị tạo Login sử dụng chung cho Windows Group Khi Domain User Group login vào instance mà khơng cần phải tạo login riêng cho user Việc giúp cho người quản trị tiết kiệm nhiều thời gian Tuy nhiên, vấn đề tồn tại, user login lần vào truy cập đến database (để truy vấn liệu, chẳng hạn), user schema tương ứng tự động tạo database Như vậy, user lại có schema khác Đây hạn chế gây nhiều khó khăn việc quản trị Để khắc phục, phiên Sql server 2012 cung cấp cho người quản trị khả gán Default Schema cho Group Khi tất User Group sử dụng chung, cách ngầm định (implicit), Schema User-Defined Server Roles Đây tính quản trị người quản trị yêu cầu nhiều Tính cho phép tạo tùy biến Server Roles Như vậy, thay sử dụng Role có sẵn cấp server (fixed-server roles) phiên Sql server 2012 trước đây, người quản trị tạo thêm User-Defined Server Roles phù hợp với yêu cầu quản trị Ví dụ người quản trị cần gán số quyền cấp cao (thay đổi Login, thay đổi số setting instance, …) cho user đó, thay phải gán quyền cao Sysadmin, người quản trị tạo role DatabaseTuner role với số quyền định Contained Databases Contained Database cung cấp khả lưu trữ thông tin chứng thực (credential information) user theo database thay lưu Master database trước Khả giúp cho database phụ thuộc vào system databases Điều đồng nghĩa với việc tính bảo mật database tăng lên khả triển khai ứng dụng linh hoạt Sẽ có mức lựa chọn cho Contained Database: Partial Full Tuy nhiên, nhiều khả tính phiên Sql server 2012 hỗ trợ mức Partial (và mức Full phiên tiếp theo) Crypto Enchancement Nhiều thuật tốn mã hóa AES256, SHA2 (256 512), … hỗ trợ giúp cho việc mã hóa liệu Sql server 2012 tốt bao hết Audit Enhancement Các tính giám sát cải tiến nhiều Sql server 2012, kể số tính như: User-defined Audit cho phép ứng dụng ghi lại log với thông tin mong muốn theo chế giám sát Sql server 2012; Filtering Audit giúp lọc thông tin mong muốn ghi xuống log theo điều kiện định nghĩa trước; … đặc biệt tính Audit hỗ trợ tất (edition) Sql server 2012 khác 1.4.3 Các tính ưu việt sql server 2012 Tránh trùng lặp liệu Một số bất biến công nghệ ngành công nghiệp IT yêu cầu lưu trữ liệu đòi hỏi gia tăng nhanh Từ việc phình to hộp thư điện tử tràn ngập tài liệu chia sẻ làm doanh nghiệp có nhu cầu sử dụng lưu trữ hiệu Đó lý tính chống trùng lặp liệu (Data deduplication) xuất Chương trình hoạt động sau: Giả sử bạn có số lượng lớn file VHD (virtual hard drive) cần di chuyển Mỗi VHD có nhiều file ứng dụng giống nhau, trò chơi dị mìn minesweeper, Windows calculator ứng dụng khác Accessories Data deduplication gỡ bỏ toàn ứng dụng từ VHD mà giữ lại Sau liệu cịn lại lưu vị trí tách biệt SVI (System Volume Information) trỏ tới file đóng vai trò mẫu nguồn (source template) Việc giúp giải phóng khối lượng lớn khơng gian nhớ đặc biệt áp dụng cho hàng ngàn file Data deduplication có tác dụng với nhiều mạng máy tính khác máy tính chạy Windows hay Windows Server 2012 Nếu bạn có nhiều file liệu cần lưu mà khơng đủ nhớ tính thực hữu ích Tùy chọn cài đặt cho phép loại bớt GUI Windows Server 2012 có tùy chọn cài đặt mặc định cho phép cài đặt server core GUI Người dùng cài đặt Windows Server 2012 với giao diện người dùng tối thiểu nhất, tức họ chí có nhiều cách để cài đặt file Windows Server cần Việc giúp làm giảm không gian ổ đĩa, giảm thiểu nguy công từ hacker nhờ hạn chế số lượng file cài xuống tối thiểu Hyper-V 3.0 Windows Server 2012 nạp nhiều tính mới, có lẽ tính coi cải tiến lớn ảo hóa Hyper-V Từ bỏ VMware, Microsoft bổ sung cho Hyper-V danh sách cải tiến vô ấn tượng Một số hỗ trợ tới 64 xử lý 1TB RAM máy ảo, hỗ trợ tới 320 xử lý phần cứng mức logic 4TB RAM máy chủ (host) Thông điệp rõ ràng: Microsoft làm thứ để đánh đổ vị trí VMware, chọn lựa tảng ảo hóa hàng đầu cho doanh nghiệp thời điểm Quản lý địa IP (IPAM) Một mối lo lớn nhiều chuyên gia IT giám sát địa IP sử dụng mạng tổ chức IPAM tính Windows Server 2012 cho phép định vị quản lý không gian địa IP mạng Người dùng quản lý giám sát server DNS DHCP Tính khám phá IP tự động cung cấp máy chủ (host) chứa tác vụ khác liên quan đến IP, tập trung vào quản lý, giám sát kiểm kê Các thay đổi ảo hóa mạng Một khía cạnh cịn khúc mắc việc quản lý cung cấp máy ảo đối phó với quy định chế tài từ quản lý địa IP Microsoft tiến hành cải tiến lớn cho ảo hóa mạng Windows Server 2012, tất nhắm tới xử trí vấn đề liên quan đến địa IP máy ảo Tính mở đường cho thừa nhận đám mây riêng, tháo dỡ rào chắn cho phép tiếp cận IaaS dễ dàng Re-FS Định dạng file hệ thống NTFS sử dụng thập kỷ qua Microsoft Các yêu cầu gần từ ảo hóa điện tốn đám mây riêng địi hỏi nhiều từ NTFS, Microsoft định bổ sung tính gia cố tính cho NTFS Kết nâng cấp NTFS gọi Re-FS xuất Re-FS hỗ trợ file kích thước thư mục lớn hơn, dọn dẹp ổ đĩa, cải thiện hiệu năng, hỗ trợ ảo hóa nâng cao… Chuyển dịch máy ảo Một tính ấn tượng Hyper-V 3.0 shared nothing live migration, cho phép người dùng di dời máy ảo từ máy sang máy khác với đòi hỏi phải có lưu trữ chung trước tiến hành chuyển nhượng Tính có lợi cho phận IT nhỏ giúp dễ dàng di dời máy ảo mà không cần lưu trữ chia sẻ đắt tiền Đây tính ấn tượng Windows Server 2012 giúp cho phòng ban IT vừa nhỏ trở nên nhạy bén phản ứng nhanh nhu cầu doanh nghiệp khách hàng Kho lưu trữ không gian lưu trữ Việc sử dụng hiệu tất dạng lưu trữ tách biệt đơi cơng việc khó khăn, đặc biệt nhu cầu lưu trữ ngày gia tăng Microsoft hi vọng giúp nhà quản trị giải vấn đề cách giới thiệu hai khái niệm Storages Spaces Windows Server 2012 Kho lưu trữ (Storage Pools) tổng hợp thiết bị lưu trữ vật lý vào đơn vị gắn kết giúp dễ dàng việc bổ sung dung lượng nhớ cắm thêm lưu trữ Như đề cập trước đó, thiết bị lưu kho lưu đồng loại thiết bị hay kích thước lưu trữ Bạn kết hợp thiết bị kích thước lưu trữ Không gian lưu trữ (Storage Spaces) cho phép người dùng tạo ổ đĩa ảo có đặc điểm thiết bị thực: Có thể cắm, tháo, lưu dự phòng mặt khác quản lý với ổ đĩa vật lý truyền thống Nhưng Spaces chí cịn có tính hữu ích Chúng có thêm chức phụ lưu dự phịng, khơi phục… PowerShell 3.0 Microsoft hỗ trợ PowerShell Windows Server 2012 Hơn 2000 câu lệnh PowerShell (cmdlet) bổ sung cho phép nhà quản trị quản lý môi trường Windows Server tốt Bản cập nhật cải thiện khả truy cập Web, hẹn lịch, hỗ trợ phiên ngắt kết nối nhiều tính khác Trong trường hợp khơng điền giá trị cho tham số @_Id kết lấy toàn danh sách danh mục đối tượng Cách 2: Thực thi thủ tục cầu lệnh T-SQL, bạn mở cửa sổ Query nhập vào nội dung sau: USE [QLHTK] EXECUTE [dbo].[DmDtGetData] @_Id = Trong nội dung câu lệnh USE [QLHTK] sử dụng để chọn tới Database QLHTK, sau từ khóa EXECUTE tên thủ tục cần thực hiện, tiếp đến gán giá trị cho tham số, cụ thể gán cho tham số @_ID giá trị Kết cho hình đây: 8.2.3 Xóa thủ tục lưu Để xóa thủ tục lưu sử dụng hai cách sau đây: Cách 1: Nhấp phải chuột vào thủ tục lưu cần xóa chọn Delete Hộp thoại Delete Objects xuất nhấp Ok để thực xóa thủ tục lưu Cách 2: Mở cửa sổ New Query mới, nhập vào nội dung sau: DROP PROCEDURE [dbo].[DmDtGetData] Nhấn F5 để thực xóa thủ tục lưu 8.3 Sử dụng bảng tạm Đối với thủ tục lưu phức tạp, kết cuối có qua nhiều bước tính tốn việc sử dụng câu lệnh T-SQL cho tất cơng việc vô phức tạp Tuy nhiên sử dụng bảng chung gian (bảng tạm) để lưu kết bước tính tốn sau kết hợp chúng lại với chuyện trở nên dễ dàng Ví dụ cần viết báo cáo nhập xuất tồn vật tư, với học hạn chế phần trước nghĩ đến việc sử dụng UNION để kết hợp nhiều câu lệnh SELECT, tồn đầu, nhập, xuất, tính tốn lượng tồn kho Tuy nhiên với cách số liệu vật tư nằm dịng khác tất nhiên khơng phải đáp án đầu Bây suy nghĩa theo hướng khác giả sử tạo bảng tạm có đầy đủ cột mã, tên vật tư, tồn đầu, xuất, nhập tồn cuối Bước thứ INSERT vào danh sách vật tư, số dư đầu tương ứng với vật tư bảng tạm vừa tạo Làm tương tự với giá trị nhập – xuất tồn có kết yêu cầu đầu đưa Sau ví dụ cách sử dụng bảng tạm: Viết báo cáo tổng hợp nhập kho bao gồm thông tin sau: Ma_Vt, Ten_Vt, Dvt, So_Luong, Don_Gia, Thanh_Tien (Đặt tên cho thủ tục lưu usp_Tong_Hop_Nhap_Kho) Bạn mở cửa sổ New Query thêm vào nội dung câu lệnh sau: CREATE PROCEDURE [dbo].[usp_Tong_Hop_Nhap_Kho] AS BEGIN SET NOCOUNT ON; Tạo bảng tạm tên bảng tạm bắt đầu dấu # CREATE TABLE #BaoCao (Ma_Vt NCHAR(16), Ten_Vt NVARCHAR(64), Dvt NVARCHAR(8), So_Luong NUMERIC(18, 2), Don_Gia NUMERIC(18, 2), Thanh_Tien NUMERIC(18, 0)) Chèn liệu vào bảng tạm lấy từ CT CTCT INSERT INTO #BaoCao SELECT CtCt.Ma_Vt, N'', N'', SUM(So_Luong) AS So_Luong, SUM(So_Luong * Don_Gia) / SUM(So_Luong) AS Don_Gia, SUM(So_Luong * Don_Gia) AS ThanhTien FROM CtCt CtCt.Stt_Ct = Ct.Stt_Ct LEFT OUTER JOIN Ct ON WHERE ct.Nhom_Ct = GROUP BY CtCt.Ma_Vt Cập nhật tên đơn vị tính cho vật tư hàng hóa UPDATE #BaoCao SET Ten_Vt = vt.Ten_Vt, Dvt = vt.Dvt FROM #BaoCao AS bc LEFT OUTER JOIN DmVt AS vt ON bc.Ma_Vt = vt.Ma_Vt Lấy liệu từ bảng tạm SELECT * FROM #BaoCao Xóa bảng tạm DROP TABLE #BaoCao END Như qua ví dụ thấy từ cách tạo bảng tới việc sử dụng câu lệnh SELECT, INSERT, UPDATE,… cho bảng tạm tương tự bảng thường Trong thủ tục lưu bạn tạo nhiều bảng tạm để sử dụng vào nhiều mục đích khác nhau, lưu ý khơng sử dụng nên xóa bảng tạm câu lệnh DROP TABLE Cũng với ví dụ cách viết khác mô tả cách tạo sử dụng bảng tạm CREATE PROCEDURE [dbo].[usp_Tong_Hop_Nhap_Kho] AS BEGIN SET NOCOUNT ON; Ở cách thứ phải tạo bảng tạm sau chèn liệu vào câu lệnh INSERT Tuy nhiên với cách bảng tạm tạo từ câu lệnh SELECT kết mệnh đề INTO #BaoCao SELECT CtCt.Ma_Vt, CAST(N'' AS NVARCHAR(64)) AS Ten_Vt, CAST(N'' AS NVARCHAR(8)) AS Dvt, SUM(So_Luong) AS So_Luong, SUM(So_Luong * Don_Gia) / SUM(So_Luong) AS Don_Gia, SUM(So_Luong * Don_Gia) AS ThanhTien INTO #BaoCao FROM CtCt LEFT OUTER JOIN Ct ON CtCt.Stt_Ct = Ct.Stt_Ct WHERE ct.Nhom_Ct = GROUP BY CtCt.Ma_Vt Các bước sau tạo bảng tạm tương tự phần trước UPDATE #BaoCao SET Ten_Vt = vt.Ten_Vt, Dvt = vt.Dvt FROM #BaoCao AS bc LEFT OUTER JOIN DmVt AS vt ON bc.Ma_Vt = vt.Ma_Vt SELECT * FROM #BaoCao DROP TABLE #BaoCao END Lưu ý: Với cách thấy bảng tạm tạo mệnh đề INTO đặt sau danh sách trường trước từ khóa FROM Ngay sau INTO tên bảng tạm bắt đầu dấu # 8.4 Tìm hiểu Cursors Nếu giải thích cách ngắn gọn cursor tương tự recordset hay dataset ngơn ngữ lập trình Nghĩa select số data vào nhớ sau làm việc với ghi cách di chuyển qua ghi (Move Next ) Có loại cursors Transact- SQL Cursors, API Cursors Client Cursors Trong Transact-SQL API thuộc loại Server Cursors nghĩa cursors load lên làm việc bên phía server Trong khn khổ học ta nghiên cứu Transact-SQL cursors Transact-SQL cursors tạo server câu lệnh TransactSQL chủ yếu dùng stored procedures triggers Trước hết xem qua ví dụ cursor: Viết thủ tục sử dụng Cursor để in danh sách khách hàng, nhà cung cấp danh mục đối tượng (thủ tục đặt tên usp_DmDtPrint) CREATE PROCEDURE [dbo].[usp_DmDtPrint] AS BEGIN SET NOCOUNT ON; DECLARE @_Ma_Dt NVARCHAR(40), @_Ten_Dt NVARCHAR(20) 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 = BEGIN 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ụ ta select Ma_Dt Ten_Dt từ bảng DmDt Database QLHTK nạp vào DmDtCursor sau in tên đối tượng hình Ðể làm việc với cursor ta cần theo bước sau: - Dùng câu lệnh DECLARE CURSOR để khai báo cursor Khi khai báo ta phải cho biết câu lệnh SELECTsẽ thực để lấy liệu DECLARE DmDtCursor CURSOR FOR SELECT Ma_Dt, Ten_Dt FROM DmDt - Dùng câu lệnh OPEN để đưa liệu lên nhớ ảo (memory) Ðây lúc thực câu lệnh SELECT vốn khai báo OPEN DmDtCursor - Dùng câu lệnh FETCH để lấy hàng data từ record set Cụ thể ta phải gọi câu lệnh FETCH nhiều lần FETCH tương tự lệnh Move ADO recordset chỗ di chuyển tới lui câu lệnh FETCH FIRST, FETCH NEXT, FETCH PRIOR, FETCH LAST, FETCH ABSOLUTE n, FETCH RELATIVE n khác chỗ lấy data bỏ vào variable (FETCH FROM INTO variable_name) Thông thường ta FETCH data trước sau loop record cuối Cursor vòng lặp WHILE cách kiểm tra global variable @@FETCH_STATUS (=0 nghĩa thành công) FETCH NEXT FROM DmDtCursor INTO @_Ma_Dt, @_Ten_Dt - Khi ta di chuyển tới ghi ta UPDATE hay DELETE tùy theo nhu cầu (trong thí dụ 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) giải phóng cursor cịn khai báo OPEN trở lại CLOSE DmDtCursor - Dùng câu lệnh DEALLOCATE để phóng thích hồn tồn tài nguyên dành cho cursor (kể tên cursor) DEALLOCATE DmDtCursor Lưu ý: Trong ví dụ trước dùng Cursor phải khai báo trước hai biến @_Ma_Dt @_Ten_Dt để chứa giá trị lấy từ cursor CHƯƠNG 9: TẠO MỚI VÀ SỬA ĐỔI TRIGGER Cũng với ví dụ phần trước thực tạo Trigger Database QLHTK, bước thực sau: Bước 1: Khởi động Sql server 2012 Bước 2: Tìm tới bảng cần tạo Trigger Database, nhấp phải chuột vào mục Trigger chọn New Trigger… Bước 3: Một hình New Query xuất hiện, xóa comment câu lệnh thừa nội dụng Trigger mà chương trình tạo sẵn hình đây: - Sau từ khóa CREATE TRIGGER thay tên Trigger: [dbo].[DmDtTriggerLog] - Sau từ khóa ON thay tên bảng chứa Trigger: [dbo] [DmDt] - Sau từ khóa AFTER thay biến cố sảy thực Trigger INSERT, UPDATE - Cuối vòng BEGIN… END nội dụng câu lệnh T-SQL thực thi Trigger hoạt động Kết cuối hình đây: Bước 4: Hãy nhấn phím F5 nhấp chọn nút Execute công cụ để thực thi Trigger Bây xem hoạt động Trigger mà vừa tạo, mở liệu bảng DmDt sau chỉnh sửa thơng tin ghi bạn thấy chương trình tự động cập nhật thời gian chỉnh sửa vào cột ModifiedAt, điều tương tự sảy bạn thêm ghi vào bảng Khi có nhu cầu sửa lại nội dung Trigger vừa tạo nhấp phải chuột vào Trigger cửa sổ Object Explorer chọn Modified Một cửa số New Query xuất thay từ khóa CREATE TRIGGER ALTER TRIGGER sau thực thay đổi cần thiết thực thi lại Trigger (nhấn phím F5 nhấp chọn nút Execute công cụ) Lưu ý: Ðôi Khi ta muốn trigger thực hoạt động hay vài column Update khơng phải column Khi ta dùng hàm Update(Column_Name) để kiểm tra xem column có bị update hay khơng Ví dụ: Trong bảng DmDt trường Ma_Dt trường khóa xác định ghi nhất, liệu trường xuất bảng CT, để toàn vẹn liệu người dùng sửa mã bảng DMDT đồng thời phải sửa Ma_Dt tương ứng bảng CT Cơng việc làm thủ cơng khó thực với Database nhiều liệu Chúng ta viết Trigger thực công việc cách tự động Nội dung sau: CREATE TRIGGER [dbo].[DmDtTriggerUpdateMa_Dt] ON [dbo].[DMDT] AFTER UPDATE AS BEGIN IF UPDATE(Ma_Dt) BEGIN DECLARE @_Ma_Dt_Old NCHAR(16), @_Ma_Dt_New NCHAR(16) SET @_Ma_Dt_New = (SELECT Ma_Dt FROM @_Ma_Dt_Old = (SELECT Ma_Dt FROM INSERTED) SET DELETED) UPDATE CT SET Ma_Dt = @_Ma_Dt_New WHERE Ma_Dt = @_Ma_Dt_Old END END Để thấy kết bạn thử sửa mã đối tượng bảng DMDT thấy thay đổi tương ứng bảng CT KẾT LUẬN Qua tìm hiểu thơng tin hệ sở liệu SQL Server 2012, nhóm em hiểu biết thêm