Tải bản đầy đủ (.pdf) (111 trang)

Bài Giảng Hệ Quản Trị Cơ Sở Dữ Liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.03 MB, 111 trang )

TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT
ĐẶNG HỮU NGHỊ
BÙI THỊ VÂN ANH

BÀI GIẢNG

HỆ QUẢN TRỊ
CƠ SỞ DỮ LIỆU

HÀ NỘI - 2018
0


MỤC LỤC
Chương 1 : Những khái niệm cơ bản về cơ sở dữ liệu .......................................................... 3
I. Cơ sở dữ liệu là gì? ......................................................................................................... 3
1. Hệ quản trị cơ sở dữ liệu. ........................................................................................... 3
2. Bản ghi và trường ...................................................................................................... 3
II. Thiết kế cơ sở dữ liệu. ................................................................................................... 3
1. Các mối quan hệ ........................................................................................................ 5
2. Sử dụng tính toàn vẹn tham chiếu để duy trì tính nhất quán ..................................... 5
3. Chuẩn hoá .................................................................................................................. 6
Chương 2 : Giới thiệu về SQL Server 2008 .......................................................................... 9
I. SQL Server 2008 ............................................................................................................ 9
II. Bắt đầu với SQL Server Management Studio ............................................................. 10
Chương 3: Một số thao tác cơ bản trên SQL Server 2008 ................................................... 16
1. Tạo một CSDL mới. .................................................................................................... 16
2. Tạo bảng mới. .............................................................................................................. 17
3. Thay đổi cấu trúc của bảng .......................................................................................... 24
4. Lược đồ CSDL ............................................................................................................. 25
5. Nhập dữ liệu cho bảng ................................................................................................. 30


6. Xóa bảng, xóa CSDL ................................................................................................... 30
7. Mở một query editor để viết câu lệnh SQL ................................................................. 30
Chương 4: Các câu lệnh SQL cơ bản .................................................................................. 34
I. Giới thiệu sơ lược về Transact SQL (T-SQL). ............................................................. 34
II. Ngôn ngữ thao tác dữ liệu ........................................................................................... 34
1. Câu lệnh Select ........................................................................................................ 34
2. Truy vấn dữ liệu từ nhiều bảng ................................................................................ 44
3. Truy vấn con (Subquery) ......................................................................................... 47
4. Thêm dữ liệu vào bảng ............................................................................................ 48
5. Cập nhật dữ liệu ....................................................................................................... 49
6. Xóa dữ liệu ............................................................................................................... 50
III. Ngôn ngữ định nghĩa dữ liệu ..................................................................................... 50
1. Tạo bảng .................................................................................................................. 50
2. Sửa đổi định nghĩa bảng .......................................................................................... 53
3. Xóa bảng .................................................................................................................. 54
4. Khung nhìn - VIEW ................................................................................................. 54
Chương 5: Một số hàm trong SQL Server ........................................................................... 57
I. Các hàm trên dữ liệu kiểu số ........................................................................................ 57
1. Hàm ABS ................................................................................................................. 57
2. Hàm CEILING ......................................................................................................... 57
3. Hàm FLOOR............................................................................................................ 57
4. Hàm ROUND .......................................................................................................... 57
5. Hàm SQUARE ......................................................................................................... 57
6. Hàm SQRT .............................................................................................................. 57
7. Hàm isNumeric: ....................................................................................................... 57
II. Nhóm hàm thống kê .................................................................................................... 57
1. Hàm COUNT: .......................................................................................................... 57
2. Hàm MAX: .............................................................................................................. 57
3. Hàm MIN: ................................................................................................................ 57
4. Hàm SUM: ............................................................................................................... 57

5. Hàm AVG: ............................................................................................................... 58
III. Nhóm hàm xử lý chuỗi kí tự ..................................................................................... 58
1. Hàm LEFT ............................................................................................................... 58
1


2. Hàm RIGHT ............................................................................................................ 58
3. Hàm LEN ................................................................................................................. 58
4. Hàm LTRIM ............................................................................................................ 58
5. Hàm RTRIM ............................................................................................................ 58
6. Hàm LOWER .......................................................................................................... 58
7. Hàm UPPER ............................................................................................................ 58
8. Hàm SUBSTRING .................................................................................................. 58
9. Hàm Replace ............................................................................................................ 58
10. Hàm STR ............................................................................................................... 58
IV. Nhóm hàm ngày tháng. .............................................................................................. 59
1. Hàm GETDATE: ..................................................................................................... 59
2. Hàm DATEPART .................................................................................................... 59
3. Hàm DAY( ): ........................................................................................................... 59
4. Hàm MONTH( ): ..................................................................................................... 59
5. Hàm YEAR( ): ......................................................................................................... 60
6. DATEADD .............................................................................................................. 60
7. DATEDIFF .............................................................................................................. 60
V. Hàm CAST và CONVERT ......................................................................................... 60
Chương 6: Thủ tục lưu trữ, hàm và trigger .......................................................................... 62
I. Thủ tục lưu trữ (Stored Procedure)............................................................................... 62
1. Tạo thủ tục lưu trữ bằng Lệnh CREATE ................................................................. 62
2. Biến trong thủ tục lưu trữ......................................................................................... 63
3. Giá trị trả về trong thủ tục lưu trữ ............................................................................ 64
4. Các lệnh điều khiển.................................................................................................. 65

