Tài liệu T-SQL và Stored Procedure

SQL Server 2000 ra đời đã mở rộng từ việc thực thi, sự thuận tiện đến chất lượng từ SQL Server 7.0. Microsoft SQL Server 2000 bao gồm những tính năng mới, làm nền tảng cho những chuyển tác trực tuyến (OLTP), kho dữ liệu và những ứng dụng thương mại.

Transact-SQL là trung tâm để sử dụng của Microsoft SQL Server. Tất cả ứng dụng liên lạc với SQL Server làm việc bằng cách gửi những câu lệnh T-SQL đến Server mà không chú ý tới giao diện của ứng dụng.

T-SQL được sinh ra bởi nhiều loại ứng dụng:

Ứng dụng văn phòng chung.

Ứng dụng sử dụng giao diện đồ hoạ, cho phép người sử dụng chọn các bảng, cột để hiển thị dữ liệu cần dùng.

Transact-SQL script sử dụng tiện ích như osql.

Ứng dụng được tạo từ các hệ thống phát triển như Microsoft Visual C++®, Microsoft Visual Basic®, hay Microsoft Visual J++® sử dụng database API như ADO, OLE DB và ODBC.

Các ứng dụng web lấy dữ liệu từ SQL Server.

 

Tài liệu này sẽ đề cập đến T-SQL và Stored Procedure. Tài liệu cung cấp những phát biểu T-SQL từ cơ bản đến phức tạp, cùng với các ví dụ để người đọc có thể hình dung cụ thể về cách sử dụng và kết quả. Ngoài ra, tài liệu còn giúp người đọc xây dựng những thủ tục (SP) tính toán, được áp dụng trong thực tế .

 

