Chương 10 – Cơ sở dữ liệu, SQL, và ADO .NET
Outline
10.1 Mô hình Cơ sở dữ liệu quan hệ
10.2. Làm việc với hệ quản trị CSDL Microsoft SQL Server 2000
10.3 Ngôn ngữ truy vấn có cấu trúc
10.3.1 Truy vấn SELECT
10.3.2 Mệnh đề WHERE
10.3.3 Mệnh đề ORDER BY
10.3.4 Kết hợp dữ liệu từ nhiều bảng: INNER JOIN
10.3.6 Truy vấn thêm mới INSERT
10.3.7 Truy vấn cập nhật UPDATE
10.3.8 Truy vấn xóa DELETE
10.4. ADO.NET
Cơ sở dữ liệu:
Là sự lưu trữ dữ liệu có tổ chức.
Hệ quản lý cơ sở dữ liệu (DBMS):
Cung cấp cơ chế lưu trữ, quản lý dữ liệu một cách phù hợp với định dạng dữ liệu.
Cho phép lưu trữ và truy cập tới cơ sở dữ liệu mà không cần biết về những khai báo bên trong cơ sở dữ liệu.
Ví dụ như SQL Server, Microsoft Access … là các hệ quản lý cơ sở dữ liệu.
Cơ sở dữ liệu
10.1 Mô hình Cơ sở dữ liệu quan hệ
Biểu diễn dữ liệu một cách logic
Có thể xem xét các mối quan hệ mà không cần quan tâm đến
cấu trúc vật lý của dữ liệu
Bao gồm các bảng
Các hàng được gọi là các mẩu tin (records)
Các cột được gọi là các trường ( fields)
Khoá chính (Primary key) một hàng phải có khóa chính nhằm
phân biệt nó với các hàng khác. Do đó khóa chính phải có giá trị
duy nhất và không có giá trị null
Khóa ngoại (foreign key): trong trường hợp một nhân viên mua nhiều hàng hóa thì trên bảng Order, ngoài khóa chính
(thường là số hiệu hàng hóa) còn lặp lại số thẻ nhân viên (trong bảng Employee). Lúc này số thẻ nhân viên gọi là khóa
ngoại của bảng Order. Khóa ngoại dùng để tìm kiếm các giá trị trong bảng con (bảng Order).
10.1 Mô hình Cơ sở dữ liệu quan hệ
Ví dụ ta có cơ sở dữ liệu của bảng Employee và bảng Order như sau:
khóa chính của
bảng Employee
khóa chính của
bảng Order
khóa ngoại của
bảng Order
10.1 Mô hình Cơ sở dữ liệu quan hệ
Quan hệ (relationship): được thiết lập giữa hai bảng dữ liệu với nhau, có ba loại quan hệ
chính.
Quan hệ 1-1: quan hệ trực tiếp giữa 2 bảng dữ liệu. Ví dụ bạn có 2 bảng
Person1, Person2 thì quan hệ Kết hôn là quan hệ 1-1. Một cách khác khi mà 2
bảng có quan hệ thông qua 2 khóa chính thì quan hệ là 1-1.
Quan hệ 1-N: ứng với một hàng trong bảng này có nhiều hàng trong bảng khác.
Chẳng hạn như quan hệ giữa 2 bảng Employee và Order như vừa rồi là quan hệ
1-N.
Quan hệ N-N: được thiết lập khi một hàng trong Parent table có nhiều hàng
trong Child table và ngược lại.
10.1 Mô hình Cơ sở dữ liệu quan hệ
Tính toàn vẹn dữ liệu (Data Integrity), được định nghĩa là không tồn tại dữ liệu dư thừa, bao gồm:
Dữ liệu nhập (Entity Integrity): mọi hàng phải có một giá trị duy nhất trong trường khóa chính của nó.
Ràng buộc toàn vẹn (Referential Integrity): mọi giá trị trường khóa ngoại của bảng này phải xuất hiện trong trường
khóa chính của bảng khác.
Toàn vẹn miền (Domain Integrity): dữ liệu nhập vào trong cột phải phù hợp với định dạng và kiểu dữ liệu đã khai báo.
10.1 Mô hình Cơ sở dữ liệu quan hệ
Xét các bảng CSDL sau.
authorID
firstName
lastName
1
Harvey
Deitel
2
Paul
Deitel
3
Tem
Nieto
4
Kate
Steinbuhler
5
Sean
Santry
6
Ted
Lin
7
Praveen
Sadhu
8
David
McPhie
9
Cheryl
Yaeger
10
Marina
Zlatkina
11
Ben
Wiedermann
12
Jonathan
Liperi
13
Jeffrey
Listfield
Fig. 19.4
Data from the
Authors
table of
Books
.
Bảng Authors của CSDL Books
ví dụ
authorID
isbn
authorID
isbn
1
0130895725
2
0139163050
1
0132261197
2
013028419x
1
0130895717
2
0130161438
1
0135289106
2
0130856118
1
0139163050
2
0130125075
1
013028419x
2
0138993947
1
0130161438
2
0130852473
1
0130856118
2
0130829277
1
0130125075
2
0134569555
1
0138993947
2
0130829293
1
0130852473
2
0130284173
1
0130829277
2
0130284181
1
0134569555
2
0130895601
1
0130829293
3
013028419x
1
0130284173
3
0130161438
1
0130284181
3
0130856118
1
0130895601
3
0134569555
2
0130895725
3
0130829293
2
0132261197
3
0130284173
2
0130895717
3
0130284181
2
0135289106
4
0130895601
Fig. 19.8
Data from
AuthorISBN
table in
Books
.
Bảng AuthorsISBN của CSDL Books (lưu số ISBN của sách).
ví dụ
ví dụ
Bảng Titles của CSDL Books.
Bảng Publishers của CSDL Books
publisherID
publisherName
1
Prentice Hall
2
Prentice Hall PTG
Fig. 19.6
Data from the
Publishers
table of
Books
.
ví dụ
Ta có mối quan hệ giữa các bảng đó như sau:
AuthorISBN
authorID
isbn
Authors
authorID
firstName
lastName
Publishers
publisherID
publisherName
Titles
isbn
title
editionNumber
copyright
publisherID
imageFile
price
1
¥
¥
¥
1
1
ví dụ
10.2. Làm việc với hệ quản trị CSDL Microsoft
SQL Server 2000
Để làm quen, ta xét ví dụ tạo cơ sở dữ liệu với SQL Server 2000
Trong menu Start chọn Microsoft SQL Server \Enterprise Manager để mở cửa sổ SQL Server Enterprise Manager.
Trong Databases chọn New Database … như sau.
nhập tên CSDL
rồi nhấn OK
tạo bảng
tạo cột và
định dạng
chỉ định
khóa chính
Thiết lập quyền truy nhập CSDL
Do tính bảo mật, mỗi một CSDL chỉ cho phép người dùng có tên (user ID) và mật mã (password) cho trước có
quyền truy cập hay thay đổi nội dung của nó.
User ID và password được tạo ra bằng DBMS tạo ra CDSL đó, ở đây là SQL Server 2000. Bạn chọn New
Database User… để tạo một user mới.
tạo user
mới
chọn <new>
tên user
chọn CSDL mặc định
cho phép truy cập
password
chọn CSDL
cho phép truy cập
thiết lập
vai trò
nhấp OK để
nhập lại mật mã
và hoàn tất
Detach và Attach CSDL
Do tính bảo mật, việc “copy” CSDL không đơn giản. Muốn sử dụng
CSDL nào đó trên một DBMS khác, trước hết bạn phải Detach
CSDL khỏi DBMS cũ. Việc Detach giải phóng CSDL khỏi các mối
liên kết mà nó đang có.
Sau khi Detach xong, bạn copy bình thường nó vào đĩa mềm.
Để sử dụng, từ đĩa mềm bạn copy vào máy mới rồi Attach nó vào
DBMS . Cả hai thao tác này đều ở trong menu chuột phải All Tasks.
![]()
10.3 Ngôn ngữ truy vấn có cấu trúc
Được dùng để yêu cầu dữ liệu (thực hiện truy vấn ) và thao tác
trên dữ liệu đó
Để thực hiện các lệnh SQL, bạn sử dụng SQL Query Analyzer.
Có thể mở trực tiếp từ cửa sổ SQL Server Enterprise Manager
bằng cách chọn Tools\SQL Query Analyzer như sau
mở cửa sổ
SQL Query
Analyzer
10.3 Ngôn ngữ truy vấn có cấu trúc
10.3.1 Truy vấn SELECT
Chức năng:
Trích thông tin từ một hay nhiều bảng trong một CSDL.
Cú pháp:
SELECT danh_sách_các_cột FROM tên_bảng
Dấu * cho phép trích mẩu tin với tất cả các cột trong bảng.
Nhấn F5 để thực hiện các câu lệnh trong SQL Query Analyzer.
authorID
lastName
authorID
lastName
1
Deitel
8
McPhie
2
Deitel
9
Yaeger
3
Nieto
10
Zlatkina
4
Steinbuhler
12
Wiedermann
5
Santry
12
Liperi
6
Lin
13
Listfield
7
Sadhu
Fig. 19.13
authorID
and
lastName
from the
Authors
table.
Ví dụ lệnh SELECT * FROM Authors cho kết quả
10.3.1 Truy vấn SELECT
10.3.2 Mệnh đề WHERE
Chức năng:
Truy xuất dữ liệu trong bảng theo các điều kiện nào đó.
Cú pháp:
SELECT tên_cột FROM tên_bảng
WHERE tên_cột phép_toán giá_trị
Phép toán Mô tả
= So sánh bằng
<> So sánh không bằng
> Lớn hơn
< Nhỏ hơn
>= Lớn hơn hoặc bằng
<= Nhỏ hơn hoặc bằng
BETWEEN Nằm giữa một khoảng
LIKE So sánh mẫu chuỗi