5. Thay đổi thủ tục lưu trữ ........................................................................................... 68
6. Xóa thủ tục lưu trữ ................................................................................................... 68
II. Hàm do người dùng định nghĩa (User Defined Function-UDF) ................................. 68
1. Hàm Scalar ............................................................................................................... 68
2. Hàm Inline Table-Valued ........................................................................................ 69
3. Hàm Multi-Statement Table-Valued ....................................................................... 69
III. Trigger ....................................................................................................................... 70
1. Tạo các Trigger ........................................................................................................ 72
2. Trigger cho hành động thêm bản ghi ....................................................................... 73
3. Trigger cho hành động cập nhật bản ghi.................................................................. 75
4. Trigger cho hành động xóa bản ghi ......................................................................... 75
Chương 7: SQL Server và lập trình ứng dụng ..................................................................... 77
I. Mô hình kết nối ứng dụng đến SQL server .................................................................. 77
1. Mô hình ADO .......................................................................................................... 77
2. Mô hình ADO.NET ................................................................................................. 78
3. Khác biệt giữa ADO và ADO.NET ......................................................................... 79
II. Truy cập dữ liệu với VB 6 và ADO ............................................................................ 80
1. ADO ......................................................................................................................... 80
2. Ví dụ ........................................................................................................................ 85
III. Truy cập dữ liệu với VB.NET và ADO.NET ............................................................ 91
1. ADO.NET ................................................................................................................ 91
2. Các ví dụ .................................................................................................................. 96
VI. Truy cập dữ liệu với C# và ADO.NET .................................................................... 104
1. ADO.NET .............................................................................................................. 104
2. Các ví dụ ................................................................................................................ 106
PHỤ LỤC .......................................................................................................................... 110

2



Chương 1 : Những khái niệm cơ bản về cơ sở dữ liệu
I. Cơ sở dữ liệu là gì?
Cơ sở dữ liệu là một kho chứa thông tin. Có nhiều loại cơ sở dữ liệu, nhưng
ta chỉ đề cập đến cơ sở dữ liệu quan hệ, là kiểu cơ sở dữ liệu phổ biến nhất hiện nay.
Một cơ sở dữ liệu quan hệ:
Chứa dữ liệu trong các bảng, được cấu tạo bởi các dòng còn gọi là các bản
ghi, và cột gọi là các trường.
 Cho phép lấy về (hay truy vấn) các tập hợp dữ liệu con từ các bảng.
 Cho phép liên kết các bảng với nhau cho mục đích truy cập các bản ghi
liên quan với nhau chứa trong các bảng khác nhau.
1. Hệ quản trị cơ sở dữ liệu.
Hệ quản trị cơ sở dữ liệu (Database Management System - DBMS): Là một
hệ thống phần mềm cho phép tạo lập cơ sở dữ liệu và điều khiển mọi truy nhập đối
với cơ sở dữ liệu đó.
Trên thị trường phần mềm hiện nay ở Việt Nam đã xuất hiện khá nhiều phần
mềm hệ quản trị cơ sở dữ liệu như: Microsoft Access, Foxpro, DB2, SQL Server,
Oracle,.v.v…
- Hệ quản trị cơ sở dữ liệu quan hệ (Relation Database Management System
- RDBMS) là một hệ quản trị cơ sở dữ liệu theo mô hình quan hệ.
2. Bản ghi và trường
Các cơ sở dữ liệu được cấu tạo từ các bảng dùng thể hiện các phân nhóm dữ
liệu. Ví dụ, nếu ta tạo một cơ sở dữ liệu để quản lý tài khoản trong công việc kinh
doanh ta phải tạo một bảng cho khách hàng, một bảng cho Hoá đơn và một bảng
cho nhân viên. Bảng có cấu trúc định nghĩa sẵn và chứa dữ liệu phù hợp với cấu
trúc này.
Bảng: Chứa các bản ghi tin là các mẩu riêng rẽ bên trong phân nhóm dữ liệu.
Bản ghi: Chứa các trường. Mỗi trường thể hiện một bộ phận dữ liệu trong
một bản ghi. Ví dụ như mỗi bản ghi thể hiện một mục trong danh bạ địa chỉ chứa
trong trường Họ và tên, địa chỉ, và số điện thoại.


II. Thiết kế cơ sở dữ liệu.
Để tạo một cơ sở dữ liệu, trước hết ta phải xác định thông tin gì cần theo dõi.
3


Sau đó, ta thiết kế cơ sở dữ liệu, tạo bảng chứa các trường định nghĩa kiểu dữ liệu
sẽ có. Sau khi tạo ra cấu trúc cơ sở dữ liệu, cơ sở dữ liệu có thể chứa dữ liệu dưới
dạng bản ghi. Ta không thể đưa dữ liệu vào mà không có bảng hay định nghĩa
trường vì dữ liệu sẽ không có chỗ để chứa. Do đó, thiết kế cơ sở dữ liệu cực kỳ
quan trọng, nhất là rất khó thay đổi thiết kế một khi ta đã tạo xong nó.
Ví dụ ta tạo một bảng sau:
Bảng khách hàng
tblCustomer
CustomerID
FirstName
LastName
Company
Address
City
State
Zip
Phone
Fax
Email

Bảng tblRegion
TblRegion
State
RegionName


