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ế .
46 trang |
Chia sẻ: oanh_nt | Lượt xem: 1331 | Lượt tải: 0
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. ExpressionsCác Expressions có dạng Identifier + Operators (như +,-,*,/,=...) + Value
e. Các thành phần Control-Of FlowNhư 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 GOLệ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_expressionEND
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_expressionEND
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:
- 345dfgd.doc