Chương 1: Các khái niệm cơ bản về cơ sở dữ liệu
-
Cơ
sở
dữ
liệu
(Database):
là một tập
hợp các dữ
liệu có liên quan với
nhau chứa thông tin về
một tổ
chức nào đó
(như một
trường
đại
học, một
ngân hàng, một công ty, một
nhà máy, ...), được
lưu trữ
trên các thiết
bị nhớ
thứ cấp
(như băng
từ, đĩa
từ, …)
để
đáp
ứng nhu cầu
khai thác thông
tin của nhiều
người
sử dụng
với nhiều
mục đích
khác nhau.
-
Mô hình cơ sở dữ liệu (CSDL): Tập
hợp các đối tượng và / hoặc các mối quan hệ Theo
mô hình này, dữ liệu
được thể hiện trong các bảng. Mỗi bảng gồm các dòng
và cột, mỗi cột có một tên duy nhất. Mỗi dòng cho thông tin về
một đối
tượng
cụ thể trong quản lý (mỗi dòng
thường
được gọi là
một bản
ghi hay một
bộ).
-
Table:
Cấu trúc lưu trữ cơ bản nhất trong CSDL quan hệ
(RDBMS), nó bao gồm 1 hoặc nhiều columns (cột dữ liệu) với 0 hoặc nhiều rows
(dòng dữ liệu).
-
Row: Tổ hợp những giá trị của
Column trong bảng. Một row còn được gọi là 1 record (bản ghi).
-
Column: Quy định một loại dữ liệu
trong bảng. Ví dụ: loại dữ liệu tên phòng ban có trong bảng phòng ban. Ta thể
hiển thị column này thông qua tên column và có thể kèm theo một vài thông tin
khác về column như kiểu dữ liệu, độ dài của dữ liệu.
-
Field: Giao của column và row.
Field chính là nơi chứa dữ liệu. Nếu không có dữ liệu trong field ta nói field
có gia trị là NULL.
-
Primary Key: Là một column hoặc một
tập các column xác định tính duy nhất của các rows ở trong bảng. Ví dụ DEPTNO
là Primary Key của bảng DEPT vì nó được dùng để xác định duy nhất một phòng ban
trong bảng DEPT mà đại diện là một row dữ liệu. Primary Key nhất thiết phải có
số liệu.
-
Foreign Key: Là một column hoặc một
tập các columns có tham chiếu tới chính bảng đó hoặc một bảng khác. Foreign Key
xác định mối quan hệ giữa các bảng.
-
Constraints: Là các ràng buộc đối với
dữ liệu trong các bảng thuộc database. Ví dụ: Foreign Key, Primary Key...
Chương 2: Giới thiệu Access
2.1 Thanh Quick Access
Thanh công cụ Quick
Access: Hiển thị bên
trái của thanh
tiêu đề, mặc định thanh Quick Access gồm các nút công
cụ Save, Undo, …
2.2 vùng làm việc:
Khi
khởi động Access, trong cửa sổ khởi động, mặc định tab File và lệnh New trong
tab File được chọn, cửa sổ được
chia thành 3 khung:
− Khung bên trái gồm các lệnh trong tab File
− Khung giữa: chứa các loại tập tin cơ sở dữ liệu
mà bạn có thể tạo mới.
− Khung bên phải: để nhập tên và chọn vị trí
lưu tập tin mới tạo và thực thi lệnh tạo
mới cơ sơ dữ liệu.
2.3 Thanh Ribbon:
Bên
dưới thanh tiêu đề, Access 2010 hiển thị các nútlệnh trên một thanh dài được gọi
là Ribbon
2.4 Thanh Navigation Pane:
Navigation Pane
là khung chứa nội dung chính của cơ sở dữ liệu. Từ khung Navigation Pane,
bạn có thể mở bất kỳ
Table, Query, Form,
Report, Macro, hoặc module
trong cơ sở dữ liệu bằng
cách double click vào tên của đối tượng. Bằng
cách click phải
vào tên của đối
tượng trong Navigation Pane, bạn có thể thực hiện các thao tác với đối tượng
như: đổi tên, sao
chép, xoá, import,
export một đối tượng…
2.5 cách tạo tập tin cơ sở dữ liệu:
2.5.1: tạo một cơ sở dữ liệu mới rỗng:
− Tại cửa sổ khởi động, click nút Blank
Database.
− File name: nhập tên tập tin cơ sở dữ liệu,
trong Access 2010, tập tin cơ sở dữ liệu được lưu với
tên có phần mở rộng
là .accdb.
2.5.2: tạo một cơ sở dữ liệu theo mẫu (Template):
− Tại cửa sổ khởi động.
− Chọn Sample Templatechọn một mẫu cơ sở dữ liệu
có sẵn.
2.6 Quản lý cơ sở dữ liệu:
2.6.1: Thu gọn và chỉnh sửa cơ sở dữ liệu (Compact & Repair Database)
Khi
tạo thêm đối tượng trong cơ sở dữ liệu thì dung lượng của tập tin cơ sở dữ liệu
sẽ tăng lên, khi xóa một đối tượng thì vùng nhớ của nó sẽ rỗng, nhưng không sử
dụng được. Chức năng Compact
& Repair Database
giúp thu hồi lại phần bộ
nhớ bị rỗng, làm cho tập tin cơ sở dữ liệu gọn lại.
Cách
thực hiện:
− Mở cơ sở dữ liệu cần thu gọn và chỉnh sửa
− Click nút Compact & Repair Database
2.7 Các đối tượng trong cơ sở dữ liệu trong Access
2.7.1 Bảng (Tables):
Table là
thành phần quan
trọng nhất của tập tin
cơ sở dữ liệu
Access, dùng để lưu trữ dữ liệu. Do đó đây là đối tượng phải được tạo ra trước.
Bên trong một bảng, dữ liệu được lưu thành nhiều cột và nhiều dòng.
2.7.2:
Truy vấn (Queries):
Query
là công cụ để người sử dụng truy vấn thông tin và thực hiện các thao tác trên dữ
liệu. Người sử dụng có thể sử dụng ngôn ngữ SQL
2.7.3:
Form:
Form
là công cụ để thiết kế giao diện cho chương trình, dùng để cập nhật hoặc xem dữ
liệu. Biểu mẫu giúp thân thiệnhóa quá trình nhập, thêm, sửa, xóa và hiển thị dữ
liệu.
2.7.4:
Reports:
Report
là công cụ giúp người dùng tạo các kết xuất dữ liệu từ các bảng, sau đó định dạng
và sắp xếp theo một khuôn dạng cho trước và có thể in ra màn hình hoặc máy in.
2.7.5:
Tập lệnh (Macros):
Macro
là một tập hợp các lệnh nhằm thực hiện một loạt các thao tác được qui định trước.
Tập lệnh của Access có thể được xem là một công cụ lập trình đơn giản đáp ứng
các tình huống cụ thể.
2.7.6: Modules:
Là công cụ lập
trình trong môi
trường Access mà
ngôn ngữ nền tảng của nó là ngôn
ngữ Visual Basic for Application. Đây là một dạng tự động hóa chuyên sâu hơn tập
lệnh, giúp tạo ra những hàm người
dùng tự định
nghĩa. Bộ mã lệnh thường
dành cho các lập
trình viên chuyên nghiệp. Công cụ để tạo các đối tượng trong Access được tổ chức
thành từng nhóm trong tab Create của thanh Ribbon
Chương 3: Lệnh truy vấn cơ bản
3.1 quy tắc viết lệnh
Các lênh trong câu lệnh SQL thuộc loại không phân biệt chữ
viết hoa hay thường
-
Nội dung của một câu lệnh
SQL có thể được trải dài trên nhiều dòng
-
Các từ khoá không được phép viết
tắt hay phân cách trên nhiều dòng
-
Các mệnh đề thông thường được
đặt trên nhiều dòng khác nhau
-
Để rõ ràng trong việc thể hiện
câu lệnh, ta nên sử dụng các dấu TAB khi viết lệnh
-
Lệnh kết thúc bởi dấu chấm
phẩy (;)
3.2 Câu lệnh truy vấn cơ bản:
3.2.1 Phát biểu SQL Select:
- Phát biểu SELECT chọn các cột dữ liệu từ một
cơ sở dữ liệu.
Cú
pháp:
SELECT [DISTINCT]{*, column [alias],...} FROM table;
Với:
SELECT hiển thị nội dung của một hay nhiều cột
DISTINCT Phân biệt nội dung giữa các dòng dữ liệu trả về Lấy tất
các các cột trong bảng
column Tên cột dữ liệu cần trả về
alias Phần tiêu đề của cột dữ liệu trả về
FROM table Tên bảng chứa dữ liệu truy vấn
Ví
dụ: SELECT Ccode, FName, LName, Age : chọn lấy field CCode, FName, LName, Age.
-
Các thành phần khác của mệnh
đề SELECT:
Trong mệnh đề SELECT còn có thể đưa vào các thành phần khác:
-
Biểu thức toán học
-
Column alias
-
Các column được ghép chuỗi
-
Literal
Biểu
thức toán học + Tiêu đề của cột (column
alias)
Trong
mệnh đề SELECT biểu thức toán học có thể các giá trị (column hoặc hàng số), các
toán tử, các hàm. Các toán tử được dùng là (+), (-), (*), (/). Độ ưu tiên của
các toán tử giống trong phần số học.
Ví dụ:
SELECT s.[product
Code], s.[List Price]*12 AS [List Price] FROM Products AS s;
Ghép
tiếp các cột dữ liệu
Toán
tử ghép tiếp chuỗi (&) trong Oracle ta dùng (||) cho phép ghép tiếp dữ liệu
trong các cột khác nhau của cùng một dòng dữ liệu với nhau thành một chuỗi. Ta
có thể có nhiều toán tử ghép chuỗi trong cùng một column alias.
SELECT distinct
t.Company,t.[Last Name],"Mr: " & t.[Last Name] & "
" & t.[First Name] FROM Customers t;
3.2.2 Phân biệt giá trị trả về:
Trong thực tế nhiều khi giá
trị dữ liệu trên các dòng dữ liệu kết xuất trùng nhau. Gây nhiều bất tiện. Để
có thể lấy được chỉ các dòng dữ liệu phân biệt với nhau. Ta sử dụng mệnh đề DISTINCT
trong câu lệnh truy vấn.
Ví dụ:
SELECT deoptno FROM dept;
DEPTNO
DEPTNO
10
30
10
20
10
20
14 rows selected.
SQL> SELECT DISTINCT deoptno FROM dept;
DEPTNO
DEPTNO
10
30
20
20
3 rows selected.
3.3 Truy vấn dữ liệu có điều kiện
Trong
phần lớn các trường hợp lấy dữ liệu từ database, ta chỉ cần lấy một phần dữ liệu
chứ không cần lấy tất cả. Để hạn chế các dữ liệu trả về không cần thiết, ta có
thể sử dụng mệnh đề điều kiện trong câu lệnh truy vấn.
3.3.1 Mệnh đề WHERE
Cú pháp:
SELECT
[DISTINCT ] {*, column [alias],...} FROM table [WHERE condition (s)];
Với:
column tên cột dữ liệu trả về
alias tiêu đề của cột dữ liệu trả về
table tên bảng truy vấn dữ liệu
condition mệnh đề điều kiện để lọc dữ liệu trả về
Mệnh đề WHERE dùng để đặt điều
kiện cho toàn bộ câu lệnh truy vấn. Trong mệnh đề WHERE có thể có các thành phần:
- Tên column
- Toán tử so sánh
- Tên column, hằng số hoặc danh sách các giá trị
Ví dụ:
select *
from Customers t where t.[Product Name]
='Northwind Traders Chai';
Truy
vấn dữ liệu với nhiều điều kiện
Mệnh
đề WHERE cho phép ghép được nhiều điều kiện thông qua các toán tử logic AND/OR.
Toán tử AND yêu cầu dữ liệu phải thoả mãn cả 2 điều kiện. Toán tử OR cho phép dữ
liệu thoả mãn 1 trong 2 điều kiện.
SELECT *
FROM Employees where Employees.[First Name] LIKE 'A*' and Employees.[Job Title]
LIKE 'Sales*';
3.3.2 Các toán tử sử dụng
trong mệnh đề WHERE:
Toán tử so sánh
Toán tử
|
Diễn giải
|
=
|
Toán tử bằng hay tương đương
|
!=, ^=, '+, <\>
|
Toán tử khác hay không tương đương
|
>
|
Toán tử lớn hớn
|
<
|
Toán tử nhỏ hơn
|
>=
|
Toán tử lớn hơn hoặc bằng
|
<=
|
Toán tử bé hơn hoặc bằng
|
Các toán tử của SQL
Toán tử
|
Diễn giải
|
[NOT] BETWEEN x AND y
|
[Không] lớn hơn hoặc bằng x và nhỏ hơn hoặc bằng y
|
IN (danh sách):
|
Thuộc bất kỳ giá trị nào trong danh sách
|
x [NOT] LIKE y
IS [NOT] NULL
|
Đúng nếu x [không] giống khung mẫu y
|
EXISTS
|
Kiểm tra giá trị rỗng Trả về TRUE nếu có tồn tại
|
Các toán tử logic
Toán tử
|
Diễn giải
|
NOT
|
Phủ định mệnh đề
|
AND
|
Yêu cầu dữ liệu phải thỏa mãn 2 điều kiện
|
OR
|
Cho phép dữ liệu thỏa mãn 1 trong 2 điều kiện
|
3.3.3 Ví dụ sử dụng các toán tử điều kiện
[NOT] BETWEEN x AND y
Chọn tất cả các trị trong
khoảng giới hạn giữa 2 trị
Ví dụ
liệt kê số lượng hóa đơn nằm trong khoảng 1 tháng
SELECT * FROM Orders t
where t.[Order Date] between #1/15/2006# and #2/15/2006#;
IN (Danh sách)
Ví dụ liệt kê danh sách sản
phẩm có mã code thuộc danh sách đã chọn
select * from Products
where [Product Code] IN ('NWTB-1','NWTCO-3', 'NWTCO-4');
x [NOT] LIKE y
Điều kiện LIKE dùng để chỉ định
việc tìm một mẫu trong một cột
Tìm nhân viên có tên bắt đầu
là A
select * from Employees
where [Last Name] not like "a*_";
hoặc
select * from Employees
where [Last Name] not like "a*";
ký hiệu "_" dùng để
đại diện cho một ký tự bất kỳ
3.4 Sắp xếp dữ liệu trả về:
3.4.1 Mệnh đề Order By
Cú pháp:
SELECT
[DISTINCT ] {*, column [alias],...}
FROM table
FROM table
[WHERE
condition]
[ORDER BY
expr/position [DESC/ASC]];
Mệnh đề Order By dùng để sắp
xếp số liệu được hiển thị và phải đặt ở vị trí sau cùng của câu lệnh truy vấn.
Ví dụ:
Mệnh để ORDER BY mặc định sắp
xếp theo thứ tự tăng dần ASC[ENDING]
select * from Employees
where [Last Name] not like "a*_" order by [Last Name] asc;
sắp xếp theo thứ tự tang dần
-
Số thấp trước
-
Ngày nhỏ trước
-
Ký tự theo bảng chữ cái
select * from Employees
where [Last Name] not like "a*_" order by [Last Name] desc;
Để sắp xếp theo thứ tự ngược
lại (giảm dần) đặt từ khoá DESC[ENDING] sau column cần sắp thứ tự.
3.4.2: Sắp xếp nhiều cột dữ liệu trả về
Mệnh
đề Order còn có thể sắp xếp nhiều column. Các column cần sắp xếp được viết thứ
tự sau mệnh đề ORDER BY và cách bởi dấu phẩy (,). Column nào gần mệnh để ORDER
BY hơn có mức độ ưu tiên khi sắp xếp cao hơn. Chỉ định cách thức sắp xếp ASC/DESC
được viết sau column cách bởi một dấu cách.
select *
from Employees where [Last Name] not like "a*_" order by [Last Name]
asc, [First Name] desc;
3.5 Hàm thao tác trên kiểu dữ liệu số:
Đầu
vào và đầu ra là các giá trị kiểu số:
Một
số hàm SQL hay dùng
Hàm SQL
|
Diễn giải
|
ROUND
|
Cho giá trị làm tròn của n (đến cấp m, mặc nhiêm m=0)
|
Abs(n)
|
Cho giá trị tuyệt đối
|
Sin(n)
|
Trả về cosin của n (n tính bằng radian)
|
COS(n)
|
Cho cosin của n
|
TAN(n)
|
Cotang của n
|
Avg(n)
|
Trả về giá trị trung bình
|
Count(n)
|
Trả về số bản ghi
|
Sum(n)
|
Trả về tổng của một trường
|
Format ( expression, [ format ] ) |
Trả về định dạng của một String
|
Max(n)
|
Trả về giá trị lớn nhất của trường được chọn
|
Min(n)
|
Trả về giá trị nhỏ nhất của trường được chọn
|
Ví dụ:
SELECT
Round(t.[List Price],1) AS AA, Abs(t.[List Price]) AS abs_Fc, t.[List Price],
Sin(t.[Reorder Level]) AS SinFC, COS(t.[Reorder Level]) AS CosFC, TAN(t.[Reorder
Level]) AS TanFC FROM Products AS t;
3.5.1 Các hàm thao tác trên kiểu dữ liệu ký tự
Hàm
thao tác trên kiểu dữ liệu là ký tự
Hàm SQL
|
Diễn giải
|
CONCAT(char1, char2)
|
Ghép nhiều chuỗi lại với nhau
|
Chr(number_code)
|
Trả về số code bàn phím
|
Format ( expression, [ format ] )
|
Trả về một định dạng theo quy định
|
INSTR(char1, char2 [,n[,m]])
|
Tìm vị trí chuỗi char2 trong chuỗi
char1 bắt đầu từ vị trí n, lần xuất hiện thứ m. |
Left
|
|