Các kiểu dữ liệu, các toán tử và truy vấn trong Access
I. Các kiểu dữ liệu:
Microsoft Access có các kiểu dữ liệu sau:
Text: Kiểu văn bản với chiều dài cố định. Trong kiểu này phải xác định độ rộng của cột – tính theo byte. Độ rộng tối đa của cột là 255 bytes. Giá trị luôn luôn được điền thêm khoảng trắng ở cuối để cho đủ số lượng đã khai báo.
Number:
- Kiểu số . Có 5 loại kiểu số theo kích thước lưu trữ:
· Số nguyên 1 byte (Byte) có giá trị từ 0 đến 255.
· Số nguyên 2 bytes (Integer) có giá trị từ –32768 đến +32767.
· Số nguyên 4 bytes (Long) có giá trị từ khoảng -2,1 tỷ đến +2,1 tỷ.
· Số thực độ chính xác đơn (Single) chiếm 4 bytes, có giá trị đảm bảo chỉ có 7 chữ số đầu là có nghĩa đúng đắn.
· Số thực độ chính xác gấp đôi (Double) đảm bảo 15 chữ số có ý nghĩa – đúng.
Yes/No (hoặc True/False hoặc On/Off): Kiểu luận lý
Memo: Kiểu văn bản có chiều dài thay đổi . Giá trị có thể có kích thước tối đa 64K bytes
Currency: Kiểu tiền tệ với bản chất là kiểu số, nhưng khi hiển thị thì có ký hiệu tiền tệ $ ở phía trước
DateTime: Ngày tháng . Giá rị kiểu này phải có đầy đủ cả ngày, tháng và năm
AutoNumber: Kiểu đánh số tăng dần một cách tự động là số nguyên 4 bytes, tự động tăng 1 mỗi khi một bản ghi mới được bổ sung vào bảng.
Object Linked Embedded – OLE: Kiểu dữ liệu đa phương tiện , có thể là một bảng tính Excel, file Word, hình ảnh (Bitmap), âm thanh (Audio) hoặc phim (Movie).
II. Các toán tử trong Access
a. Toán tử số học
Toán tử
Mô tả
Ví dụ
+
Cộng hai toán hạng
[lương]+[phụ cấp]
–
Trừ hai toán hạng
Date-30
-(toán tử đơn)
Thay đổi dấu của một toán hạng
-12345
*
Nhân hai toán hạng
[hệ số]*[lương cơ bản]
/
Chia một toán hạng voái một toán hạng khác
15.2/12.55
\
Chia một toán hạng số nguyên với một toán hạng số nguyên khác.
5\2
Mod
Trả về số dư của phép chia với một số nguyên.
5 Mod 2
^
Nâng lũy thừa một toán hạng (số mũ)
4^3
b. Toán logic
Toán tử
Mô tả
Ví dụ
Kết qủa
And
Và lôgic
True And True
True And False
True
False
Or
Or baog gồm
True Or False
False Or False
True
False
Not
Không lôgic
Not True
Not False
False
True
Xor
Or loại trừ
True Xor False
True Xor True
True
False
c. Hàm ngày và giờ
Date() Trả về ngày hiện tại của hệ thống
Day (exp) Trả về một ngày trong một tháng
Month(exp) Trả về một tháng trong một năm
Weekday(exp) Trả về một ngày trong tuần
Year(exp) Cho biết năm của biểu thức
d. Hàm xử lý kiểu dữ liệu trường Text
Format(exp) Định dạng biểu thức theo các dạng thức thích hợp.
Format(Date(), “dd-mm-yyyy” )
23-Jul-2005
LCase(exp) Trả về phiên bản chữ thường của một chuỗi.
LCase(“Lan”)
lan
UCase(exp)
Trả về phiên bản chữ hoa của một chuỗi.
UCase(“Lan”)
LAN
LTrim(exp)
Xóa tất cả các dấu cách ở đầu chuỗi.
LTrim (“ Lan”)
Lan
RTrim(exp)
Xóa tất cả các dấu cách ở cuối chuỗi.
RTrim(“Lan ”)
Lan
Trim(exp)
Xóa tất cả các dấu cách ở đầu và cuối chuỗi.
Trim (“ Lan ”)
Lan
Str(exp)
Chuyển một số thành một chuỗi.
Str(123.45)
123.45
Val(exp)
Chuyển một chuỗi thành một số
Val(“123.45”)
123.45
e. Hàm toán học và hàm lượng giác
Hàm
Mô tả
Ví dụ
Trả về
Abs(exp)
Trả về giá trị tuyệt đối của một số
Abs(-1234.5)
1234.5
Atn(exp)
Hàm arctang, tính theo radian.
Atn(1)
0.7853982
Cos(exp)
Hàm cosin, tính theo radian.
Cos(pi/4)
0.707106719949
Exp(exp)
Hàm ex
Exp(2.302585)
9.9999990700
Int(exp)
Trả về phần nguyên của giá trị số
Int(13.5)
Int(-13.5)
13.5
-13.5
Log(exp)
Hàm logarit cơ số e.
Log(10)
2.302585
Sgn(exp)
Hàm dấu
Sgn(-13.5)
Sgn(13.5)
-1
0
Sin(exp)
Hàm sin, tính theo radian.
Sin(pi/4)
0.707106842423
Sqr(exp)
Hàm căn bậc hai.
Sqr(144)
12
Tan(exp)
Hàm tang, tính theo radian.
Tan(pi/4)
1.0000001723
f. Các toán tử khác
Toán tử
Mô tả
Ví dụ
Is
Được dùng với Null để xác định một giá trị nào đó có phải là Null hay Not Null
Is Null
Is Not Null
Like
Xác định một giá trị chuỗi có bắt đầu bằng một hay nhiều ký tự. (Để Like làm việc đúng đắn, ta phải bổ sung một dấu đại diện *, hoặc một hay nhiều dấu ?)
Like “Jon*”
Like “FILE????”
In
Xác định một giá trị chuỗi có thuộc một thành phần của danh sách các giá trị hay không.
In (“CA”, “OR”, “WA”)
Between
Xác định một số có nằm trong một miền giá trị đã chỉ định hay không.
Between 1 And 5
III. Truy vấn CSDL
3.1 Truy vấn tìm kiếm thông tin
3.1.1 Câu lệnh truy vấn đơn:
Cú pháp câu lệnh truy vấn :
SELECT [DISTINCT] [TOP n [PERCENT]]
[AS ], [AS ],…
FROM [[AS]],[[AS]], …
[WHERE <điều kiện chọn bản ghi để xử lý>]
[GROUP BY , … ]
[HAVING <điều kiện chọn kết quả cuối cùng>]
[ORDER BY[ASC/DESC], … ];
Dấu chấm phảy cuối câu là tùy chọn. Chữ hoa hay chữ thường là như nhau.
(*) DISTINCT : Chỉ giữ lại những dòng khác nhau.
(*) Cụm từ TOP n [PERCENT] luôn luôn phải được đi kèm với mệnh đề ORDER BY.
– TOP n : n dòng đầu tiên và những dòng có giá trị sắp xếp như dòng thứ n.
– TOP n PERCENT : n% (lấy cận trên) số dòng kết quả tìm được. Ví dụ, nếu n% = 1.2 thì lấy cận trên bằng 2.
(*) (i=1..n) có thể là tên bảng dữ liệu vật lý, Query hoặc phép kết 2 quan hệ theo cú pháp:
ON <điều kiện kết>
::= INNER JOIN / LEFT JOIN / RIGHT JOIN / OUTER JOIN.
(*) Nếu sau FROM là danh sách các bảng thì phải thể hiện mối liên hệ giữa các bảng đó trong mệnh đề WHERE.
(*) Ngoại trừ các biểu thức có chứa các hàm tích hợp các biểu thức còn lại sau SELECT đều phải có mặt trong mệnh đề GROUP BY.
SQL sử dụng một số hàm gộp sau:
– COUNT: đếm số các giá trị trong một cột.
– SUM: tính tổng các giá trị trong một cột. Hàm này chỉ áp dụng cho các giá trị kiểu số.
– AVG: tính trung bình cộng của các giá trị trong một cột. Hàm này chỉ áp dụng cho các giá trị kiểu số.
– MIN: tìm giá trị nhỏ nhất trong số các giá trị của một cột.
– MAX: tìm giá trị lớn nhất trong số các giá trị ở một cột.
Trừ hàm COUNT(*), còn các hàm khác đều bỏ qua các giá trị null trong các giá trị đầu vào của chúng.
3.1.2 Cấu truy vấn con
Định nghĩa: Câu truy vấn con là một câu truy vấn mà kết quả của nó được dùng làm toán hạng của một phép so sánh trong biểu thức điều kiện của câu truy vấn khác. Câu truy vấn con phải được đặt trong cặp dấu ngoặc tròn.
(*) MSA chỉ cho phép 1 biểu thức sau SELECT trong câu truy vấn con. Do đó, nếu có nhiều biểu thức thì phải ghép chúng lại thành một thông qua phép nối ghép &.
3.2 Truy vấn để sửa đổi dữ liệu
3.2.1 Query bổ sung thêm dữ liệu
INSERT INTO [()] VALUES();
3.2.2 Query sửa dữ liệu:
UPDATE
SET = , =, …
[WHERE <điều kiện cập nhật>];
3.2.3 Query xóa dữ liệu:
DELETE [] FROM
[WHERE <điều kiện xóa>];
(*) Nếu nguồn là query hoặc phép kết thì phải có thành phần để cho biết xóa bộ giá trị của bảng nào.
3.3 Truy vấn tổng hợp dữ liệu(Cross-Tab)
Cú pháp:
TRANSFORM
SELECT
FROM
[WHERE <điều kiện chọn bản ghi để xử lý>]
GROUP BY
PIVOT [IN ()]
3.4 Các câu lệnh truy vấn khác
3.4.1 Tạo cấu trúc bảng:
Create Table (
, , …, ,
[ConstraintPrimary Key ()]
[Constraint Foreign Key ()
References ()]
);
Một mô tả cột có dạng:
[()] [Not NULL] [Primary Key][Foreign Key References ()]
Ví dụ: a.Create Table ABC (aaa text(10) Primary Key,
bbb long, ccc DateTime, ddd Memo, eee Double);
b. Create Table BBC (aaa text(10), bbb long, Constraint PK Primary Key (aaa,bbb), Constraint FK Foreign Key (aaa) References ABC (aaa));
3.4.2 Sửa đổi cấu trúc bảng – Thiết lập khóa chính, RBTV:
Alter Table [Add Column <đặc tả cột>],
[Add Constraint Primary Key ()],
[Add Constraint Foreign Key () References ()];
Ví dụ: Alter Table BBC Add Column ccc DateTime;
3.4.3 Tạo chỉ mục:
CREATE [UNIQUE] INDEX ON ();
3.4.4 Các câu lệnh hủy bỏ:
Hủy (xóa) bỏ bảng: DROP Table;
Hủy bỏ chỉ mục: DROP INDEX ON ;
Hủy bỏ RBTV: DROP Constraint ON ;
I. Các kiểu dữ liệu:
Microsoft Access có các kiểu dữ liệu sau:
Text: Kiểu văn bản với chiều dài cố định. Trong kiểu này phải xác định độ rộng của cột – tính theo byte. Độ rộng tối đa của cột là 255 bytes. Giá trị luôn luôn được điền thêm khoảng trắng ở cuối để cho đủ số lượng đã khai báo.
Number:
- Kiểu số . Có 5 loại kiểu số theo kích thước lưu trữ:
· Số nguyên 1 byte (Byte) có giá trị từ 0 đến 255.
· Số nguyên 2 bytes (Integer) có giá trị từ –32768 đến +32767.
· Số nguyên 4 bytes (Long) có giá trị từ khoảng -2,1 tỷ đến +2,1 tỷ.
· Số thực độ chính xác đơn (Single) chiếm 4 bytes, có giá trị đảm bảo chỉ có 7 chữ số đầu là có nghĩa đúng đắn.
· Số thực độ chính xác gấp đôi (Double) đảm bảo 15 chữ số có ý nghĩa – đúng.
Yes/No (hoặc True/False hoặc On/Off): Kiểu luận lý
Memo: Kiểu văn bản có chiều dài thay đổi . Giá trị có thể có kích thước tối đa 64K bytes
Currency: Kiểu tiền tệ với bản chất là kiểu số, nhưng khi hiển thị thì có ký hiệu tiền tệ $ ở phía trước
DateTime: Ngày tháng . Giá rị kiểu này phải có đầy đủ cả ngày, tháng và năm
AutoNumber: Kiểu đánh số tăng dần một cách tự động là số nguyên 4 bytes, tự động tăng 1 mỗi khi một bản ghi mới được bổ sung vào bảng.
Object Linked Embedded – OLE: Kiểu dữ liệu đa phương tiện , có thể là một bảng tính Excel, file Word, hình ảnh (Bitmap), âm thanh (Audio) hoặc phim (Movie).
II. Các toán tử trong Access
a. Toán tử số học
Toán tử
Mô tả
Ví dụ
+
Cộng hai toán hạng
[lương]+[phụ cấp]
–
Trừ hai toán hạng
Date-30
-(toán tử đơn)
Thay đổi dấu của một toán hạng
-12345
*
Nhân hai toán hạng
[hệ số]*[lương cơ bản]
/
Chia một toán hạng voái một toán hạng khác
15.2/12.55
\
Chia một toán hạng số nguyên với một toán hạng số nguyên khác.
5\2
Mod
Trả về số dư của phép chia với một số nguyên.
5 Mod 2
^
Nâng lũy thừa một toán hạng (số mũ)
4^3
b. Toán logic
Toán tử
Mô tả
Ví dụ
Kết qủa
And
Và lôgic
True And True
True And False
True
False
Or
Or baog gồm
True Or False
False Or False
True
False
Not
Không lôgic
Not True
Not False
False
True
Xor
Or loại trừ
True Xor False
True Xor True
True
False
c. Hàm ngày và giờ
Date() Trả về ngày hiện tại của hệ thống
Day (exp) Trả về một ngày trong một tháng
Month(exp) Trả về một tháng trong một năm
Weekday(exp) Trả về một ngày trong tuần
Year(exp) Cho biết năm của biểu thức
d. Hàm xử lý kiểu dữ liệu trường Text
Format(exp) Định dạng biểu thức theo các dạng thức thích hợp.
Format(Date(), “dd-mm-yyyy” )
23-Jul-2005
LCase(exp) Trả về phiên bản chữ thường của một chuỗi.
LCase(“Lan”)
lan
UCase(exp)
Trả về phiên bản chữ hoa của một chuỗi.
UCase(“Lan”)
LAN
LTrim(exp)
Xóa tất cả các dấu cách ở đầu chuỗi.
LTrim (“ Lan”)
Lan
RTrim(exp)
Xóa tất cả các dấu cách ở cuối chuỗi.
RTrim(“Lan ”)
Lan
Trim(exp)
Xóa tất cả các dấu cách ở đầu và cuối chuỗi.
Trim (“ Lan ”)
Lan
Str(exp)
Chuyển một số thành một chuỗi.
Str(123.45)
123.45
Val(exp)
Chuyển một chuỗi thành một số
Val(“123.45”)
123.45
e. Hàm toán học và hàm lượng giác
Hàm
Mô tả
Ví dụ
Trả về
Abs(exp)
Trả về giá trị tuyệt đối của một số
Abs(-1234.5)
1234.5
Atn(exp)
Hàm arctang, tính theo radian.
Atn(1)
0.7853982
Cos(exp)
Hàm cosin, tính theo radian.
Cos(pi/4)
0.707106719949
Exp(exp)
Hàm ex
Exp(2.302585)
9.9999990700
Int(exp)
Trả về phần nguyên của giá trị số
Int(13.5)
Int(-13.5)
13.5
-13.5
Log(exp)
Hàm logarit cơ số e.
Log(10)
2.302585
Sgn(exp)
Hàm dấu
Sgn(-13.5)
Sgn(13.5)
-1
0
Sin(exp)
Hàm sin, tính theo radian.
Sin(pi/4)
0.707106842423
Sqr(exp)
Hàm căn bậc hai.
Sqr(144)
12
Tan(exp)
Hàm tang, tính theo radian.
Tan(pi/4)
1.0000001723
f. Các toán tử khác
Toán tử
Mô tả
Ví dụ
Is
Được dùng với Null để xác định một giá trị nào đó có phải là Null hay Not Null
Is Null
Is Not Null
Like
Xác định một giá trị chuỗi có bắt đầu bằng một hay nhiều ký tự. (Để Like làm việc đúng đắn, ta phải bổ sung một dấu đại diện *, hoặc một hay nhiều dấu ?)
Like “Jon*”
Like “FILE????”
In
Xác định một giá trị chuỗi có thuộc một thành phần của danh sách các giá trị hay không.
In (“CA”, “OR”, “WA”)
Between
Xác định một số có nằm trong một miền giá trị đã chỉ định hay không.
Between 1 And 5
III. Truy vấn CSDL
3.1 Truy vấn tìm kiếm thông tin
3.1.1 Câu lệnh truy vấn đơn:
Cú pháp câu lệnh truy vấn :
SELECT [DISTINCT] [TOP n [PERCENT]]
FROM [[AS]],[[AS]], …
[WHERE <điều kiện chọn bản ghi để xử lý>]
[GROUP BY
[HAVING <điều kiện chọn kết quả cuối cùng>]
[ORDER BY
Dấu chấm phảy cuối câu là tùy chọn. Chữ hoa hay chữ thường là như nhau.
(*) DISTINCT : Chỉ giữ lại những dòng khác nhau.
(*) Cụm từ TOP n [PERCENT] luôn luôn phải được đi kèm với mệnh đề ORDER BY.
– TOP n : n dòng đầu tiên và những dòng có giá trị sắp xếp như dòng thứ n.
– TOP n PERCENT : n% (lấy cận trên) số dòng kết quả tìm được. Ví dụ, nếu n% = 1.2 thì lấy cận trên bằng 2.
(*) (i=1..n) có thể là tên bảng dữ liệu vật lý, Query hoặc phép kết 2 quan hệ theo cú pháp:
(*) Nếu sau FROM là danh sách các bảng thì phải thể hiện mối liên hệ giữa các bảng đó trong mệnh đề WHERE.
(*) Ngoại trừ các biểu thức có chứa các hàm tích hợp các biểu thức còn lại sau SELECT đều phải có mặt trong mệnh đề GROUP BY.
SQL sử dụng một số hàm gộp sau:
– COUNT: đếm số các giá trị trong một cột.
– SUM: tính tổng các giá trị trong một cột. Hàm này chỉ áp dụng cho các giá trị kiểu số.
– AVG: tính trung bình cộng của các giá trị trong một cột. Hàm này chỉ áp dụng cho các giá trị kiểu số.
– MIN: tìm giá trị nhỏ nhất trong số các giá trị của một cột.
– MAX: tìm giá trị lớn nhất trong số các giá trị ở một cột.
Trừ hàm COUNT(*), còn các hàm khác đều bỏ qua các giá trị null trong các giá trị đầu vào của chúng.
3.1.2 Cấu truy vấn con
Định nghĩa: Câu truy vấn con là một câu truy vấn mà kết quả của nó được dùng làm toán hạng của một phép so sánh trong biểu thức điều kiện của câu truy vấn khác. Câu truy vấn con phải được đặt trong cặp dấu ngoặc tròn.
(*) MSA chỉ cho phép 1 biểu thức sau SELECT trong câu truy vấn con. Do đó, nếu có nhiều biểu thức thì phải ghép chúng lại thành một thông qua phép nối ghép &.
3.2 Truy vấn để sửa đổi dữ liệu
3.2.1 Query bổ sung thêm dữ liệu
INSERT INTO
3.2.2 Query sửa dữ liệu:
UPDATE
SET
[WHERE <điều kiện cập nhật>];
3.2.3 Query xóa dữ liệu:
DELETE [
[WHERE <điều kiện xóa>];
(*) Nếu nguồn là query hoặc phép kết thì phải có thành phần
3.3 Truy vấn tổng hợp dữ liệu(Cross-Tab)
Cú pháp:
TRANSFORM
SELECT
FROM
[WHERE <điều kiện chọn bản ghi để xử lý>]
GROUP BY
PIVOT
3.4 Các câu lệnh truy vấn khác
3.4.1 Tạo cấu trúc bảng:
Create Table
[Constraint
[Constraint
References (
);
Một mô tả cột có dạng:
Ví dụ: a.Create Table ABC (aaa text(10) Primary Key,
bbb long, ccc DateTime, ddd Memo, eee Double);
b. Create Table BBC (aaa text(10), bbb long, Constraint PK Primary Key (aaa,bbb), Constraint FK Foreign Key (aaa) References ABC (aaa));
3.4.2 Sửa đổi cấu trúc bảng – Thiết lập khóa chính, RBTV:
Alter Table [Add Column <đặc tả cột>],
[Add Constraint
[Add Constraint
Ví dụ: Alter Table BBC Add Column ccc DateTime;
3.4.3 Tạo chỉ mục:
CREATE [UNIQUE] INDEX
3.4.4 Các câu lệnh hủy bỏ:
Hủy (xóa) bỏ bảng: DROP Table
Hủy bỏ chỉ mục: DROP INDEX
Hủy bỏ RBTV: DROP Constraint