Có quan hệ giữa 2 bảng thông qua trường State. Đây là mối quan hệ một nhiều, đối với một bản ghi trong tblRegion, có thể không có, hoặc có nhiều bản ghi
tương ứng trong bảng tblCustomer.
Cụm từ “tbl” thể hiện tên bảng, tên trường hiển thị đầy đủ, không chứa
khoảng trắng hay những ký tự đặc biệt khác như dấu gạch dưới.
Bảng hoá đơn:
TblOrder
ID
CustomerID
OrderDate
ItemID
Amount
Khóa chính: là kiểu chỉ mục đặc biệt. Một trường được chỉ ra như là khóa
chính của một bảng phục vụ cho việc xác định duy nhất bản ghi. Vì vậy không như
các kiểu chỉ mục khác, sẽ không có hai bản ghi trong cùng một bảng mà có cùng giá
trị cho trường khóa chính. Khi thiết kế một trường làm khóa chính, không có bản
ghi nào chứa giá trị rỗng (giá trị NULL) ở trường này. Khi chỉ ra một trường là
khóa chính của bảng ta có thể tạo mối quan hệ giữa bảng này với một bảng khác
trong CSDL.

4


1. Các mối quan hệ
Mối quan hệ là một cách định nghĩa chính thức hai bảng liên hệ với nhau
như thế nào. Khi ta định nghĩa một mối quan hệ, ta đã thông báo với bộ máy cơ sở
dữ liệu rằng hai trường trong hai bảng liên quan được nối với nhau.
Hai trường liên quan với nhau trong một mối quan hệ là khoá chính và khoá
ngoại. Khoá ngoại là khoá trong bảng liên quan chứa bản sao của khoá chính của
bảng chính.
Sau đó mối quan hệ báo cho bộ máy cơ sở dữ liệu hai bảng liên quan với

nhau trong mối quan hệ và khoá ngoại nào liên quan với khoá chính nào.
Ngoài việc ghép các bản ghi liên quan trong các bảng riêng biệt, ta còn định
nghĩa mối quan hệ để tận dụng thế mạnh của tính toàn vẹn tham chiếu, một thuộc
tính của bộ máy cơ sở dữ liệu duy trì các dữ liệu trong một cơ sở dữ liệu nhiều bảng
luôn luôn nhất quán. Khi tính toàn vẹn tham chiếu tồn tại trong một cơ sở dữ liệu,
bộ máy cơ sở dữ liệu sẽ ngăn cản ta xoá một bản ghi khi có các bản ghi khác tham
chiếu đến nó trong cơ sở dữ liệu.
Sau khi đã định nghĩa một mối quan hệ trong cơ sở dữ liệu, việc định nghĩa
mối quan hệ này sẽ được lưu trữ cho đến khi ta xóa nó.
2. Sử dụng tính toàn vẹn tham chiếu để duy trì tính nhất quán
Khi các bảng nối kết với nhau thông qua mối quan hệ, dữ liệu trong mỗi
bảng phải duy trì sự nhất quán trong các bảng liên kết. Tính toàn vẹn tham chiếu
quản lý công việc này bằng cách theo dõi mối liên hệ giữa các bảng và ngăn cấm
các kiểu thao tác nào đó trên các bản ghi.
Ví dụ, giả định rằng ta có một bảng gọi là tblCustomer và một bảng khác là
tblOrder. Hai bảng này quan hệ với nhau qua trường chung là CustomerID.
Giả thiết ở đây là ta tạo các khách hàng chứa trong tblCustomer rồi tạo các
hoá đơn trong tblOrder. Nhưng điều gì sẽ xảy ra nếu ta tiến hành xoá một khách
hàng có hoá đơn chưa xử lý chứa trong bàng hoá đơn? Hoặc là nếu ta tạo một hoá
đơn mà không có một CustomerID hợp lệ gắn liền với nó? Mục hoá đơn không có
CustomerID thì không thể gửi đi, bởi vì địa chỉ gửi là một trường của mẩu tin trong
tblCustomer. Khi dữ liệu trong các bảng quan hệ gặp phải rắc rối này, ta nói nó ở
trạng thái không nhất quán.
Một điểu rất quan trọng là cơ sở dữ liệu không được trở nên không nhất
quán, bộ máy cơ sở dữ liệu cung cấp một cách để ta định nghĩa mối quan hệ trong
các bảng. Khi ta định nghĩa một mối quan hệ chính thức giữa hai bảng bộ máy cơ sở
dữ liệu sẽ giám sát mối quan hệ này và ngăn cấm bất kỳ thao tác nào vi phạm tính
toàn vẹn tham chiếu. Hoạt động của cơ chế toàn vẹn tham chiếu là phát sinh ra lỗi
5



