Tài liệu SQL Server
1. Giới thiệu (Introduction)
1.1. Phiên bản (Edition)
Doanh nghiệp
(Enterprise)
- Chứa đầy đủ các đặc trưng của SQL Server và có thể chạy tốt trên hệ thống lên đến 32 CPUs và
64GB RAM. Thêm vào đó nó có các dịch vụ giúp cho việc phân tích dữ liệu rất hiệu quả (Analysis
Services).
Chuẩn
(Standard)
- Rất thích hợp cho các công ty vừa và nhỏ vì giá thành rẻ hơn nhiều so với Enterprise Edition, nhưng
lại bị giới hạn một số chức năng cao cấp (Advanced features) khác, edition này có thể chạy tốt trên hệ
thống lên đến 4 CPU và 2 GB RAM.
Cá nhân
(Personal)
- Được tối ưu hóa để chạy trên PC nên có thể cài đặt trên hầu hết các phiên bản Windows kể cả
Windows 98.
Phát triển
(Developer)
- Có đầy đủ các tính năng của Enterprise Edition nhưng được chế tạo đặc biệt như giới hạn số lượng
người kết nối vào Server cùng một lúc … Đây là edition mà các bạn muốn học SQL Server cần có.
Chúng ta sẽ dùng edition này trong suốt khóa học. Edition này có thể cài trên Windows 2000
Professional hay Win NT Workstation.
Desktop Engin
(MSDE)
- Đây chỉ là một engine chạy trên desktop và không có user interface (giao diện). Thích hợp cho việc
triển khai ứng dụng ở máy client. Kích thước database bị giới hạn khoảng 2 GB.
Win CE - Dùng cho các ứng dụng chạy trên Windows CE.
Dùng thử (Trial) - Có các tính năng của Enterprise Edition, download free, nhưng giới hạn thời gian sử dụng.
1.2. Yêu cầu phần cứng (Hardware requirement)
1.3. Yêu cầu hệ điều hành (OS requirement)
2. Cài đặt (Setup)
2.1. 2000
Màn hình khởi
động
(Startup screen)
- Chọn SQL Server 2000 Components.
leonguyen.com
1
Tài liệu SQL Server
Cài đặt thành phần
(Install
Component)
- Chọn Install Database Server.
Tên máy tính
(Computer Name)
- Chọn
+ Hộp nếu cài trên máy cục bộ.
+ Hộp nếu cài trên máy từ xa.
Lựa chọn cài đặt
(Install Selection)
- Chọn:
+ Hộp để cài mặc định.
+ Hộp để cài tùy chọn.
Thông tin người
dùng
(User Information)
- Nhập tên người dùng vào hộp .
- Nhập tên công ty vào hộp .
leonguyen.com
2
Tài liệu SQL Server
Ý kiến bản quyền
phần mềm
(Software License
Agreement)
- Chọn Yes.
Khóa đĩa
(CD-Key)
- Nhập CD-Key.
Định nghĩa cài đặt
(Installation
Definition)
- Chọn:
+ Hộp nếu chỉ cài công cụ trên máy khách.
+ Hộp nếu cài công cụ trên máy khách lẫn máy chủ.
+ Hộp nếu chỉ cài phần kết nối.
Tên SQL Server
(Instance Name)
- Chọn hộp nếu dùng tên mặc định (ISCN-Named of SQL server) nhận diện bởi tên máy.
- Bỏ chọn hộp nếu dùng tên tự đặt và nhập tên đó vào hộp .
leonguyen.com
3
Tài liệu SQL Server
Loại cài đặt
(Setup Type)
- Chọn loại cài đặt: Typical, Minimum, Custom.
- Chọn thư mục cài đặt:
- Chứa file chương trình ở mục .
- Chứa file dữ liệu ở mục .
Tài khoản
(Services
Accounts)
- Chọn loại tài khoản:
+ Hộp nếu chọn tài khoản của máy cục bộ.
+ Hộp nếu chọn tài khoảng của máy mạng.
Chế độ chứng thực
(Authentication
Mode)
- Chọn loại chứng thực:
+ Hộp nếu chứng thực bằng người dùng Windows (User
Windows).
+ Hộp nếu chứng thực bằng người
dùng SQL Server (User SQL Server) lẫn người dùng Windows (User Windows).
+ sa (System Administrator) là tài khoản có quyền cao nhất -> nên cài mật khẩu ngay.
Thông báo bắt đầu
cài đặt
(Start Copying
Files)
Chọn chế độ bản
quyền
- Chọn chế độ bản quyền:
+ Per Seat -> theo số lượng thiết bị (device) truy cập.
leonguyen.com
4
Tài liệu SQL Server
(Choose License
Mode)
+ Processor -> theo số lượng bộ xử lý (CPU) trên máy.
Hoàn tất cài đặt
(Setup Complete)
Lưu ý-Remark
- Khi cài đặt SQL Server 2000 sử dụng tài khoản của hệ điều hành. Sau này nếu vì lý do gì phải
thay đổi mật khẩu của tài khoản này trong Windows, thì ta cũng phải cập nhật mật khẩu này trong
SQL Server.
+ Enterprise Manager -> Tools -> SQL Server Configuration Properties -> Security ->
Startup service account -> điều chỉnh lại mật khẩu.
- Nếu ta đổi tên máy tính (Computer Name) của máy đang cài SQL Server, cần cập nhật lại thông
tin này trong table hệ thống sysservers, bằng cách thi hành 2 thủ tục sau:
sp_dropserver old_name
Go
Sp_addserver new_name, local
Go
Ý kiến bản quyền của người
dùng cuối
(End User License
Agreement)
- Chọn hộp .
Điều kiện cài đặt
(Installing prerequisites)
- Chọn Next.
leonguyen.com
5
Tài liệu SQL Server
Màn hình chào đón
(Welcome screen)
- Chọn Next.
Kiểm tra cấu hình hệ thống
(System Configuration
Check)
- Chọn Next.
Thông tin đăng ký
(Registration Information)
- Nhập tên người dùng vào hộp .
- Nhập tên công ty vào hộp .
Thành phần để cài đặt
(Components to Install)
- Chọn tất cả hộp.
leonguyen.com
6
Tài liệu SQL Server
Tên SQL Server
(Instance Name)
- Chọn hộp nếu dùng tên mặc định (ISCN-Named instance of SQL
server) nhận diện bởi tên máy.
- Chọn hộp nếu dùng tên tự đặt và nhập tên đó vào hộp
.
Thành phần tồn tại
(Existing Components)
- Chọn Next.
Tài khoản dịch vụ
(Service Account)
- Chọn loại tài khoản:
+ Hộp nếu chọn tài khoản của máy cục bộ.
+ Hộp nếu chọn tài khoảng của máy mạng.
leonguyen.com
7
Tài liệu SQL Server
Tùy chọn cài đặt báo cáo máy
chủ
(Report Server Installation
Options)
- Chọn Next.
Thiết lập báo cáo sử dụng và
lỗi
(Error and Usage Report
Settings)
- Chọn Next.
Bắt đầu cài đặt
(Ready to Install)
- Chọn Install.
Hoàn tất cài đặt
(Completing Setup)
- Chọn Finish.
leonguyen.com
8
Tài liệu SQL Server
2.2. 2005
3. Cửa sổ làm việc (Window)
3.1. Khởi động (Open),Thoát (Exit)
3.1.1. 2000
Giới thiệu- Introduction - Là 1 hệ quản trị cơ sở dữ liệu của Microsoft.
Khởi động-Open
- Click chọn nút nút > chọn > chọn Microsoft SQL Server > chọn
+ Enterprise Manager: Quản lý SQL Server.
+ Query Analyzer: Nhập và thực hiện các câu lệnh SQL.
hay chọn menu > chọn SQL Query Analyzer.
+ Client Network Utility: Cấu hình để kết nối với các SQL Server khác trên mạng.
+ Server Network Utility: Cấu hình Server để cho phép các máy khác kết nối vào.
+ Configure SQL XML Support in IIS: Cấu hình hỗ trợ SQL XML trong IIS.
+ Import and Export Data: Nhập / Xuất dữ liệu từ các CSDL khác.
+ Service Manager: Khởi động hay dùng các dịch vụ SQL Server, SQL Server Agent.
Thoát-Exit
3.1.2. 2005
Giới thiệu- Introduction - Là 1 hệ quản trị cơ sở dữ liệu của Microsoft.
Khởi động-Open
- Click chọn nút nút > chọn > chọn Microsoft SQL Server 2005 > chọn
+ SQL Server Management Studio: Quản lý SQL Server.
Thoát-Exit
leonguyen.com
9
Tài liệu SQL Server
3.2. Kết nối (Connect)
3.2.1. 2000
Quản lý dịch
vụ
(Service
Manager)
Dịch vụ
(Service)
Lưu ý
- Khi cài đặt SQL Server 2000 sử dụng tài khoản của hệ điều hành. Sau này nếu lý do gì phải thay đổi mật
khẩu của tài khoản này trong Windows, thì ta cũng phải cập nhật mật khẩu này trong SQL Server.
Enterprise Manager > Tools > SQL Server Configuration Properties > Security > Startup service
account > điều chỉnh lại mật khẩu.
- Nếu ta đổi tên máy tín (Computer Name) của máy đang cài SQL Server, cần cập nhật lại thông tin này
torng table hệ thống syssevers, bằng cách thi hành 2 thủ tục sau:
sp_dropserver old_name
Go
Sp_addserver new_name, local
Go
3.2.2. 2005
Kết nối-Connect
Dịch vụ-Service
3.3. Đóng kết nối (Disconnect)
3.4. Ngôn ngữ (Language)
VB
(ADO)
rs.Close
cn.Close
Set pr = Nothing
Set cm = Nothing
leonguyen.com
10
Tài liệu SQL Server
Set rs = Nothing
Set cn = Nothing
3.5. Kiến trúc (Architecture)
Relational Database
Engine
- Đây là phần cốt lõi của SQL Server.
- Engine có khả năng chứa data ở các quy mô khác nhau dưới dạng table.
- Hỗ trợ hầu hết các kiểu kết nối (Data connection) thông dụng của Microsoft như ADO (ActiveX
Data Objects), OLE DB, and ODBC (Open Database Connectivity).
- Có khả năng tự điều chỉnh (tune up) như sử dụng thêm các tài nguyên máy khi cần và trả lại tài
nguyên cho hệ điều hành khi một user log off.
Replication
- Cơ chế tạo bản sao (Replica).
- Ta có thể tạo một database dùng để chứa dữ liệu được các ứng dụng thường xuyên cập nhật.
Đồng thời lại tạo thêm một database giống y hệt như thế trên một server khác để chạy báo cáo
(report database) (cách làm này thường dùng để tránh ảnh hưởng đến hiệu suất của server
chính).
- Vấn đề là report database cần phải được cập nhật thường xuyên để bảo đảm tính chính xác của
các báo cáo. Ta không thể dùng cơ chế backup và restore trong trường hợp này -> cơ chế
replication của SQL Server sẽ được sử dụng để bảo đảm cho dữ liệu ở 2 database được đồng bộ
(synchronized).
Data Transformation
Service (DTS)
- Dịch vụ chuyển dịch dữ liệu.
- Giả sử ta đang làm việc trong một công ty lớn, trong đó dữ liệu được chứa trong nhiều nơi khác
nhau và ở các dạng khác nhau như Oracle, DB2 (của IBM), SQL Server, Microsoft Access …
- Chắc chắn ta sẽ có nhu cầu di chuyển dữ liệu (migrate hay transfer) giữa các server này, thậm
chí ta còn muốn định dạng (format) nó trước khi lưu vào database khác -> giải pháp DTS sẽ giúp
ta giải quyết công việc này một cách dễ dàng.
Analysis Service
- Dịch vụ phân tích dữ liệu của Microsoft.
- Dữ liệu (Data) chứa trong database sẽ chẳng có ý nghĩa gì nếu như ta không thể lấy những
thông tin (Information) bổ ích từ đó.
- Microsoft cung cấp cho ta một công cụ rất mạnh Analysis Service giúp cho việc phân tích dữ liệu
trở nên dễ dàng và hiệu quả với khái niệm hình khối nhiều chiều (Multi-demension cubes) và kỹ
thuật “khai phá mỏ dữ liệu” (Data mining).
Một số dịch vụ khác
- English Query:
+ Dịch vụ này giúp ta có thể truy vấn dữ liệu bằng plain English.
- Meta Data Service:
+ Dịch vụ này giúp cho việc quản lý Meta data dễ dàng hơn.
+ Meta data là những thông tin mô tả về cấu trúc của data trong database như data thuộc
loại nào? String, Integer, … một cột nào đó có phải là Primary Key hay không?
4. Định nghĩa dữ liệu (Data Difinition)
4.1. Cơ sở dữ liệu (Database) – MDF & LDF
4.1.1. Kiến trúc (Architecture)
Giới thiệu
(Introduction)
- Mỗi database của SQL Server được tạo ra từ nhiều tập tin của hệ điều hành. Các tập tin này có thể
nhóm lại vào nhóm tập tin (filegroups) để dễ dàng quản lý và nâng cao hiệu suất.
Files - Một database file có thể là một data file hay một log file.
- Data files được dùng để lưu trữ dữ liệu (data) và đối tượng (objects) như tables, indexes, views,
triggers, stored procedures. Có 2 loại data files: primary và secondary.
- Mỗi database phải được tạo ra với ít nhất một data file và một log file. Mỗi files chỉ được sử dụng
bởi một database, database không thể chia sẻ files.
- Có 3 loại files:
+ Primary data file: Chứa tất cả các thông tin khởi động của database cùng các table và
đối tượng hệ thống. Nó trỏ đến toàn bộ các file còn lại tạo ra trong database. Nó có thể lưu
leonguyen.com
Phân loại
Primary data file
Secondary data file
Transaction log file
11
Tài liệu SQL Server
các table và đối tượng của người dùng. Mỗi database có đúng một primary file. Phần mở rộng
là .mdf.
+ Secondary data file (tùy chọn): Có thể dùng lưu trữ dữ liệu và đối tượng không có trong
primary file. Database có thể không có secondary files nếu tất cả dữ liệu của nó lưu trong
primary file. Một số khác lại cần nhiều secondary files để trải dữ liệu trên nhiều đĩa nhằm tăng
hiệu suất. Phần mở rộng thường là .ndf.
+ Transaction log file: Lưu tất cả các thông tin về transaction log để phục hồi (recover)
database. Mỗi database phải có ít nhất một log file và có thể có nhiều log files. Phần mở rộng
là .ldf.
- Kích thước tối đa của data file là 32 Terabytes (TB) của một log file là 4TB.
- Một database có thể chỉ có một primary data file, và một transaction log file.
- Database phức tạp hơn có thể có 1 primary data files, 5 secondary data files, và 2 transaction log
files.
- Làm thế nào để dữ liệu có thể trải trên các data files? Câu trả lời là dùng filegroups.
Filegroups
- Filegroups cho phép ta nhóm các file để dễ dàng quản lý.
- Filegroups có thể nâng hiệu suất bằng cách cho phép một database có thể trải trên nhiều đĩa hoặc hệ
thống RAID.
- Có 3 loại filegroups:
+ Primary filegroups: Chứa primary data file và tất cả các file không được đặt vào filegroup
khác.
o System tables: Dùng để định nghĩa users, objects, và quyền trên database. System
tables được đặt trên primary filegroup của database đó. SQL Server tự động tạo ra
system tables khi chúng ta tạo database.
+ User-defined filegroups: Bao gồm các filegroups do user tạo ra. Một table hay index có thể
được tạo ra và đặt trong các filegroup riêng của user.
+ Default filegroups: Chứa các tables và indexes khi tạo không chỉ rõ filegroup. Default
filegroup mặc định là primary filegroup. Thành viên của db_ower có thể thay đổi default
filegroup.
- Để tăng hiệu suất, ta có thể tạo tables và indexes trên các filegroups khác nhau: Ví dụ: Ta có thể đặt
một table được sử dụng rất nhiều vào một filegroup trên một disk array lớn (vd: bao gồm 10 disk
drives) và đặt table khác có lượng sử dụng ít hơn vào filegroup đặt trên một đĩa khác. Như vậy table
có lượng truy cập nhiều sẽ được trải trên một lượng lớn đĩa, nhờ đó có thể tăng tính song song cho
vấn đề I/O của đĩa.
- Một lợi điểm khác khi dùng filegroups là SQL Server cho phép ta có thể backup database dựa trên file
hay filegroups (khi database quá lớn ta không thể backup cùng lúc được).
Một số quy tắc
Ta nên có chiến lược thiết kế tốt cho việc sử dụng từng files và filegroups trước khi tạo database.
Để làm điều này, cần nắm 1 quy tắc sau:
- File và filegroup không thể tạo ra bởi nhiều database.
- Một file chỉ có thể là thành viên (member) của một filegroup.
- Data và thông tin không thể cùng một file.
- Transaction log files không thể là thành phần của một filegroups.
- Khi 1 file được gán là thành phần của một filegroup, thì nó không thể di chuyển sang một filegroup
khác.
Một số lời
khuyên
- Hầu hết database có thể làm việc tốt chỉ với 1 primary data file và 1 transaction log file. Nếu ta gặp
vấn đề về I/O, có thể dùng filegroup để trải dữ liệu trên nhiều đĩa.
- Luôn luôn đặt log files trên một đĩa vật lý (physical disks) khác với đĩa data files.
- Có thể dùng primary data file cho các tables và objects hệ thống, đồng thời tạo ra 1 hoặc nhiều
secondary data files để chứa dữ liệu và đối tượng của người dùng.
- Đặt nonclustered indexes cho table dùng nhiều trong 1 filegroup riêng và trên một đĩa (vật lý) riêng
biệt với đĩa chứa dữ liệu của nó trong table.
- Đặt các table dùng trong cùng câu query trên những đĩa khác nhau, để tận dụng I/O song song khi
search engine tìm kiếm.
Chế độ
Automatic File
Growth
- SQL Server cho phép file tự động tăng kích thước khi cần thiết -> giảm gánh nặng cho người
quản trị phải theo dõi và tăng kích thước file.
- Một file được tạo ra với kích thước ban đầu (Initial file). Khi dữ liệu đầy, SQL Server sẽ tăng kích
thước một lượng, gọi là growth increment. Khi vùng này đầy SQL Server lại tiếp tục cấp phát một
lượng growth increment khác, cho đến khi hết đĩa hoặc đạt tới kích thước tối đa (maximum file size).
leonguyen.com
Phân loại
Primary filegroups
User-defined filegroups
Default filegroups
12
Tài liệu SQL Server
- Để tránh tình trạng hết đĩa dẫn đến lỗi, hãy cài kích thước tối đa cho mỗi file. Hoặc tạo file mới thuộc
cùng filegroup.
- Quy tắc: nên dùng automatic file growth và maximum file sizes khi tạo một database, xác định kích
thước lớn nhất mà ta nghĩ file có thể đạt đến. Dù sao vẫn phải kiểm tra sự tăng trưởng của database
hàng ngày hoặc hàng tuần.
System
database
- Master:
+ Lưu các thông tin của hệ thống như thông tin khởi động, cấu hình SQL Server, các login
accounts, sự tồn tại của tất cả các database, vị trí của primary file, luôn giữ một bản backup
gần nhất của master database.
- Tempdb:
+ Giữ bảng tạm (temporary tables) và thủ tục lưu trữ tạm (temporary stored procedures).
Database này cũng dùng cho các lưu trữ tạm khi SQL Server cần, ví dụ cho việc sắp xếp dữ
liệu. Một bản sạch (clean copy) của tempdb database được tạo lại mỗi khi SQL Server khởi
động lại.
- Model:
+ Dùng như một khuôn mẫu (template) cho tất cả các database tạo ra trong hệ thống. Model
database phải tồn tại vì nó được dùng để tạo lại tempdb mỗi khi SQL Server được khởi động.
Nếu ta sửa trong model database -> các database tạo ra đều có các đặc tính này.
- Msdb:
+ Giữ các table mà SQL Server Agent dùng để định thời các job và cảnh báo cho các tác
vụ.
Mỗi system database có riêng primary data file và log file. Các databases được lưu trong folder mà
ta đã chỉ định khi cài đặt SQL Server.
leonguyen.com
Phân loại
Master
Tempdb
Model
Msdb
13
Tài liệu SQL Server
4.1.2. Thao tác (Operation)
4.1.2.1. 2000
Tạo
(Create)
Ẩn CDSL hệ
thống
- Nhấp chuột phảI lên mục > chọn Edit SQL Server Registration
properties > bỏ chọn hộp .
Thiết kế
(Design)
- Click chuột phải lên mục trong khung Console Root > chọn New
Database.
- Sau đó xuất hiện hộp thoại Database Properties như hình sau:
+ Nhập tên CSDL vào hộp .
+ Chọn thẻ để thiết lập thuộc tính cho file dữ liệu SQL Server.
+ Chọn thẻ để thiết lập cho file nhật ký SQL Server.
Viết lệnh
SQL
Cú pháp:
Create DataBase Tên_CSDL
On
leonguyen.com
14
Tài liệu SQL Server
(SQL
Statement)
(
Name = Tên_do_SQL_quản_lý,
FileName = Đường_dẫn_và_tên_tập_tin_dữ_liệu,
Size = Kích_thước_tập_tin_dữ_liệu_ban_đầu,
MaxSize = Kích_thước_tối_đa_của_tập_tin_dữ_liệu,
FileGrowth = Kích_thước_sẽ_được_thêm_vào_khi_cần_thiết
)
Log On
(
Name = Tên_do_SQL_quản_lý,
FileName = Đường_dẫn_và_tên_tập_tin_nhật_ký,
Size = Kích_thước_tập_tin_nhật_ký_ban_đầu,
MaxSize = Kích_thước_tối_đa_của_tập_tin_nhật_ký,
FileGrowth = Kích_thước_sẽ_được_thêm_vào_khi_cần_thiết
)
Chú ý:
* Các phần ON và LOG ON là các phần tùy chọn. Tuy nhiên nếu có sử dụng phần ON
và LOG ON thì 2 thông tin NAME và FILENAME là bắt buộc.
* Phần ON mô tả các thông tin về tập tin dữ liệu, LOG ON mô tả các thông tin về tập
tin nhật ký.
* Mặc định, phần mở rộng của tập tin dữ liệu là .mdf và tập tin nhật ký là .ldf.
Dùng db Master
Use Master
Go
Nếu tồn tại db thì xóa
If Exists (Select Name From SysDataBases Where Name='db ')
Drop DataBase db
Go
Tạo mới db
Create DataBase db
On
(
Name=db ,
FileName='db.mdf'
Size=10,
MaxSize=50,
FileGrowth=5
)
Log On
(
Name='db Log',
FileName='db.ldf'
Size=5MB,
MaxSize=25MB,
FileGrowth=5MB
)
Go
Sau khi tạo xong thì dùng nó
Use db
Go
======================================
Nếu không tồn tại db thì phục hồi db (= 2 file hay 1 file)
If Not Exists (Select Name From Databases Where Name='db ')
Exec Sp_Attach_DB 'db ',' :\db.mdf',' :\dbLog.ldf'
Exec Sp_Attach_Single_File_DB 'db ',' :\db.mdf'
Go
======================================
If Exists (Select * From SysObjects Where Name Like
'Sp_SaoLuuDVL')
Drop Procedure Sp_SaoLuuDVL
Go
Create Pro Sp_SaoLuuDVL (@TenCSDL VarChar(20),@TenTapTin
VarChar(100))
As
Backup Database @TenCSDL To Disk = @TenTapTin
leonguyen.com
15
Tài liệu SQL Server
Go
Sao lưu CSDL tên là db lên đĩa vật lí với tên tập tin là
db.bak
Exec Sp_SaoLuuDVL 'db ',' :\db.bak'
If Exists (Select * From SysObjects Where Name Like
'Sp_PhucHoiDVL')
Drop Procedure Sp_PhucHoiDVL
Go
Create Proc Sp_PhucHoiDVL (@TenCSDL VarChar(20),@TenTapTin
VarChar(100))
As
Restore Database @TenCSDL From Disk = @TenTapTin
Go
Phục hồi CSDL tên là db từ đĩa vật lí với tên tập tin là
db.bak
Exec Sp_PhucHoiDVL @TenDVL,' :\db.bak'
======================================
If Exists (Select * From SysObjects Where Name Like
'Sp_XoaTBCu')
Drop Procedure Sp_XoaTBCu
Go
Create Proc Sp_XoaTBCu (@TenTB VarChar(20))
As
If Exists (Select * From Master.Dbo.SysDevices Where Name
Like @TenTB)
Exec Sp_DropDevice @TenTB
Go
If Exists (Select * From SysObjects Where Name Like
'Sp_TaoTBMoi')
Drop Procedure Sp_TaoTBMoi
Go
Create Proc Sp_TaoTBMoi (@TenTB VarChar(20,@TenTapTin
VarChar(50))
As
Exec Sp_AddumpDevice 'Disk',@TenTB,@TenTapTin
Go
If Exists (Select * Form SysObjects Where Name Like
'Sp_SaoLuuToanBo')
Drop Procedure Sp_SaoLuuToanBo
Go
Create Proc Sp_SaoLuuToanBo (@TenCSDL VarChar(20),@DuongDan
VarChar(2))
As
Declare @TenTB VarChar(20), @TenTapTinTB VarChar(50)
Set @TenTB = 'tb' + @TenCSDL
Set @TenTapTinTB = @DuongDan + '\' + @TenTB + '.dat'
Exec Sp_XoaTBCu @TenTB
Tạo thiết bị là 'Disk' với tên thiết bị tb sao lưu
tập tin tên là tb
Exec Sp_TaoTBMoi @TenTB,@TenTapTinTB
Với CSDL là
Backup Database @TenCSDL To @TenTB Complete
Go
Exec Sp_SaoLuuToanBo 'db ',' :'
If Exists (Select * Form SysObjects Where Name Like
'Sp_SaoLuuMotPhan')
Drop Procedure Sp_SaoLuuMotPhan
Go
Create Procedure Sp_SaoLuuMotPhan (@TenCSDL
VarChar(20),@DuongDan VarChar(2))
As
leonguyen.com
16
Tài liệu SQL Server
Declare @TenTB VarChar(20), @TenTapTinTB VarChar(50)
Set @TenTB = 'tb' + @TenCSDL
Set @TenTapTinTB = @DuongDan + '\' + @TenTB + '.dat'
Exec Sp_XoaTBCu @TenTB
Tạo thiết bị là 'Disk' với tên thiết bị tb sao lưu
tập tin tên là tb
Exec Sp_TaoTBMoi @TenTB,@TenTapTinTB
Chỉ sao lưu những phần mới khác với CSDL hiện có
Backup Database @TenCSDL To @TenTB With Differential
Go
Exec Sp_SaoLuuMotPhan 'db ',' :'
If Exists (Select * Form SysObjects Where Name Like
'Sp_PhucHoiTB')
Drop Procedure Sp_PhucHoiTB
Go
Create Proc Sp_PhucHoiTB (@TenCSDL VarChar(20),@DuongDan
VarChar(50),@TenTB VarChar(20)=Null)
As
If (@TenTB Is Null) Set @TenTB = 'tb' + @TenCSDL Tên tập
tin giống tên thiết bị
If Exists (Select * From Master.Dbo.SysDevices Where Name
Like @TenTB)
Restore Database @TenCSDL From @TenTB
If Exists (Select Name From SysDatabases Where Name='db '
Exec Sp_PhucHoiTB 'db ',' :\db.dat','tb '
Go
Bản sao
Restore FileListOnly From [tb ]
Go
Restore Database bs
From db Từ thiết bị luận lý chứ không phải vật lí
With Recovery
Move 'db ' To ' :\db.mdf'
Move 'db Log' To ' :\db Log.ldf'
Go
Sao lưu
(Backup)
Thiết kế
(Design)
- Click chuột phảI lên CSDL > chọn All task > chọn Backup Database.
Viết lệnh SQL
(SQL
Statement)
Nếu không tồn tại db thì phục hồi db (= 2 file hay 1 file)
If Not Exists (Select Name From Databases Where Name='db ')
Exec Sp_Attach_DB 'db ',' :\db.mdf',' :\dbLog.ldf'
Exec Sp_Attach_Single_File_DB 'db ',' :\db.mdf'
Go
======================================
If Exists (Select * From SysObjects Where Name Like
'Sp_SaoLuuDVL')
Drop Procedure Sp_SaoLuuDVL
Go
Create Pro Sp_SaoLuuDVL (@TenCSDL VarChar(20),@TenTapTin
VarChar(100))
As
Backup Database @TenCSDL To Disk = @TenTapTin
Go
Sao lưu CSDL tên là db lên đĩa vật lí với tên tập tin là
db.bak
Exec Sp_SaoLuuDVL 'db ',' :\db.bak'
If Exists (Select * From SysObjects Where Name Like
'Sp_PhucHoiDVL')
Drop Procedure Sp_PhucHoiDVL
Go
Create Proc Sp_PhucHoiDVL (@TenCSDL VarChar(20),@TenTapTin
VarChar(100))
As
leonguyen.com
17
Tài liệu SQL Server
Restore Database @TenCSDL From Disk = @TenTapTin
Go
Phục hồi CSDL tên là db từ đĩa vật lí với tên tập tin là
db.bak
Exec Sp_PhucHoiDVL @TenDVL,' :\db.bak'
======================================
If Exists (Select * From SysObjects Where Name Like
'Sp_XoaTBCu')
Drop Procedure Sp_XoaTBCu
Go
Create Proc Sp_XoaTBCu (@TenTB VarChar(20))
As
If Exists (Select * From Master.Dbo.SysDevices Where Name
Like @TenTB)
Exec Sp_DropDevice @TenTB
Go
If Exists (Select * From SysObjects Where Name Like
'Sp_TaoTBMoi')
Drop Procedure Sp_TaoTBMoi
Go
Create Proc Sp_TaoTBMoi (@TenTB VarChar(20,@TenTapTin
VarChar(50))
As
Exec Sp_AddumpDevice 'Disk',@TenTB,@TenTapTin
Go
If Exists (Select * Form SysObjects Where Name Like
'Sp_SaoLuuToanBo')
Drop Procedure Sp_SaoLuuToanBo
Go
Create Proc Sp_SaoLuuToanBo (@TenCSDL VarChar(20),@DuongDan
VarChar(2))
As
Declare @TenTB VarChar(20), @TenTapTinTB VarChar(50)
Set @TenTB = 'tb' + @TenCSDL
Set @TenTapTinTB = @DuongDan + '\' + @TenTB + '.dat'
Exec Sp_XoaTBCu @TenTB
Tạo thiết bị là 'Disk' với tên thiết bị tb sao lưu
tập tin tên là tb
Exec Sp_TaoTBMoi @TenTB,@TenTapTinTB
Với CSDL là
Backup Database @TenCSDL To @TenTB Complete
Go
Exec Sp_SaoLuuToanBo 'db ',' :'
If Exists (Select * Form SysObjects Where Name Like
'Sp_SaoLuuMotPhan')
Drop Procedure Sp_SaoLuuMotPhan
Go
Create Procedure Sp_SaoLuuMotPhan (@TenCSDL
VarChar(20),@DuongDan VarChar(2))
As
Declare @TenTB VarChar(20), @TenTapTinTB VarChar(50)
Set @TenTB = 'tb' + @TenCSDL
Set @TenTapTinTB = @DuongDan + '\' + @TenTB + '.dat'
Exec Sp_XoaTBCu @TenTB
Tạo thiết bị là 'Disk' với tên thiết bị tb sao lưu
tập tin tên là tb
Exec Sp_TaoTBMoi @TenTB,@TenTapTinTB
Chỉ sao lưu những phần mới khác với CSDL hiện có
Backup Database @TenCSDL To @TenTB With Differential
Go
leonguyen.com
18
Tài liệu SQL Server
Exec Sp_SaoLuuMotPhan 'db ',' :'
If Exists (Select * Form SysObjects Where Name Like
'Sp_PhucHoiTB')
Drop Procedure Sp_PhucHoiTB
Go
Create Proc Sp_PhucHoiTB (@TenCSDL VarChar(20),@DuongDan
VarChar(50),@TenTB VarChar(20)=Null)
As
If (@TenTB Is Null) Set @TenTB = 'tb' + @TenCSDL Tên tập
tin giống tên thiết bị
If Exists (Select * From Master.Dbo.SysDevices Where Name
Like @TenTB)
Restore Database @TenCSDL From @TenTB
If Exists (Select Name From SysDatabases Where Name='db '
Exec Sp_PhucHoiTB 'db ',' :\db.dat','tb '
Go
Bản sao
Restore FileListOnly From [tb ]
Go
Restore Database bs
From db Từ thiết bị luận lý chứ không phải vật lí
With Recovery
Move 'db ' To ' :\db.mdf'
Move 'db Log' To ' :\db Log.ldf'
Go
4.1.2.2. 2005
Tạo (Create)
- Click chuột phải lên mục trong khung tác vụ Object Explorer > chọn New Database.
- Sau đó xuất hiện hộp thoại New Database như hình sau:
+ Nhập tên CSDL vào hộp .
+ Thiết lập một số thuộc tính cho file CSDL ở khung danh sách sau:
leonguyen.com
19
Tài liệu SQL Server
4.2. Bảng (Table)
4.2.1. 2000
Tạo (Create)
Thiết kế
(Design)
* Mở hộp thoại New Table:
C1: Click chuột phải lên mục trong khung Console Root > chọn New
Table.
C2: Click chọn menu > chọn New Table.
- Sau đó xuất hiện cửa sổ New Table như hình sau:
+ Nhập tên cột vào ô .
+ Nhập kiểu dữ liệu vào ô .
+ Nhập chiều dài kiểu dữ liệu vào ô .
+ Chọn hay bỏ chọn ô để cho phép dữ liệu để rỗng hay không
rỗng.
+ Chọn cột làm khóa chính rồi chọn nút Set Primary Key .
Viết lệnh SQL
(SQL
Statement)
CREATE TABLE Tên_bảng
(
Tên_cột_khóa Kiểu_dữ_liệu(Chiều_dài) NOT NULL PRIMARY
KEY,
Tên_cột Kiểu_dữ_liệu(Chiều_dài) NULL
…
)
Lưu (Save)
Click chọn nút Save trên thanh công cụ.
Sửa tên
(Rename)
Thiết kế (Design)
C1: Click chuột phải lên bảng > chọn Rename.
C2:
- Chọn bảng.
- Click chọn menu > chọn Rename.
Viết lệnh SQL
(SQL Statement)
Mở (Open)
Thiết kế (Design)
C1: Click chuột phải lên bảng > chọn Open Table > Return all rows.
C2:
- Chọn bảng.
- Click chọn menu > chọn Open Table > Return all rows.
Viết lệnh SQL
(SQL Statement)
Thiết kế
(Design)
Thiết kế (Design)
C1: Click chuột phải lên bảng > chọn Design Table.
C2:
- Chọn bảng.
- Click chọn menu > chọn Design Table.
Viết lệnh SQL
(SQL Statement)
Xóa (Delete)
Thiết kế (Design)
C1: Click chuột phải lên bảng > chọn Delete.
C2:
- Chọn bảng.
- Click chọn menu > chọn Delete.
leonguyen.com
20
Tài liệu SQL Server
Viết lệnh SQL
(SQL Statement)
4.2.2. 2005
Tạo (Create)
Thiết kế
(Design)
- Click chuột phải lên mục trong khung tác vụ Object Explorer > chọn
New Table.
- Sau đó xuất hiện vùng tạo bảng mới như hình sau:
+ Nhập tên cột vào ô .
+ Nhập kiểu dữ liệu kèm theo chiều dài vào ô .
+ Chọn hay bỏ chọn ô để cho phép dữ liệu để rỗng hay
không rỗng.
+ Chọn cột làm khóa chính rồi chọn nút Set Primary Key .
Viết lệnh SQL
(SQL
Statement)
CREATE TABLE Tên_bảng
(
Tên_cột_khóa Kiểu_dữ_liệu(Chiều_dài) NOT NULL PRIMARY
KEY,
Tên_cột Kiểu_dữ_liệu(Chiều_dài) NULL
…
)
Lưu (Save)
- Click chọn nút Save trên thanh công cụ.
Sửa tên
(Rename)
Thiết kế (Design) - Click chuột phải lên bảng > chọn Rename.
Viết lệnh SQL
(SQL Statement)
Mở (Open)
Thiết kế (Design) - Click chuột phải lên bảng > chọn Open Table > Open Table.
Viết lệnh SQL
(SQL Statement)
Thiết kế
(Design)
Thiết kế (Design)
- Click chuột phải lên bảng > chọn Modify.
Viết lệnh SQL
(SQL Statement)
ALTER TABLE
Xóa (Delete)
Thiết kế (Design)
- Click chuột phải lên bảng > chọn Modify.
Viết lệnh SQL
(SQL Statement)
DROP TABLE
leonguyen.com
21
Tài liệu SQL Server
4.2.3. Kiểu dữ liệu-Data Type
4.2.3.1. Số nguyên-Integer
Kiểu-Type Độ dài-Length Phạm vi-Scope
Int 32 bit hay 4 byte Từ 2
31
đến 2
31
-1, khoảng +- 2,1 tỷ
SmallInt 16 bit hay 2 byte Từ -32.768 đến 32.767
TinyInt 8 bit hay 1 byte Từ 0 đến 255
Decimal
Numeric
17 byte Từ -10
38
đến 10
38
4.2.3.2. Số thực-Real
Kiểu-Type Độ dài-Length Phạm vi-Scope
float 32 bit hay 4 byte Từ -1.79x10
38
đến 1.79x10
38
double 64 bit hay 8 byte Từ -1,79x10
308
đến 1,79x10
308
4.2.3.3. Tiền tệ-Currency
Kiểu-Type Độ dài-Length Phạm vi-Scope
Money Từ - 900 ngàn tỷ đến 900 ngàn tỷ
Smallmoney Từ - 900 ngàn tỷ đến 900 ngàn tỷ
4.2.3.4. Kí tự-Character
Kiểu-Type Độ dài-Length Phạm vi-Scope
Char Từ 1 đến 8000 (Fixed Length)
Nchar Mỗi kí tự chiếm 2 byte Từ 1 đến 4000 (Fixed Length, Unicode)
Varchar Từ 1 đến 8000 (Variable Length)
Nvarchar Mỗi kí tự chiếm 2 byte Từ 1 đến 4000 (Fixed Length, Unicode)
Text Từ 1 đến 2 tỷ
Ntext Mỗi kí tự chiếm 2 byte Từ 1 đến 1 tỷ (Unicode)
4.2.3.5. Ngày Giờ-Date Time
Kiểu-Type Độ dài-Length Phạm vi-Scope
Datetime Từ 01/01/1753 đến 31/12/9999
Smalldatetime Từ 01/01/1900 đến 06/06/2079
4.2.3.6. Luận lý-Logic
Kiểu-Type Độ dài-Length Phạm vi-Scope
Bit 0, 1 hay NULL
4.2.3.7. Nhị phân-Binary
Kiểu-Type Độ dài-Length Phạm vi-Scope
Binary Từ 1 đến 8000 bytes
Varbinary Từ 1 đến 8000 bytes
Image Từ 1 đến 2 tỷ bytes
4.2.3.8. Tự tạo (User defined)
Tạo
(Create)
Mục đích
(Purpose)
- User-Defined Type (UDT) là kiểu do người dùng tự định nghĩa, dựa trên các kiểu cơ bản
có sẵn.
Mô hình
(Model)
leonguyen.com
22
Tài liệu SQL Server
Cú pháp
(Syntax)
CREATE TYPE Tên_kiểu
FROM Kiểu_cơ_bản
Ví dụ
(Example)
CREATE TYPE MyKieu
FROM NVARCHAR(20) NOT NULL
4.2.4. Quy tắc (Rule)
Tạo
(Create)
Mục đích
(Purpose)
- Rule (quy tắc) là một đối tượng trong CSDL.
- Khi khai báo một cấu trúc cho table, ta có thể áp quy tắc này, để ràng buộc giá trị nhập
phải thỏa mãn điều kiện Rule đưa ra.
Mô hình
(Model)
Cú pháp
(Syntax)
CREATE RULE Tên_Quy_tắc
AS Điều_kiện_kiểm_tra
Ví dụ
(Example)
CREATE RULE SL
AS @SQL > 0
4.2.5. Ràng buộc (Constraint)
Ràng
buộc(Constraint)
Với bảng tb tạo ràng buộc tên là PK_ là khóa chính ( )
Với bảng tb tạo ràng buộc tên là KK_ là khóa ngoại ( ) tham
chiếu đến khóa chính của bảng tb ( )
Alter Table <Tên_bảng> Add Constraint <PK_Tên_khóa_chính> Primary Key
(<Tên_cột_khóa>)
Alter Table <Tên_bảng_con> Add Constraint <FK_ Tên_khóa_ngoại> Foreign
Key (Tên_cột_khóa_bảng_con) References
Tên_bảng_cha(Tên_cột_khóa_bảng_cha)
***Alter Table tb Modify cột Not Null
***Alter Table tb Add Constraint _ Unique (cột )
Xem tất cả các khóa của bảng tb
Exec Sp_HelpConstraint tb
Xem các khóa chính của bảng
Exec Sp_PKeys tb
Xem các khóa ngoại của bảng
Exec Sp_FKeys tb
Với bảng tb không kiểm tra ràng buộc
Alter Table tb NoCheck Constraint
Với bảng tb không kiểm tra tất cả ràng buộc
Alter Table tb NoCheck Constraint All
Thiết lập NgàyGiờ là dmy
Set DateTime dmy
Ràng buộc miền giá trị
Với bảng tb tạo ràng buộc kiểm tra(cột in (' ', )
Alter Table tb Add Constraint Check ( in (' ', )
Ràng buộc Rule
Tạo luật là @cột
Thực hiện gán luật ,với cột của bảng.
Create Rule As @
Exec BindRule ' ','tb [ ]'
Declare @strSQL VarChar(100)
Set @strSQL='Declare '
Execute (@strSQL)
leonguyen.com
23
Tài liệu SQL Server
4.2.6. Bảng tạm (Temporary Table)
Khái niệm
(Concept)
- Nếu chỉ cần dùng table để lưu dữ liệu tạm thời trong quá trình xử lí, ta có thể tạo table tạm.
- Cách tạo tương tự như tạo một table thông thường, chỉ khác là tên table bắt đầu bằng dấu # (Local)
hoặc ## (Global).
- Khi kết thúc quá trình xử lí thì table này sẽ được tự động xóa đi.
- Do không phải lưu trữ thật trong hệ thống, nên hệ thống không phải kiểm soát từ điển dữ liệu (Data
Dictionary), quyền truy cập … -> rất hiệu quả với dữ liệu tạm.
Tạo (Create)
Thiết kế (Design)
Viết lệnh SQL
(SQL Statement)
- Cách 1:
CREATE TABLE #[#]Tên_bảng_tạm
(
Khai_báo_các_cột
…
)
- Cách 2:
SELECT Danh_sách_cột
INTO #[#]Tên_bảng_tạm
FROM …
WHERE …
Ví dụ (Example)
* Cách 1:
- Tạo table tạm thuộc loại Local temporary table:
CREATE TABLE #TongHop
(TongThu INT, TongChi INT)
- Sau khi tạo xong ta có thể sử dụng bình thường như các table khác.
SELECT * FROM #TongHop
INSERT INTO #TongHop VALUES(500, 200)
- Table này chỉ tồn tại trong connection này thôi.
- Có thể thấy tìm table này trong database TempDB.
- Tạo table tạm thứ 2, thuộc loại Global temporary table.
CREATE TABLE ##BaoCao
(TongThu INT, TongChi INT)
- Thêm dữ liệu vào table vừa tạo
INSERT INTO ##BaoCao VALUES(300, 100)
- Tạo query (connection) mới.
- Truy vấn và nhận xét sự khác nhau giữa 2 table này.
* Cách 2:
SELECT MSNV, HoTen, MSPB
INTO #NVP1
FROM NhanVien
WHERE MSPB=’P1’
4.2.7. Không gian bảng (Tablespace)
Ví dụ
(Example)
Alter TableSpace tbsUser
Offline Normal;
Drop TableSpace tbsUser
Including Contents;
Create TableSpace tbsUser
DataFile 'C:\User.dat' Size 1M
AutoExtend On Next 1M MaxSize 2M
Online;
Drop TableSpace tbsUser;
Create TableSpace tbsTam
DataFile 'C:\Tam.dat' Size 1M
AutoExtend On Next 1M MaxSize 2M
Online;
Bảng(Table) (Trường,Kiểu,Khóa chính-ngoại) (Field,Field DataType,Primary
Foreign Key)
Nếu tồn tại bảng tb thì xóa cấu trúc bảng
If Exists (Select * From SysObjects Where Id = Object_Id (N'tb ') And
leonguyen.com
24
Tài liệu SQL Server
ObjectProperty(Id,N'IsUserTable')=1)
Drop Table tb
Tạo bảng tên là tb với cấu trúc như sau
(
Tên trường Kiểu trường,
)
Create Table tb
(
,
)
Xem tên các bảng vừa tạo
Exec Sp_Tables
Xem cấu trúc của bảng tb
Exec Sp_Columns tb
======================================
Drop Table tbUser Cascade Constraints;
/*Xoa bo toan bo rang buoc tham chieu toan ven cua bang*/
Create Table tbUser
(
ID Number(1) Primary Key,
Ten VarChar(50) Not Null,
)
TableSpace tbsUser;
Grant Delete On tbUser To rlUser;
Grant Insert On tbUser To rlUser;
Grant Update On tbUser To rlUser;
4.3. Khung nhìn (View)
Giới thiệu
(Introduction)
- View là một đối tượng trong CSDL, và được xem như là một Bảng ảo (Virtual Table).
- Bản thân view không chứa dữ liệu bên trong, mà dữ liệu được lấy từ các table thông qua cầu
SELECT.
- View thường được dùng để:
+ Che dấu sự phức tạp của câu truy vấn đối với người dùng.
+ Tạo ra các câu truy vấn trung gian, để sử dụng làm nguồn dữ liệu cho các câu truy vấn
kế.
+ Tạo ra nhiều góc nhìn khác nhau trên cùng một dữ liệu nguồn.
+ Giúp cho sự phân quyền uyển chuyển hơn.
Tạo (Create)
Thiết kế
(Design)
Viết lệnh SQL
(SQL
Statement)
CREATE VIEW Tên_Khung_nhìn
AS
Câu_lệnh_SELECT
Ví dụ
(Example)
CREATE VIEW vw_NVP1
AS
SELECT MSNV, HoTen, MSPB
FROM NhanVien
WHERE MSPB = ’P1’
- Sau khi view được tạo ra, ta có thể dùng lệnh SELECT để truy vấn dữ liệu
như đối với một table bình thường.
SELECT * FROM vw_NTP1
Ví dụ (Example)
If Exists (Select Name From SysObjects Where Name Like 'vw_ ')
Drop View vw_
Go
Tạo bảng ảo tên là vw_ ([Tên Trường], )
Create View vw_
As
Lấy không trùng N dòng As -> Trích lấy 1 số thuộc tính trong bảng
Từ bảng tb
Mà có điều kiện là -> lọc ra 1 số bộ thỏa điều kiện nào đó
Được sắp xếp tăng dần, giảm dần
leonguyen.com
25