doc46 trang | Chia sẻ: oanh_nt | Lượt xem: 1232 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Tài liệu T-SQL và Stored Procedure, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MỤC LỤC Mục Lục Lời nói đầu Giới thiệu chung về SQL Server Chương 1: T-SQL I. Các khái niệm cơ bản II. Truy vấn tạo lập III. Các phát biểu cơ bản của SQL Server IV. Mệnh đề nối nhiều bảng V. Sửa đổi cấu trúc dữ liệu VI. Mệnh đề quản trị CSDL VII. Mệnh đề Backup CSDL Chương 2: Thủ tục thường trú (Stored Procedure) I. Các khái niệm cơ bản II. Tạo thủ tục thường trú III. Một số thủ tục thường trú Tài liệu tham khảo 2 3 4 6 6 11 19 22 26 32 34 36 36 40 44 47 LỜI NÓI ĐẦU SQL Server 2000 ra đời đã mở rộng từ việc thực thi, sự thuận tiện đến chất lượng từ SQL Server 7.0. Microsoft SQL Server 2000 bao gồm những tính năng mới, làm nền tảng cho những chuyển tác trực tuyến (OLTP), kho dữ liệu và những ứng dụng thương mại. Transact-SQL là trung tâm để sử dụng của Microsoft SQL Server. Tất cả ứng dụng liên lạc với SQL Server làm việc bằng cách gửi những câu lệnh T-SQL đến Server mà không chú ý tới giao diện của ứng dụng. T-SQL được sinh ra bởi nhiều loại ứng dụng: Ứng dụng văn phòng chung. Ứng dụng sử dụng giao diện đồ hoạ, cho phép người sử dụng chọn các bảng, cột để hiển thị dữ liệu cần dùng. Transact-SQL script sử dụng tiện ích như osql. Ứng dụng được tạo từ các hệ thống phát triển như Microsoft Visual C++®, Microsoft Visual Basic®, hay Microsoft Visual J++® sử dụng database API như ADO, OLE DB và ODBC. Các ứng dụng web lấy dữ liệu từ SQL Server. Tài liệu này sẽ đề cập đến T-SQL và Stored Procedure. Tài liệu cung cấp những phát biểu T-SQL từ cơ bản đến phức tạp, cùng với các ví dụ để người đọc có thể hình dung cụ thể về cách sử dụng và kết quả. Ngoài ra, tài liệu còn giúp người đọc xây dựng những thủ tục (SP) tính toán, được áp dụng trong thực tế . Giới thiệu chung về SQL Server SQL Server 2000 được phát triển và thương mại hoá theo nhiều ấn bản như CE, Personal, Desktop Engine, Standard, Developer, Enterprise. Microsoft SQL Server 2000 bao gồm những thành phần chính sau: Hệ thống Diễn giải Ấn bản SQL Server 2000 Đây là thành phần chính của hệ thống, là trung tâm điều hành những phần thực thi khác. Desktop Engine có các dịch vụ trong hệ thống như SQL Server Agent, Distributed Transaction Coordinator, SQL Server Profiler, Enterprise Manager, và một số công cụ hỗ trợ khác. Desktop Engine Personal Standard Developer Enterprise Full-Text Search Đây là phần người dùng chọn trong lúc cài đặt, hỗ trợ chức năng tìm kiếm. Nó cung cấp chức năng tìm kiếm theo từ rất mạnh. Personal (trừ Win 95) Standard Developer Enterprise English Query English Query cho phép người sử dung không có kỹ thuật về SQL cũng có thể sử dụng SQL Server, bằng cách đặt câu hỏi bằng chuỗi tiếng anh sau đó được dịch ra Query để thực thi trên SQL Server. Personal Standard Developer Enterprise Analysis Services Công cụ công cụ phân tích OLAP (Online Analytical Processing), sử dụng cho cơ sở dữ liệu lớn. Personal Standard Developer Enterprise Replication Công cụ tạo một bản sao đến SQL Server khác. Thông thường công cụ này được dùng cho các hệ thống Server từ xa hay trong Network, nhằm giảm trao đổi dữ liệu giữa các SQL Server với nhau. Desktop Engine Personal Standard Developer Enterprise Data Transformation Services Dịch vụ thực hiện trao đổi dữ liệu giữa các cơ sở dữ liệu khác nhau. Desktop Engine Personal Standard Developer Enterprise Chương 1: T-SQL I - Các khái niệm cơ bản của T-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. 1. Các lệnh của T-SQL được chia làm 3 nhóm: a. 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...thường có dạng Create object_Name Alter object_Name Drop object_Name b. 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...). Thường có dạng sau: Grant Revoke Deny c. Data Manipulation Language (DML): Ðây là những lệnh phổ biến dùng để xử lý data như Select, Update, Insert, Delete Để chạy các câu lênh T-SQL, chúng ta cần sử dụng Query Analyzer, một công cụ có sẵn trong SQL Server: 2. Cú Pháp Của T-SQL: a. Identifiers Ðây chính là tên của các database object. Nó dùng để xác định một object. (Chú ý khi nói đến Object trong SQL Server là chúng ta muốn đề cập đến table, view, stored procedure, index.....Vì hầu như mọi thứ trong SQL Server đều được thiết kế theo kiểu hướng đối tượng (object-oriented)). Trong ví dụ sau TableX, KeyCol, Description là những identifiers CREATE TABLE TableX (KeyCol INT PRIMARY KEY, Description NVARCHAR(80)) Có hai loại Identifiers một loại thông thường (Regular Identifier) và một loại gọi là Delimited Identifier, loại này cần có dấu "" hay dấu [] để ngăn cách. Loại Delimited được dùng đối với các chữ trùng với từ khóa của SQL Server (reserved keyword) hay các chữ có khoảng trống. Ví dụ: SELECT * FROM [My Table] WHERE [Order] = 10 Trong ví dụ trên chữ Order trùng với keyword Order nên cần đặt trong dấu ngoặc vuông []. b. Variables (Biến) Biến trong T-SQL cũng có chức năng tương tự như trong các ngôn ngữ lập trình khác nghĩa là cần khai báo trước loại dữ liệu trước khi sử dụng. Biến được bắt đầu bằng dấu @ (Ðối với các global variable thì có hai dấu @@) Ví dụ: USE Northwind DECLARE @EmpIDVar INT SET @EmpIDVar = 3 SELECT * FROM Employees WHERE EmployeeID = @EmpIDVar + 1 c. Functions (Hàm) Có 2 loại hàm một loại là built-in và một loại user-defined Các hàm Built-In được chia làm 3 nhóm: Rowset Functions : Loại này thường trả về một object và được đối xử như một table. Ví dụ như hàm OPENQUERY sẽ trả về một recordset và có thể đứng vị trí của một table trong câu lệnh Select. Aggregate Functions : Loại  này làm việc trên một số giá trị và trả về một giá trị đơn hay là các giá trị tổng. Ví dụ như hàm AVG sẽ trả về giá trị trung bình của một cột. Scalar Functions : Loại này làm việc trên một giá trị đơn và trả về một giá trị đơn. Trong loại này lại chia làm nhiều loại nhỏ như các hàm về toán học, về thời gian, xử lý kiểu dữ liệu String....Ví dụ như hàm MONTH('2002-09-30') sẽ trả về tháng 9. Các hàm User-Defined (được tạo ra bởi câu lệnh CREATE FUNCTION và phần body thường được gói trong cặp lệnh BEGIN...END) cũng được chia làm các nhóm như sau: Scalar Functions : Loại này cũng trả về một giá trị đơn bằng câu lệnh RETURNS. Table Functions : Loại này trả về một table d. Expressions Các Expressions có dạng Identifier + Operators (như +,-,*,/,=...) + Value e. Các thành phần Control-Of Flow Như BEGIN...END, BREAK, CONTINUE, GOTO, IF...ELSE, RETURN, WHILE.... Xin xem thêm Books Online để biết thêm về các thành phần này. f. Comments (Chú Thích) T-SQL dùng dấu -- để đánh dấu phần chú thích cho câu lệnh đơn và dùng /*...*/ để chú thích cho một nhóm 3. Thực Thi Các Câu Lệnh SQL a. Thực thi một câu lệnh đơn: Một câu lệnh SQL được phân ra thành các thành phần cú pháp như trên bởi một bộ phân phận phân tích cú pháp (parser), sau đó SQL Optimizer (một bộ phận quan trọng của SQL Server) sẽ phân tích và tìm cách thực thi (Execute Plan) tối ưu nhất ví dụ như cách nào nhanh và tốn ít tài nguyên của máy nhất... và sau đó SQL Server Engine sẽ thực thi và trả về kết quả. b. Thực Thi một nhóm lệnh (Batches) Khi thực thi một nhóm lệnh SQL Server sẽ phân tích và tìm biện pháp tối ưu cho các câu lệnh như một câu lệnh đơn và chứa có kế hoạch thực hiện (execution plan) đã được biên dịch (compiled) trong bộ nhớ sau đó nếu nhóm lệnh trên được gọi lại lần nữa thì SQL Server không cần biên dịch mà có thể thực thi ngay điều này giúp cho một batch chạy nhanh hơn. c. Lệnh GO Lệnh này chỉ dùng để gởi một tín hiệu cho SQL Server biết đã kết thúc một lô công việc (batch job) và yêu cầu thực thi. II - Truy vấn tạo lập CREATE DATABASE: Cú pháp: CREATE DATABASE database_name [ ON     [ [ ,...n ] ] ] [ LOG ON { [ ,...n ] } ] ::= [ PRIMARY ] ( [ NAME = logical_file_name , ]     FILENAME = 'os_file_name'     [ , SIZE = size ]     [ , MAXSIZE = { max_size | UNLIMITED } ]     [ , FILEGROWTH = growth_increment ] ) [ ,...n ] Mục đích: Tạo cơ sở dữ liệu có tên là database_name. Giải thích: ON : các thông số file lưu lại cơ sở dữ liệu vừa tạo. LOG ON : file log cho cơ sở dữ liệu PRIMARY: dành cho PRIMARY file (nếu có nhiều file). NAME: tên logic cho file được định nghĩa. FILENAME : file vật lý trên đĩa. SIZE : độ lớn của file. MAXSIZE : độ lớn max của file FILEGROWTH : khối lượng đĩa được thêm vào file mỗi lần file cần thêm khoảng trống (tăng thêm). Ví dụ: CREATE DATABASE DB_Item ON ( NAME = DB_Item, FILENAME = ‘D:\BT\DeAnMonHoc\DB_Item.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = 'DB_Item_log', FILENAME = ‘D:\BT\DeAnMonHoc\DB_Item.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) GO CREATE DEFAULT: Tạo giá trị ngầm định (default) có tên rồi gán cho trường nào đó. Cú pháp: CREATE DEFAULT default_name AS default_value Ví dụ: CREATE DEFAULT phonedflt AS 'unknown' Sau đó thì gắn DEFAULT cho một trường bất kỳ: sp_bindefault phonedflt, 'authors.phone' và bỏ DEFAULT: EXEC sp_unbindefault phonedflt CREATE FUNCTION: Tạo hàm người dùng trong SQL Server. Cú pháp: CREATE  FUNCTION [ owner_name. ] function_name     ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) RETURNS scalar_return_data_type [ WITH [ [,] ...n] ] [ AS ] BEGIN     function_body     RETURN scalar_expression END owner_name: Tên của ID người dùng. Tên này phải tồn tại. function_name: tên hàm. @parameter_name : tên biến AS kiểu biến = giá trị mặc định RETURN : cho giá trị trả về của hàm. Ví dụ: CREATE FUNCTION funcThanhTien (@SoLuong Int,@DonGia Float) RETURNS float AS BEGIN Declare @ThanhTien AS float Set @ThanhTien = @SoLuong * @DonGia RETURN(@ThanhTien) END Sử dụng hàm: SELECT funcThanhTien(10,5) AS ThanhTien Kết quả: ThanhTien ---------------- 50 CREATE PROCEDURE: Tạo thủ tục trong SQL Server. Cú pháp: CREATE PROC [ EDURE ] procedure_name [ ; number ]     [ { @parameter data_type }         [ VARYING ] [ = default ] [ OUTPUT ]     ] [ ,...n ] [ WITH     { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ] Ví dụ: USE pubs IF EXISTS (SELECT name FROM sysobjects WHERE name = proc_item_info' AND type = 'P') DROP PROCEDURE proc_item_info GO Create Proc proc_item_info(@MaDoDung bigint) AS BEGIN SELECT [MaDoDung],[TenDoDung],[MoTa],[TenLoai], [TenNXB],[TacGia],[GiaTien],[NamXuatBan] FROM [tblDoDung] i INNER JOIN [tblLoai] c ON i.MaLoai=c.MaLoai INNER JOIN [tblNhaXuatBan] p ON p.MaNXB=i.MaNXB WHERE [MaDoDung] = @MaDoDung END GO CREATE TABLE: Tạo bảng dữ liệu (table) trong SQL Server. Cú pháp: CREATE TABLE     [ database_name.[ owner ] . | owner. ] table_name     ( {         | column_name AS computed_column_expression         | ::= [ CONSTRAINT constraint_name ] }             | [ { PRIMARY KEY | UNIQUE } [ ,...n ]     ) [ ON { filegroup | DEFAULT } ] [ TEXTIMAGE_ON { filegroup | DEFAULT } ] ::= { column_name data_type }     [ COLLATE ]     [ [ DEFAULT constant_expression ]         | [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]     ]     [ ROWGUIDCOL]     [ ] [ ...n ] ::= [ CONSTRAINT constraint_name ]     { [ NULL | NOT NULL ]         | [ { PRIMARY KEY | UNIQUE }             [ CLUSTERED | NONCLUSTERED ]             [ WITH FILLFACTOR = fillfactor ]             [ON {filegroup | DEFAULT} ] ]         ]         | [ [ FOREIGN KEY ]             REFERENCES ref_table [ ( ref_column ) ]             [ ON DELETE { CASCADE | NO ACTION } ]             [ ON UPDATE { CASCADE | NO ACTION } ]             [ NOT FOR REPLICATION ]         ]         | CHECK [ NOT FOR REPLICATION ]         ( logical_expression )     } ::= [ CONSTRAINT constraint_name ]     { [ { PRIMARY KEY | UNIQUE }         [ CLUSTERED | NONCLUSTERED ]         { ( column [ ASC | DESC ] [ ,...n ] ) }         [ WITH FILLFACTOR = fillfactor ]         [ ON { filegroup | DEFAULT } ]     ]     | FOREIGN KEY         [ ( column [ ,...n ] ) ]         REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]         [ ON DELETE { CASCADE | NO ACTION } ]         [ ON UPDATE { CASCADE | NO ACTION } ]         [ NOT FOR REPLICATION ]     | CHECK [ NOT FOR REPLICATION ]         ( search_conditions )     } Ví dụ: CREATE TABLE tblLoai( MaLoai bigint not null primary key IDENTITY, TenLoai varchar(50) ) GO CREATE TABLE tblNhaXuatBan( MaNXB bigint not null primary key IDENTITY, TenNXB varchar(50) not null default '', DiaChi varchar(150) ) GO -- Tạo bảng đồ dùng CREATE TABLE tblDoDung( MaDoDung bigint not null primary key IDENTITY, MaNXB bigint FOREIGN KEY REFERENCES tblNhaXuatBan (MaNhaXuatBan) ON DELETE CASCADE ON UPDATE CASCADE, MaLoai bigint FOREIGN KEY REFERENCES tblLoai (MaLoai) ON DELETE CASCADE ON UPDATE CASCADE, TenDoDung varchar(50) not null Default '', [MoTa] varchar(150), TacGia varchar(50), NamXuatBan varchar(4), GiaTien float, NgayNhap DateTime Default GetDate() ) GO CREATE VIEW: Tạo khung nhìn (view) trong SQL Server. Cú pháp: CREATE VIEW [ . ] [ . ] view_name [ ( column [ ,...n ] ) ] [ WITH [ ,...n ] ] AS select_statement Ví dụ: --Partitioned view as defined on Server1 CREATE VIEW viewDoDung AS --Select from local member table SELECT * FROM tblDoDung III - Các phát biểu cơ bản của T-SQL SELECT: Phát biểu SELECT là một trong những phát biểu yêu cầu SQL Server đọc thông tin từ cơ sở dữ liệu theo những trường quy định hay biểu thức nào đó. Cú pháp: SELECT [FROM ] [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] FROM chỉ ra tên một bảng hay những bảng có quan hệ nào đó cần truy vấn thông tin. Ví dụ: Lấy dữ liệu từ bảng tblDoDung SELECT * FROM tblDoDung INSERT Lệnh INSERT được dùng khi cần them một mẩu tin (record) vào trong bảng của SQL Server 2000. Cú pháp: INSERT INTO table_name([field_name1],[field_name2],...) VALUES (‘value1’, ‘value2’,...) Chèn thêm 1 dòng vào bảng table_name giá trị của các trường field_name1, field_name2, ... là value1, value2, ... Ví dụ: INSERT INTO tblNhaXuatBan ([TenNXB], [DiaChi]) VALUES ('Giao Duc','Quan Hoan Kiem - Ha Noi') GO INSERT INTO tblLoai ([TenLoai]) VALUES ('Sach') GO INSERT INTO tblLoai ([TenLoai]) VALUES ('Đia CD') GO INSERT INTO tblDoDung ([MaNXB], [MaLoai], [TenDoDung], [MoTa], [TacGia], [NamXuatBan], [GiaTien]) VALUES ('1','1',Lap trinh ung dung chuyen nghiep SQL Server 2000','Tập 1 của giáo trình "Lập trình ứng dụng chuyên nghiệp SQL Server 2000" chú trọng đến kỹ năng lập trình, kỹ thuật ứng dụng SQL vào thực tiễn, xây dựng các phát biểu SQL có tính năng đặc biệt, phát triển một số thủ tục tính tồn quỹ, tồn kho theo 3 phương pháp, tính công nợ phải thu, tính công nợ phải trả, và một số thủ tục chuyên nghiệp khác.','Pham Huu Khang','2002','490000') GO UPDATE: Sửa dữ liệu của bản ghi trong SQL Server Cú pháp: UPDATE table_name SET [field_name1] = ‘value1’, [field_name2] = ‘value2’, ... WHERE Ví dụ: UPDATE tblDoDung SET TacGia = 'Pham Huu Khang' WHERE MaDoDung = '10' DELETE: Xoá bản ghi trong bảng. Cú pháp: DELETE FROM table_name WHERE Ví dụ: Xoá bản ghi có MaDoDung='10' trong bảng tblDoDung DELETE FROM tblDoDung WHERE MaDoDung='10' IV - Mệnh đề nối nhiều bảng INNER JOIN: Lệnh SELECT dùng INNER JOIN có tác dụng nối hai hay nhiều bảng dữ liệu trong cơ sở dữ liệu của SQL Server. Cú pháp: SELECT * FROM table_name1 INNER JOIN table_name2 ON Ví dụ: SELECT [MaDoDung],[TenDoDung],[TacGia], [TenNXB],[TenLoai] FROM tblDoDung AS i INNER JOIN tblLoai AS c ON c.MaLoai=i.MaLoai INNER JOIN tblNhaXuatBan AS p ON p.MaNXB=i.MaNXB WHERE i.MaDoDung='10' MaDoDung TenDoDung TacGia TenNXB TenLoai ----------------------------------------------------------------------------------------------- 10 Pham Huu Khang Giáo Dục Sách LEFT JOIN: Lệnh SELECT sử dụng LEFT JOIN lấy ra trong hai hay nhiều bảng kết hợp nhau theo điều kiện: những mẩu tin bên trái tồn tại ứng với những mẩu tin bảng bên phải không tồn tại. Cú pháp: SELECT * FROM table_name1 LEFT JOIN table_name2 ON Ví dụ: SELECT [MaDoDung],[TenDoDung],[TacGia], [TenNXB],[TenLoai] FROM tblDoDung AS i LEFT JOIN tblLoai AS c ON c.MaLoai=i.MaLoai LEFT JOIN tblNhaXuatBan AS p ON p.MaNXB=i.MaNXB WHERE i.MaDoDung='10' MaDoDung TenDoDung TacGia TenNXB TenLoai ----------------------------------------------------------------------------------------------- 10 Pham Huu Khang Giáo Dục Sách RIGHT JOIN: Ngược lại với LEFT JOIN, truy vấn SELECT dùng RIGHT JOIN sẽ xuất dữ liệu của bảng bên phải cho dù dữ liệu của bảng bên trái không tồn tại. Cú pháp: SELECT * FROM table_name1 RIGHT JOIN table_name2 ON Ví dụ: SELECT [MaDoDung],[TenDoDung],[TacGia], [TenNXB],[TenLoai] FROM tblDoDung AS i RIGHT JOIN tblLoai AS c ON c.MaLoai=i.MaLoai RIGHT JOIN tblNhaXuatBan AS p ON p.MaNXB=i.MaNXB WHERE i.MaDoDung='10' MaDoDung TenDoDung TacGia TenNXB TenLoai ----------------------------------------------------------------------------------------------- 10 Pham Huu Khang Giáo Dục Sách FULL JOIN: Khi không quan tâm đến dữ liệu ra cho dù dữ liệu bảng bên trái có tồn tại tương ứng với dữ liệu bảng bên phải hay không (hoặc ngược lại), ta dùng SELECT với FULL JOIN. Cú pháp: SELECT * FROM table_name1 FULL JOIN table_name2 ON Ví dụ: SELECT [MaDoDung],[TenDoDung],[TacGia], [TenNXB],[TenLoai] FROM tblDoDung AS i FULL JOIN tblLoai AS c ON c.MaLoai=i.MaLoai FULL JOIN tblNhaXuatBan AS p ON p.MaNXB=i.MaNXB WHERE i.MaDoDung='10' MaDoDung TenDoDung TacGia TenNXB TenLoai ----------------------------------------------------------------------------------------------- 10 Pham Huu Khang Giáo Dục Sách UNION: UNION không giống như mệnh đề JOIN, UNION là phép toán dùng để nối hai hay nhiều bảng với nhau. UNION kết nối dữ liệu theo chiều dọc. Điều kiện nối là số trường của bảng 1 phải bằng số trường của bảng 2. Cú pháp: SELECT * FROM table_name1 UNION table_name2 Ví dụ: SELECT [TenDoDung],[TacGia] FROM tblDoDung WHERE MaDoDung='10' UNION SELECT [TacGia], [TenDoDung] FROM tblDoDung V - Sửa đổi cấu trúc dữ liệu ALTER TABLE: Sửa cấu trúc của bảng dữ liệu (table structure) Cú pháp: ALTER TABLE table { [ ALTER COLUMN column_name     { new_data_type [ ( precision [ , scale ] ) ]         [ COLLATE ]         [ NULL | NOT NULL ]         | {ADD | DROP } ROWGUIDCOL }     ]     | ADD         { [ ]         |  column_name AS computed_column_expression         } [ ,...n ]     | [ WITH CHECK | WITH NOCHECK ] ADD         { } [ ,...n ]     | DROP         { [ CONSTRAINT ] constraint_name             | COLUMN column } [ ,...n ]     | { CHECK | NOCHECK } CONSTRAINT         { ALL | constraint_name [ ,...n ] }     | { ENABLE | DISABLE } TRIGGER         { ALL | trigger_name [ ,...n ] } } Ví dụ: Xoá bỏ cột DateInput trong bảng tblDoDung ALTER TABLE [tblDoDung] DROP COLUMN [DateInput] ALTER DATABASE: Sửa một cơ sở dữ liệu. Cú pháp: ALTER DATABASE database { ADD FILE [ ,...n ] [ TO FILEGROUP filegroup_name ] | ADD LOG FILE [ ,...n ] | REMOVE FILE logical_file_name | ADD FILEGROUP filegroup_name | REMOVE FILEGROUP filegroup_name | MODIFY FILE | MODIFY NAME = new_dbname | MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name } | SET [ ,...n ] [ WITH ] | COLLATE } Ví dụ: Thêm log file cho Cơ sở dữ liệu DB_Item ALTER DATABASE [DB_Item] ADD LOG FILE ( NAME =Item_LogFile, FILENAME = ‘C:\db_item_log.txt’) ALTER FUNCTION: Sửa nội dung một hàm đã được người dùng định nghĩa trước đó. Cú pháp ALTER FUNCTION [ owner_name. ] function_name ( [ { @parameter_name scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) RETURNS scalar_return_data_type [ WITH [,...n] ] [ AS ] BEGIN     function_body     RETURN scalar_expression END Ví dụ: ALTER FUNCTION funcThanhTien (@SoLuong Int,@DonGia Float) RETURNS float AS BEGIN Declare @ThanhTien AS float Set @ThanhTien = @SoLuong * @DonGia RETURN(@ThanhTien) END ALTER PROCEDURE: Sửa đổi nội dung một thủ tục thường trú mà người dùng tạo ra trước đó. Cú pháp: ALTER PROC [ EDURE ] procedure_name [ ; number ]     [ { @parameter data_type }         [ VARYING ] [ = default ] [ OUTPUT ]     ] [ ,...n ] [ WITH     { RECOMPILE | ENCRYPTION         | RECOMPILE , ENCRYPTION     } ] [ FOR REPLICATION ] AS     sql_statement [ ...n ] Ví dụ: ALTER Proc proc_item_info(@MaDoDung bigint) AS BEGIN SELECT [MaDoDung],[TenDoDung],[MoTa],[TenLoai], [TenNXB],[TacGia],[GiaTien],[NamXuatBan] FROM [tblDoDung] i INNER JOIN [tblLoai] c ON i.MaLoai=c.MaLoai INNER JOIN [tblNhaXuatBan] p ON p.MaNXB=i.MaNXB WHERE [MaDoDung] = @MaDoDung END DROP DATABASE: Xoá cơ sở dữ liệu. Cú pháp: DROP DATABASE database_name [ ,...n ] Ví dụ: DROP DATABASE DB_Item DROP TABLE: Xoá bảng dữ liệu trong cơ sở dữ liệu hiện hành. Cú pháp: DROP TABLE table_name Ví dụ: DROP TABLE tblDoDung DROP VIEW: Xoá khung nhìn đã được tạo ra. Cú pháp: DROP VIEW { view } [ ,...n ] Ví dụ: DROP VIEW view_item DROP PROCEDURE: Xoá thủ tục thường trú mà người dùng đã tạo ra trong cơ sở dữ liệu hiện hành. Cú pháp: DROP PROCEDURE { procedure } [ ,...n ] Ví dụ: DROP PROCEDURE proc_item_info DROP DEFAULT: Xoá DEFAULT trong cơ sở dữ liệu hiện hành. Cú pháp: DROP DEFAULT { default } [ ,...n ] Ví dụ: DROP DEFAULT phonedflt DROP FUNCTION: Xoá hàm trong cơ sở dữ liệu hiện hành. Cú pháp: DROP FUNCTION { [ owner_name . ] function_name } [ ,...n ] Ví dụ: DROP FUNCTION funcThanhTien VI - Mệnh đề quản trị CSDL SHUTDOWN: Tắt dịch vụ SQL Server. Cú pháp: SHUTDOWN [ WITH NOWAIT ] Ví dụ: SHUTDOWN GRANT: Ban quyền cho tài khoản người sử dụng Cú pháp: GRANT     { ALL [ PRIVILEGES ] | permission [ ,...n ] }     {         [ ( column [ ,...n ] ) ] ON { table | view }         | ON { table | view } [ ( column [ ,...n ] ) ]         | ON { stored_procedure | extended_procedure }         | ON { user_defined_function }     } TO security_account [ ,...n ] [ WITH GRANT OPTION ] [ AS { group | role } ] Ví dụ: Ban quyền tạo cơ sở dữ liệu, tạo bảng dữ liệu cho người dùng Mary và John. GRANT CREATE DATABASE, CREATE TABLE TO Mary, John REVOKE: tước quyền của tài khoản người sử dụng. Cú pháp: REVOKE { ALL | statement [ ,...n ] } FROM security_account [ ,...n ] Ví dụ: Tước bỏ quyền tạo bảng dữ liệu của người sử dụng Joe. REVOKE CREATE TABLE FROM Joe DENY: Từ chối quyền mà Account được thừa kế từ một nhóm. Nếu một nhóm được ban quyền, mà ta không muốn 1 hay nhiều người dùng trong nhóm đó có những quyền được ban cho nhóm (hoặc hạn chế quyền) thì dùng truy vấn DENY. Cú pháp: DENY { ALL | statement [ ,...n ] } TO security_account [ ,...n ] Ví dụ: Từ chối các quyền mà các user được thừa kế trong nhóm. USE pubs GO -- Ban quyền SELECT bảng authors cho nhóm public GRANT SELECT ON authors TO public GO -- Tước đi quyền SELECT, INSERT, UPDATE và DELETE bảng authors của các -- user Mary, John và Tom DENY SELECT, INSERT, UPDATE, DELETE ON authors TO Mary, John, Tom VII - Mệnh đề Backup Cơ sở Dữ liệu BACKUP: Tạo BACKUP cho cơ sở dữ liệu, phòng trường hợp bị lỗi, muốn khôi phục lại. Trước khi BACKUP thì phải tạo Device cho việc BACKUP. Cú pháp: BACKUP DATABASE { database_name | @database_name_var } TO [ ,...n ] [ WITH     [ BLOCKSIZE = { blocksize | @blocksize_variable } ]     [ [ , ] DESCRIPTION = { 'text' | @text_variable } ]     [ [ , ] DIFFERENTIAL ]     [ [ , ] EXPIREDATE = { date | @date_var }         | RETAINDAYS = { days | @days_var } ]     [ [ , ] PASSWORD = { password | @password_variable } ]     [ [ , ] FORMAT | NOFORMAT ]     [ [ , ] { INIT | NOINIT } ]     [ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]     [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]     [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]     [ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]     [ [ , ] { NOSKIP | SKIP } ]     [ [ , ] { NOREWIND | REWIND } ]     [ [ , ] { NOUNLOAD | UNLOAD } ]     [ [ , ] RESTART ]     [ [ , ] STATS [ = percentage ] ] ] Ví dụ: -- Tao Logical Device cho viec Backup EXEC sp_addumpdevice 'disk', 'DB_Item_bak', 'D:\BT\DeAnMonHoc\DB_Item_bak.dat' -- Bat dau Backup BACKUP DATABASE DB_Item TO DB_Item_bak GO RESTORE: Khôi phục lại cơ sở dữ liệu đã BACKUP trước đó. Cú pháp: RESTORE DATABASE { database_name | @database_name_var } [ FROM [ ,...n ] ] [ WITH     [ RESTRICTED_USER ]     [ [ , ] FILE = { file_number | @file_number } ]     [ [ , ] PASSWORD = { password | @password_variable } ]     [ [ , ] MEDIANAME = { media_name | @media_name_var

Các file đính kèm theo tài liệu này:

  • doc345dfgd.doc