mỗi khi ta thi hành một hành động nào đó làm cho dữ liệu rơi vào trạng thái không
nhất quán. Ví dụ, trong cơ sở dữ liệu có tính toàn vẹn tham chiếu đang hoạt động,
nếu ta cố tạo một hoá đơn chứa một CustomerID của khách hàng đối với một khách
hàng không tồn tại, ta sẽ nhận một thông báo lỗi và hoá đơn sẽ không thể tạo ra.
3. Chuẩn hoá
Chuẩn hoá là một khái niệm liên quan đến mối quan hệ. Về cơ bản, nguyên
tắc của chuẩn hoá phát biểu rằng các bảng cơ sở dữ liệu sẽ loại trừ tính không nhất
quán và giảm thiểu sự kém hiệu quả.
Các cơ sở dữ liệu được mô tả là không nhất quán khi dữ liệu trong một bảng
không tương ứng với dữ liệu nhập vào trong bảng khác. Ví dụ, Nếu phân nửa số
người nghĩ rằng Arkansr ở miền Trung Tây và một nửa nghĩ rằng nó nằm ở phía
Nam và nếu cả hai nhóm nhân viên nhập liệu theo ý kiến riêng của họ, khi ấy báo
cáo cơ sở dữ liệu trình bày những việc xảy ra ở miền Trung Tây là vô nghĩa.
Một cơ sở dữ liệu kém hiệu quả không cho phép ta trích ra các dữ liệu chính
xác mà ta muốn. Một cơ sở dữ liệu chứa toàn bộ dữ liệu trong một bảng có thể buộc
ta phải vất vả duyệt qua một lượng lớn tên các khách hàng, địa chỉ và lịch sử liên hệ
chỉ để lấy về 1 số điện thoại của một khách hàng nào đó. Mặt khác, một cơ sở dữ
liệu được chuẩn hoá đầy đủ chứa từng mẩu thông tin của cơ sở dữ liệu trong bảng
riêng và xa hơn, xác định từng mẩu thông tin duy nhất thông qua khoá chính của nó.
Các cơ sở dữ liệu chuẩn hoá cho phép ta tham chiếu đến một mẩu thông tin
trong một bảng bất kỳ chỉ bằng khoá chính của thông tin đó.
Ta quyết định cách thức chuẩn hoá của một cơ sở dữ liệu khi ta thết kế và
khởi tạo một cơ sở dữ liệu. Thông thường, mọi thứ về ứng dụng cơ sở dữ liệu - từ
thiết kế bảng cho đến thiết kế truy vấn, từ giao diện người sử dụng đến cách hoạt
động của báo cáo - đều xuất phát từ cách chuẩn hoá cơ sở dữ liệu.
Là một lập trình viên cơ sở dữ liệu, thỉnh thoảng bạn sẽ chợt nảy ra ý nghĩ
về cơ sở dữ liệu vẫn chưa được chuẩn hoá vì lý do này hay lý do khác. Sự thiếu
chuẩn hoá có thể do chủ ý, hoặc có thể là do kết quả của sự thiếu kinh nghiệm hoặc
sự không thận trọng trong việc thiết kế cơ sở dữ liệu ban đầu. Dù ở mức độ nào, nếu

đã chọn chuẩn hoá một cơ sở dữ liệu đã tồn tại, ta nên thực hiện sớm (bởi vì mọi
thứ khác thực hiện trong cơ sở dữ liệu đều phụ thuộc vào cấu trúc bảng của cơ sở
dữ liệu). Hơn nữa, ta sẽ thấy những câu truy vấn hành động là công cụ rất hữu ích
trong việc sắp xếp lại một cơ sở dữ liệu thiết kế thiếu sót. Truy vấn là hành động
cho phép ta di chuyển các trường từ bảng này sang bảng khác như là thêm, cập nhật
và xoá bản ghi từ các bảng dựa trên các tiêu chí nêu ra.

6


a. Quan hệ Một - Một

Là loại quan hệ dễ hiểu và dễ thực hiện nhất, bởi vì trong những mối quan hệ
như vậy, một bảng sẽ lấy vị trí của một trường trong một bảng khác, trường liên
quan cũng dễ nhận dạng. Tuy nhiên, quan hệ một - một không phải là mối quan hệ
thông dụng nhất trong ứng dụng cơ sở dữ liệu. Do 2 nguyên nhân:
1. Hầu như ta không cần biểu diễn mối quan hệ một - một với hai bảng. Ta có
thể dùng nó để cải tiến khả năng hoạt động, ví dụ ta mất tính linh hoạt khi
chứa các dữ liệu liên hệ trong một bảng tách biệt. Trong ví dụ trước, thay vì
có các bảng nhân viên và công việc chứa trong bảng nhân viên.
2. Thể hiện quan hệ một - nhiều thì cũng khá dễ (nhưng linh hoạt hơn nhiều)
quan hệ một - một.
b. Quan hệ một - nhiều

Phổ biến hơn quan hệ một - một, trong đó, mỗi bản ghi trong một bảng này
không có, hoặc có một, hoặc nhiều bản ghi trong một bảng liên hệ.
Ví dụ, ta gán từng khách hàng cho một người bán hàng. Để thực hiện điều
này, ta cần một bảng cho người bán hàng :
Bởi vì một người bán hàng có trách nhiệm với nhiều khách hàng, ta có thể
nói đã có mối quan hệ một - nhiều giữa người bán hàng và khách hàng.

Để thực hiện mối quan hệ này trong thiết kế cơ sở dữ liệu, ta phải copy khoá
chính của phía một đến bảng chứa phía nhiều trong quan hệ.
c. Quan hệ nhiều nhiều

Quan hệ nhiều - nhiều là bước phát triển của quan hệ một - nhiều ví dụ cổ
điển của quan hệ nhiều nhiều là học sinh và lớp. Mỗi học sinh có nhiều lớp, mỗi lớp
có nhiều học sinh.
Để thiết lập quan hệ nhiều nhiều, ta có thể sửa lại ví dụ trước sao cho cơ sở
dữ liệu có thể chứa nhiều người bán cho một người mua. Mỗi người bán có nhiều
khách hàng, và mỗi khách hàng có nhiều người bán.

7


Bài Tập
1. Nêu các đặc trưng chính của Khóa chính (primary key).
2. Khóa ngoại (foreign key) là gì?
3. Mục đích của việc thiết kế CSDL quan hệ là gì?

8


Chương 2 : Giới thiệu về SQL Server 2008

I. SQL Server 2008
SQL Server 2008 là một hệ thống quản lý cơ sở dữ liệu (Relational Database
Management System (RDBMS)) sử dụng Transact-SQL để trao đổi dữ liệu giữa
Client computer và SQL Server computer. Một RDBMS bao gồm databases,
database engine và các ứng dụng dùng để quản trị dữ liệu và các bộ phận khác nhau
trong RDBMS.

SQL Server 2008 được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu
rất lớn (Very Large Database Environment) lên đến Tera-Byte và có thể phục vụ
cùng lúc cho hàng ngàn user. SQL Server 2008 có thể kết hợp "ăn" với các server
khác như Microsoft Internet Information Server (IIS), E-Commerce Server, Proxy
Server.... Các phiên bản của SQL Server 2008:
 SQL Server 2008 Express Edition
 SQL Server 2008 Enterprise Edition
 SQL Server 2008 Standard Edition
 SQL Server 2008 Workgroup Edition
 SQL Server 2008 Developer Edition
 SQL Server 2008 Compact Edition
 SQL Server 2008 Web Edition
 SQL Server 2008 Datacenter Edition
Enterprise: Hỗ trợ không giới hạn số lượng CPU và kích thước Database. Hỗ
trợ không giới hạn RAM (nhưng tùy thuộc vào kích thước RAM tối đa mà HĐH hỗ
trợ) và các hệ thống 64bit.
Standard: Tương tự như bản Enterprise nhưng chỉ hỗ trợ 4 CPU. Ngoài ra
phiên bản này cũng không được trang bị một số tính năng cao cấp khác.
Workgroup: Tương tự bản Standard nhưng chỉ hỗ trợ 2 CPU và tối đa 3GB
RAM.
Express: Bản miễn phí, hỗ trợ tối đa 1CPU, 1GB RAM và kích thước tối đa
của Database là 10GB.
Compact: Nhúng miễn phí vào các môi trường phát triển ứng dụng web.
Kích thước tối đa của cơ sở dữ liệu là 4GB.
Datacenter: Thay đổi lớn trên SQL Server 2008 R2 chính là bản Datacenter
9


Edition. Không giới hạn bộ nhớ và hỗ trợ hơn 25 bản cài.
SQL Server 2008 Express Edition


SQL Server 2008 Express cung cấp một phương tiện tuyệt vời cho những
người bắt đầu làm việc với SQL Server. Nó cung cấp một môi trường mạnh mẽ,
đáng tin cậy ổn định, đó là môi trường miễn phí và dễ sử dụng. Nó cung cấp các
chức năng bảo mật và quản lý thông tin tương tự như các phiên bản tinh vi hơn của
SQL Server. Một số lợi thế khác của SQL Server Express bao gồm dễ dàng cài đặt,
dễ dàng quản lí.
Trong giáo trình này chúng ta sẽ tập trung nghiên cứu về SQL Server 2008.

II. Bắt đầu với SQL Server Management Studio
SQL Server Management Studio là công cụ mà bạn sử dụng để quản lý SQL
Server và các đối tượng của nó. Sử dụng công cụ này, bạn có thể tạo và làm việc
với cơ sở dữ liệu, bảng biểu, các thủ tục lưu trữ, các chỉ mục, và nhiều hơn nữa.
Để khởi động SQL Server Management Studio bạn thực hiện theo các bước
sau:
Vào Start/Microsoft SQL Server 2008 R2/ SQL Server Management Studio,
xuất hiện hộp thoại Connect to Server.

Trong đó:
 Server type: Chọn Database Engine để kết nối đến cỗ máy cơ sở dữ liệu.
 Server name: Chọn hoặc nhập tên server, bạn nhập tên server ở dạng
Tenmay\TenTheHien. Ví dụ Trong trường hợp bạn kết nối vào SQL
Server trên máy địa phương, bạn có thể sử dụng dấu chấm, để đại diện
10


cho tên máy: .\ SQLEXPRESS
 Authentication: Chọn chế độ xác thực là Windows Authentication hoặc
SQL Server Authentication, nếu chọn SQL Server Authentication thì ta
phải cung cấp thông tin cho các mục login và Password.

 Login: sa
 Password: Mật khẩu của tên đăng nhập
 Remember password: Tùy chọn được chọn để là đăng nhập sau không
phải đánh mật khẩu.
Sau khi nhập xong các thông tin ta nhấn nút Connect, giao diện sau khi đăng
nhập thành công như sau:

Các đối tượng trong một CSDL
Các đối tượng hệ thống và đối tượng của người sử dụng
CSDL hệ thống (System databases) bao gồm Master, Model, MSDB,
Resource, TempDB, và Distribution. SQL tạo ra các CSDL này trong quá trình cài
đặt. Như tên gọi của chúng, chúng là một phần của hệ thống, và hầu hết trong số
chúng được sử dụng để cho phép máy chủ hoạt động.

11


Bên cạnh các đối tượng hệ thống là một phần của hệ thống SQL Server bạn
có thể tạo các đối tượng của người sử dụng. Các đối tượng của người sử dụng bao
gồm các CSDL, các thủ tục lưu trữ, các hàm, và các đối tượng CSDL khác. Bạn có
thể thêm hoặc xóa các đối tượng này khi cần thiết.

Bảng (Table)
Bảng nói chung là đối tượng đầu tiên mà bạn đưa vào CSDL SQL Server,
bảng chứa các dữ liệu trong CSDL của bạn. Mỗi bảng chứa thông tin về một chủ đề,
ví dụ một bảng chứa thông tin về khách hàng, một bảng khác chứa thông tin về đơn
đặt hàng. Mỗi bảng trong CSDL phải có tên duy nhất.
12



Lược đồ CSDL (Database Diagram)
Lược đồ CSDL thể hiện cấu trúc của CSDL dưới dạng đồ họa, nó biểu diễn
mối quan hệ giữa các bảng trong CSDL. Sử dụng lược đồ CSDL bạn có thể chỉnh
sửa bảng, các cột, mối quan hệ, khóa, và các chỉ mục v.v....

Khung nhìn (View):
Khung nhìn là một bảng tạm thời, có cấu trúc như một bảng. Nội dung của
khung nhìn dựa trên một truy vấn (query), nó chỉ tồn tại trong bộ nhớ. Dữ liệu
trong một khung nhìn có thể đến từ một hoặc nhiều bảng trong CSDL. Nó cũng có
thể đến từ các khung nhìn khác thậm chí đến từ dữ liệu trong các CSDL khác.

13


Thủ tục lưu trữ (Stored Procedure)
Thủ tục lưu trữ là một đối tượng trong CSDL, bao gồm nhiều câu lệnh TSQL được tập hợp lại với nhau thành một nhóm, và tất cả các lệnh này sẽ được thực
thi khi thủ tục lưu trữ được thực thi.

Hàm do người dùng định nghĩa (Function):
Hàm do người dùng tự định nghĩa (ở đây ta gọi tắt là hàm) là một thủ tục cho
phép chấp nhận các tham số đầu vào, thực hiện một số các thao tác và trả về kết quả
của các thao tác như một giá trị. Kết quả trả về có thể là một giá trị hoặc một tập các
giá trị. Hàm có rất nhiều lợi ích, cũng giống như các thủ tục lưu trữ chúng cho phép
ta modul hóa chương trình nghĩa là ta có thể gọi nó ở bất cứ điểm nào trong chương
trình.

14


Trigger

Trigger là một dạng đặc biệt của thủ tục lưu trữ, nó được thực hiện khi một
sự kiện ngôn ngữ thực thi. Có 2 loại trigger: DML triggers and DDL triggers. DDL
trigger được Microsoft giới thiệu trong SQL server 200. Chúng được thực hiện khi
có sự thay đổi cấu trúc của CSDL. Ví dụ khi ai đó cố gắng xóa một trường của một
bảng, bạn có thể viết một DDL trigger để ngăn chặn việc xóa một trường nếu
trường đó có chứa dữ liệu. Bạn cũng có thể sử dụng DDL trigger để thống kê các
thay đổi về cấu trúc của CSDL.
DML trigger được gọi khi một sự kiện DML (Data Manipulation Language)
diễn ra trong CSDL. Các sự kiện DML bao gồm các lệnh INSERT, UPDATE, and
DELETE v.v...xảy ra khi dữ liệu trong một bảng hoặc một khung nhìn bị thay đổi.
DDM trigger có một số tác dụng như chúng có thể bảo vệ dữ liệu của bạn từ các
lệnh INSERT, UPDATE, and DELETE không hợp lệ.

15


Chương 3: Một số thao tác cơ bản trên SQL Server 2008
Microsoft SQL Server Management Studio cung cấp một giao diện thân
thiện giúp cho người dùng thực hiện các thao tác một cách dễ dàng. Một số các thao
tác cơ bản bao gồm: tạo CSDL mới, xóa CSDL, tạo bảng, xóa bảng… Cũng cần lưu
ý rằng các thao tác thực hiện thông qua giao diện thì đều có thể được thực hiện
được bằng các câu lệnh SQL.

1. Tạo một CSDL mới.
Để tạo CSDL mới ta kích chuột phải vào mục Database trong cửa sổ Object
Explorer và chọn New Database...

Gõ tên của CSDL vào mục Database name (ví dụ ở đây ta tạo CSDL QLDH)
sau đó kích OK


16


2. Tạo bảng mới.
Bảng được tạo thành từ các hàng và các cột. Mỗi cột hay còn gọi là trường
(field) gồm tên cột (Column Name), kiểu dữ liệu (Data Type) và một giá trị cho biết
cột đó có thể chứa giá trị NULL hay không.
Để tạo bảng ta thực hiện theo các bước sau:
 Kích chuột phải vào mục Table trong CSDL mà bạn muốn thêm bảng
mới sau đó chọn New Table

 Cửa sổ thiết kế bảng xuất hiện.

17


 Nhập tên cột, kiểu dữ liệu và độ dài của mỗi trường trong bảng
 Chỉ định cột có cho phép chứa giá trị NULL hay không
 Thiết lập các thuộc tính cho cột trong phần Column Properties
Một trong những thuộc tính quan trọng nhất của cột là kiểu dữ liệu của cột.
Có các kiểu dữ liệu sau:
Kiểu dữ liệu

Phạm vi lưu trữ

Kích thước

bigint

Các số nguyên từ -263 đến 263-1


8 bytes

binary(n)

Dữ liệu nhị phân với độ dài cố định n byte (1
≤ n ≤ 8000)

n+ 4 bytes

bit

Kiểu bit (có giá trị 0 hoặc 1)

1 byte

char(n)

Kiểu chuỗi có chiều dài n kí tự cố định (1 ≤ n
≤ 8000). Không hỗ trợ Unicode

n bytes

datetime

Dữ liệu ngày giờ, nhận giá trị từ 1/1/1753 đến 4 bytes
31/12/9999

decimal(p,s)


Dữ liệu số thập phân. p là tổng số ký tự số có
thể được lưu, s là số chữ số thập phân

Phụ thuộc vào độ
chính xác

float

Dữ liệu số số thực dấu phẩy động có phạm vi
từ -1.79E+308 đến 1.79E+308

8 bytes

image

Dữ liệu nhị phân. Có thể lưu trữ tối đa
2,147,483,647 bytes dữ liệu nhị phân

Phụ thuộc dữ liệu

int

Số nguyên có giá trị từ -231 đến 231 - 1

4 bytes

money

Dữ liệu kiểu tiền tệ từ -263 đến 263


8 bytes

nchar(n)

Dữ liệu chuỗi, có chiều dài cố định n (1 ≤ n ≤
4000) ký tự Unicode

2n bytes

ntext

Dữ liệu kiếu chuỗi, có thể lưu trữ tối đa
1,073,741,823 kí tự Unicode

Mỗi kí tự chiếm
2 bytes

numeric(p,s)

Tương tự kiểu decimal

Dữ liệu kiếu chuỗi, có thể lưu trữ n (1 ≤ n ≤
nvarchar(MAX) 4000) kí tự Unicode
nvarchar(n)

2n bytes

real

Dữ liệu số thực dấu phẩy động, phạm vi từ 3.4E+38 đến 3.4E+38.


4 bytes

smalldatetime

Dữ liệu ngày giờ có thể lưu trữ từ 1/1/1900
đến 6/6/2079

4 bytes

smallint

Số nguyên từ -215 đến 215 -1

2 bytes

18


smallmoney

Dữ liệu kiểu tiền tệ từ - 214,748.3648 đến
214,748.3647

sql_variant

Cho phép giữ các giá trị của các kiểu dữ liệu
khác nhau (tất cả các kiểu dữ liệu hệ thống
khác).


text

Dữ liệu kiểu chuỗi, có thể lưu trữ tối đa
2,147,483,647 kí tự. Không hỗ trợ Unicode

timestamp

Cột timestamp được cập nhật tự động mỗi khi 8 bytes
dòng được thêm hoặc được cập nhật. Mỗi
bảng chỉ có thể có 1 cột timestamp

tinyint

Số nguyên có giá trị từ 0 đến 255

unique-dentifier Là số định danh duy nhất toàn cục (GUID).
Nó được tự động sinh ra mỗi khi hàm
NEWID( ) được sử dụng

4 bytes

Mỗi kí tự chiếm
1 bytes

1 byte
16 bytes

varbinary(n)

Dữ liệu nhị phân có chiều dài thay đổi (1 ≤ n

≤ 8000)

n bytes

varchar(n)

Dữ liệu ký tự có chiều dài thay đổi với n (1 ≤
n ≤ 8000) ký tự. Không hỗ trợ Unicode

n bytes

Sự khác biệt giữa char(10), nchar(10) varchar(10), nvarchar(10): Loại dữ liệu
Char là một loại chuỗi kí tự có kích thước cố định, nghĩa là trong ví dụ trên nếu dữ
liệu đưa vào "This is a really long character string" (lớn hơn 10 ký tự) thì SQL
Server sẽ tự động cắt phần đuôi và ta chỉ còn "This is a". Tương tự nếu chuỗi kí tự
đưa vào nhỏ hơn 10 thì SQL sẽ thêm khoảng trống vào phía sau cho đủ 10 ký tự.
Ngược lại loại varchar sẽ không thêm các khoảng trống phía sau khi chuỗi kí tự đưa
vào ít hơn 10. Còn kiểu dữ liệu bắt đầu bằng chữ n chứa dữ liệu dạng Unicode.
Cột nhận dạng (Identity Columns)
Cột nhận dạng trong một bảng là cột mà SQL tự động cung cấp dữ liệu. Cột
nhận dạng có dữ liệu kiểu số, giá trị của nó được tăng tự động khi một hàng mới
được thêm vào. Mặc định giá trị đầu tiên là 1, mỗi giá trị tiếp theo tăng lên 1. Người
thiết kế CSDL có thể chỉ ra giá trị bắt đầu và giá trị bước tăng. Cột nhận dạng
thường có kiểu dữ liệu int. Ta có thiết lập cột này là khóa chính. Để thiết lập một
cột là nhận dạng và giá trị bước tăng ta thay đổi các giá trị trong phần Indenty
Specification của cửa sổ Column Properties.

19



Cột được tính toán (Computed Column)
Với cột được tính toán, bạn có thể tạo ra một cột mà dữ liệu của nó được tính
toán từ các cột khác. SQL tự động cập nhật giá trị của cột được tính toán khi giá trị
của các cột phụ thuộc thay đổi. Ví dụ giá trị của cột ThanhTien được trả về bởi tích
của cột DonGia và cột SoLuong. Để tạo cột bạn nhập công thức vào trong thuộc
tính (Formula) của cột.

20


Các ràng buộc (Constraints)
Constraints là những thuộc tính (properties) mà ta áp đặt lên một table hay
một cột để tránh việc lưu dữ liệu không chính xác vào database (invalid data). Các
ràng buộc có tác dụng hạn chế hoặc điều khiển kiểu dữ liệu mà người sử dụng có
thể nhập vào trong bảng. Có một số ràng buộc chính như sau:
Primary Key Constraint:
Một table thường có một hay nhiều cột có giá trị mang tính duy nhất để xác
định một hàng bất kỳ trong table. Ta thường gọi là Primary Key (Khóa chính) và
được tạo ra khi ta tạo hay thay đổi một bảng với Primary Key Constraint.
Một bảng chỉ có thể có một Primary Key constraint. Có thể có nhiều cột
tham gia vào việc tạo nên một Primary Key, các cột này không thể chứa giá trị Null
và giá trị trong các cột thành viên có thể trùng nhau nhưng giá trị của tất cả các cột
tạo nên Primary Key phải mang tính duy nhất. Mỗi bảng trong CSDL nên có một
khóa chính, để xác định các cột trong bảng làm khóa chính ta thực hiện như sau:
 Chọn cột hoặc các cột làm khóa chính
 Kích chuột vào nút Set Primary Key trên thanh công cụ.

Cột làm khóa chính sẽ có biểu tượng chìa khóa trước tên cột.
Unique Constraint
Bạn có thể tạo Unique Constraint để đảm bảo giá trị của một cột nào đó

không bị trùng lập. Tuy Unique Constraint và Primary Key Constraint đều đảm bảo
tính duy nhất nhưng bạn nên dùng Unique Constraint trong những trường hợp sau:
 Nếu một cột (hay một sự kết hợp giữa nhiều cột) không phải là Primary
key. Nên nhớ chỉ có một Primary Key Constraint trong một table trong
khi ta có thể có nhiều Unique Constraint trên một bảng.
 Nếu một cột cho phép chứa giá trị Null. Unique constraint có thể áp đặt
21


lên một cột chứa giá trị Null trong khi Primary key constraint thì không.
Bạn tạo một Unique Constraint bằng cách tạo một unique index.
Foreign Key Constraint
Foreign Key (Khóa ngoại) là một cột hay một sự kết hợp của nhiều cột được
sử dụng để áp đặt mối liên kết dữ liệu giữa hai bảng. Foreign key của một bảng sẽ
giữ giá trị của Primary key của một bảng khác và chúng ta có thể tạo ra nhiều
Foreign key trong một bảng. Foreign key có thể reference (tham chiếu) vào Primary
Key hay cột có Unique Constraints. Foreign key có thể chứa giá trị Null. Mặc dù
mục đích chính của Foreign Key Constraint là để kiểm soát dữ liệu chứa trong bảng
có Foreign key (tức bảng con) nhưng thực chất nó cũng kiểm soát luôn cả dữ liệu
trong bảng chứa Primarykey (tức bảng cha). Ví dụ nếu ta xóa dữ liệu trong bảng cha
thì dữ liệu trong bảng con trở nên "mồ côi" (orphan) vì không thể reference ngược
về bảng cha. Do đó Foreign Key constraint sẽ đảm bảo điều đó không xảy ra. Nếu
bạn muốn xóa dữ liệu trong bảng cha thì trước hết bạn phải xóa Foreign key trong
bảng con trước.
Default Constraints
Default Constraints (Giá trị ngầm định) là giá trị mà SQL server tự động gán
cho một cột nào đó trong bảng. Giá trị ngầm định có thể là một hằng, NULL hoặc
một hàm, trong trường hợp người sử dụng không nhập dữ liệu cho cột thì cột sẽ
nhận giá trị ngầm định. Bạn có thể nhập giá trị ngầm định cho một cột tại thuộc tính
Default Value or Binding trong cửa sổ Column Properties.


22


Ví dụ các giá trị ngầm định như:
Biểu thức
getdate( )
NULL
7
‘Hello’

Kết quả
Thiết lập giá trị ngầm định là ngày tháng hiện hành
Thiết lập giá trị ngầm định là NULL
Thiết lập giá trị ngầm định là 7
Thiết lập giá trị ngầm định là chuỗi “Hello”

Check Constraint
Check Constraint dùng để giới hạn hay kiểm soát giá trị được phép nhập vào
một cột. Check Constraint giống Foreign Key Constraint ở chỗ nó kiểm soát giá trị
đưa vào một cột nhưng khác ở chỗ Foreign Key Constraint dựa trên giá trị ở bảng
cha để cho phép một giá trị được chấp nhận hay không trong khi Check Constraint
dựa trên một biểu thức logic để kiểm tra xem một giá trị có hợp lệ không. Ví dụ ta
có thể áp đặt một Check Constraint lên cột NgayDatHang chỉ chứa các giá trị là
ngày trước ngày hiện hành. Để nhập một Check Constraint ta thực hiện như sau:
 Kích chuột vào nút Manage Check Constraints trên thanh công cụ.

 Hộp thoại Check Constraints xuất hiện, tại đây ta kích nút Add để tạo
contraint mới.


23


 Nhập tên và biểu thức ràng buộc.
 Kích vào nút Close để thêm ràng buộc và đóng hộp thoại.
Sau khi thiết kế xong bảng ta vào kích vào biểu tượng Save trên thanh công
cụ sẽ xuất hiện hộp thoại Choose Name cho phép ta nhập vào tên bảng sau đó kích
OK.

3. Thay đổi cấu trúc của bảng
Để thay đổi cấu trúc bảng trong SQL Server Management Studio ta thực hiện
các bước sau:
 Mở rộng các đối tượng trên thể hiện của SQL trong cửa sổ Object Explorer
muốn thay đổi cấu trúc bảng.
 Mở rộng mục Database và chọn cơ sở dữ liệu và bảng cần thay đổi cấu trúc.
Kích chuột phải lên bảng đó và chọn Design xuất hiện cửa sổ thiết kế table
và ta thực hiện các thay đổi đối với cấu trúc bảng như cách tạo bảng.

24


×