Bài giảng Làm việc với bảng và bàn ghi
• Tạo bảng
Lệnh:
CREATE TABLE
Bạn đang xem nội dung tài liệu Bài giảng Làm việc với bảng và bàn ghi, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài 5 - Làm việc với bảng và bản ghi
I. Làm việc với bảng
Tạo bảng
Lệnh:
CREATE TABLE (FieldName1 Ftype1(width1) [, ...]) (xem bài 4)
CREATE [TableName] (Tương tự lệnh CREATE TABLE)
Mở một bảng đã có
Lệnh:
USE [ALIAS ] [EXCLUSIVE]
Trong đó TableName là tên bảng cần mở hoặc khi không nhớ có thể dùng dấu ? để mở hộp thoại Open File; tùy chọn ALIAS cho phép đặt tên “vùng” làm việc với tên là , khi không co tùy chọn này thì tên “vùng” của bảng được mở trùng với tên bảng; tùy chọn EXCLUSIVE không cho phép nhiều người cùng sử dụng (trên mạng), tham số này thường được dùng khi cần mở bảng để sửa chữa.
Ví dụ:
USE HOSOSV -> (tên vùng làm việc là HOSOSV)
hoặc
USE HOSOSV ALIAS SINHVIEN -> (tên vùng làm việc là SINHVIEN)
hoặc
USE ? -> Tiếp đến chọn file (bảng) cần mở
Sửa cấu trúc của bảng
Lệnh:
MODIFY STRUCTURE
Lệnh này cho phép sửa đổi cấu trúc của bảng đang mở, giao diện này chính là giao diện CREATE TABLE (xem bài 4). Trường hợp chưa có bảng nào mở thì lệnh này sẽ mở hộp thoại Open file cho phép chọn file(bảng) cần mở và sau đó sẽ tiếp tục. Ví dụ ...
Lệnh:
ALTER TABLE [COLUMN] FiledName1 FType1(n) ...
Lệnh này cho phép tự động sửa chữa cấu trúc của 1 bảng nào đó (thường sử dụng trong chương trình). Ví dụ
USE DIEM EXCLUSIVE
ALTER TABLE DIEM ADD COLUMN Test1 C(20) ->Thêm trường Test1 là C
ALTER TABLE DIEM ALTER COLUMN Test1 N(20) ->Sửa trường Test1 thành N
ALTER TABLE DIEM DROP COLUMN Test1 ->Xóa trường Test1
Đóng bảng đã mở
Lệnh
USE && Không tham số sẽ đóng bảng hiện thời
USE IN
Trong đó AliasName là tên vùng một bảng nào đó đang mở, ví dụ:
USE IN DIEM
II. thêm, sửa, xoá các bản ghi
Con trỏ bản ghi
Con trỏ bản ghi trỏ đến bản ghi hiện thời của bảng đang mở. Khi mở bảng con trỏ bản ghi sẽ đặt ở bản ghi đầu tiên.
Lệnh:
GO TOP -> Chuyển đến bản ghi đầu tiên
GO BOTTOM -> Chuyển đến bản ghi cuối cùng
GO -> Chuyển đến bản ghi thứ n
Ví dụ
USE DIEM
GO TOP
GO 10
GO BOTTOM
Lưu ý: Nếu n lớn hơn số bản ghi hiện có của bảng thì chương trình sẽ trả về thông báo Record is out of range.
Lệnh
SKIP
Dịch chuyển con trỏ bản ghi đi n bản ghi kể từ bản ghi hiện thời (n có thể >0 hoặc <0). Ví dụ:
USE DIEM
GO 10
SKIP -5
GO 20
SKIP 5 (Sau lệnh này con trỏ ở bản ghi 30)
Lưu ý: Khi vượt quá phía đầu, phía cuối file (bảng) thì chương trình sẽ trả về thông báo: Beginning of file encountred hoặc End of file encountred.
Lệnh
LOCATE FOR
Trong đó BieuThuc là một biểu thức Logic. Lệnh này sẽ đưa con trỏ bản ghi đên bản ghi đầu tiên thoả mãn BieuThuc nếu tìm thấy. Ví dụ:
USE HOSOSV
LOCATE FOR (Hoten=”Phan Văn Việt”) and (malop=”3A-04”)
LOCATE FOR (Hoten=”Phan Văn Việt”) and (gioi=.F.)
Lưu ý: Khi tìm thấy thì hàm FOUND() sẽ trả về giá trị TRUE, ngược lại trả về FALSE.
Lệnh
COUNTINUE
Khi sử dụng lệnh LOCATE, ta có thể dùng lệnh COUNTINUE để tìm bản ghi tiếp theo thoả mãn .
Thêm mới bản ghi
Lệnh
APPEND [BLANK]
Lệnh này cho phép thêm 1 bản ghi vào bảng và hiển thị giao diện cập nhật. Ví dụ
USE HOSOSV
APPEN Khi đó giao diện Appen xuất hiện như hình sau:
Lưư ý: Bản ghi này chỉ thực sự được thêm vào nếu có cập nhật thông tin vào 1 trong các trường của bản ghi đó. Trường hợp nếu muốn thêm một bản ghi trống thì có thể thêm vào tham số BLANK, khi sử dụng tham số này thì bản ghi sẽ thực sự được thêm vào CSDL cả khi không cập nhật 1 trường thông tin nào (thường sử dụng trong chương trình).
Lệnh
BROWSE [FIELD ]
[ FOR ]
[FONT [, FontSize]] [STYLE cFontStyle]
[ TITLE ]
Browse là một lệnh đa năng cho phép thực hiện hầu hết các công việc với bản ghi như xem, sửa, xóa, thêm mới ... Trong cửa sổ BROWSE, sử dụng phím Ctrl+Y để thêm 1 bản ghi trống vào bảng. Ví dụ
BROW
Tùy chọn FIELD cho phép chỉ hiển thị các trường trong , ví dụ chỉ hiện thị tên và ngày sinh của HOSOSV:
BROW FIELD Hoten,ngaysinh.
Tùy chọn FOR cho phép chỉ hiển thị các bản ghi mà BieuThucLogic =TRUE, ví dụ chỉ thiển thị những người thuộc lớp “3A-04”.
BROW FOR malop=”3A-04”.
Tùy chọn FONT, STYLE cho phép chọn Font chữ dùng trong cửa sổ Brow, ví dụ sử dụng font “.vntime”:
BROW FONT “.vntime”,12
Tùy chọn TITLE cho phép đặt tên cho cửa sổ Browse là TieuDe. ví dụ
BROW FONT “.vntime”,12 TITLE “Ho so sinh vien”
Lệnh
INSERT INTO (FieldName List) VALUE(Value List)
Thêm mới 1 bản ghi đồng thời xác định giá trị cho các trường của bản ghi đó. Ví dụ
USE HOSOSV
INSERT INTO HOSOSV(masv,hoten) VALUE(“00001”,”TEST”)
Sửa bản ghi
Lệnh
EDIT -> Sửa bản ghi - tương tự giao diện Append
BROWSE -> Xem mục trên
Lệnh
REPLACE
[Scope]
[FOR ]
Lệnh này cho phép cập nhật giá trị của FieldName1 với giá trị của BieuThuc1, FieldName2 với giá trị của BieuThuc2 .... Lệnh này thường được sử dụng trong chương trình.
Tham số Scope xác định phạm vi tác động của lệnh, có thể là:
ALL :Tất cả các bản ghi
NEXT n : n bản ghi tính từ bản ghi hiện thời
RECOR n : Bản ghi thứ n
REST : Từ bản ghi hiện thời đến cuối
Trường hợp mặc định là bản ghi hiện thời
Tùy chọn FOR cho phép thực hiện lệnh với những bản ghi thỏa mãn BieuThucLogic.
Ví dụ:
USE HOSOSV
REPLACE ALL ghichu with “Ghi chu ALL”
GO 5
REPLACE ghichu with “Ghi chu 5”
GO 15
REPLACE NEXT 10 ghichu with “Ghi chu Next 10”
REPLACE REST ghichu with “Ghi chu REST”
Xoá bản ghi
Lệnh
DELETE [Scope]
[FOR ]
Đánh dấu xóa các bản ghi nằm trong Scope và thỏa mãn BieuThucLogic. Việc xóa các bản ghi trong các bảng được thực hiện theo 2 bước, bước 1: là đánh dấu xóa các bản ghi, bước 2: xóa các bản ghi đã đánh dấu khỏi bảng, lệnh DELETE thực hiện bước 1.
Tùy chọn Scope và FOR như mục trên.
Ví dụ
USE HOSOSV
DELELE ALL FOR empty(malop)
Lệnh
PACK
Lệnh PACK thực hiện bước thứ 2 là xóa các bản ghi đã đánh dấu xóa. ví dụ PACK
Lệnh
RECALL [Scope]
[FOR ]
Đối với các bản ghi đã bị đánh dấu xóa (bằng lệnh DELETE) khi cần có thể khôi phục lại bằng lệnh RECALL. Tùy chọn Scope và FOR tương tự mục trên.
Lệnh
ZAP
Trường hợp đã xác định rõ cần xóa toàn bộ các bản ghi khỏi bảng thì có thể sử dụng lệnh ZAP (ZAP = DELETE +PACK).
III. sắp xếp, lọc các bản ghi
Sắp xếp
Lệnh
INDEX ON
[ASCENDING | DESCENDING]
Với các bảng dữ liệu, có thể sắp xếp các bản ghi theo một thứ tự (tiêu chuẩn nào đó) nào đó. Lệnh INDEX cho phép tạo ra các tiêu chuẩn sắp xếp (chỉ mục - index) đối với bảng, tham số chính là tiêu chuẩn sắp xếp.
Tùy chọn TO IDXFile cho phép tạo ra file chỉ mục dạng IDX, với tên file là IDXFile và phần mở rộng là IDX (tạo chỉ mục dạng này sẽ không thể chọn được chiều DESCENDING và mỗi file chỉ xác định 1 tiêu chuẩn sắp xếp).
Tùy chọn TAG TagName cho phép tao ra một chỉ mục có tên là TagName trong file chỉ mục kết hợp (file chỉ mục này có tên trùng với tên bảng, và phần mở rộng là CDX, tạo chỉ mục dạng này sẽ cho phép chọn ASCENDING hoặc DESCENDING và mỗi file có thể có chứa nhiều tiêu chuẩn sắp xếp).
Ví dụ
USE HOSOSV
INDEX ON masv TO masvidx
BROW
INDEX ON hoten TAG hoten2 DESCENDING
BROW
Lệnh
SET ORDER TO [IDXFile | TagName]
Lệnh này cho phép thay đổi tiêu chuẩn sắp xếp của bảng. Trong đó: IDXFile - tên file dạng IDX (đã tạo bằng lệnh INDEX trước đó); TagName - Tên chỉ mục trong file kết hợp (file dạng CDX). Ví dụ
USE HOSOSV
SET ORDER TO Masv
BROW
SET ORDER TO Hoten2
BROW
SET ORDER TO masvidx
SET ORDER TO (không tham số) dùng để bỏ việc sắp xếp (trở lại thứ tự nhập).
Lọc
Lệnh
SET FILTER TO
Trường hợp chỉ cần làm việc với một số các bản ghi nào đó (lọc - filter) thì chúng ta sử dụng lệnh này, trong đó BieuThucLogic là tiêu chuẩn để lọc. Ví du
USE HOSOSV
SET FILTER TO malop=”3A-01”
BROWSE
SET FILTER TO ngaysinh=date()
BROWS TITLE “Sinh nhat: ”+ DTOC(date())
SET FILTER TO (không tham số) dùng để bỏ lọc.
IV. Làm việc với nhiều bảng
Vùng làm việc
Visual Foxpro cho phép mở nhiều bảng dữ liệu đồng thời, mỗi bảng trên một vùng làm việc (WorkArea) nhất định. Visual Foxpro cho phép mở tối đa là 255 vùng làm việc đồng thời, mỗi vùng được xác định qua tên hoặc số hiệu vùng.
Lệnh
SELECT
Lệnh này cho phép chọn vùng làm việc, trong đó: n là số thứ tự của vùng cần chuyển đén; TableName là tên bảng hoặc aliasname. Ví dụ
SELECTE A
USE DMLOP ALIAS LOP
SELECTE B
USE HOSOSV ALIAS SINHVIEN
SELECTE 0
USE DIEM
Trong ví dụ trên đã tạo ra 3 vùng làm việc: Vùng 1 (hoằc vùng A hoặc LOP), Vùng 2 (hoặc vùng B hoặc SINHVIEN), Vùng 3 (hoặc DIEM).
Lưu ý: Khi chọn n=0 thì Visual Foxpro sẽ tự động chọn vùng cao nhất cong trống.
Liên kết giữa các bảng
Visual Foxpro cho phép đặt liên kết (mối “quan hệ”) giữa các bảng để có thể tạo ra một bảng to hơn từ các bảng con.
Lệnh
SET RELATION TO INTO
Lệnh này cho phép đặt quan hệ từ bảng hiện thời vào bảng được mở ở vùng n (hoặc TableName hoặc AliasName), trong đó BieuThuc là tiêu chuẩn đế đặt quan hệ.
Lưu ý: Bảng được mở trong vùng AliasName phải được index theo BieuThuc này rồi.
Ví dụ:
SELECTE A
USE DMLOP ALIAS LOP
INDE ON ma TO malopidx
BROW
SELECT B
USE HOSOSV ALIAS SINHVIEN
SET RELATION TO malop INTO LOP
BROW
(trong ví dụ này bảng DMLOP gọi là bảng cha, bảng HOSOSV gọi là bảng con)
Khi con trỏ di chuyển trong bảng con thì con trỏ trong bảng cha cũng thay đổi tương ứng.
V. Một số hàm và lệnh khác
Một số hàm
Hàm RECNO() - Trả về số hiệu bản ghi hiện thời
Hàm RECCOUNT() - Trả về số bản ghi hiện có của bảng
Hàm ALIAS() - Định danh của vùng hiện thời
Hàm DBF() - Tên file DBF
Hàm EOF(), BOF() - Trạng thái TRUE nếu con trỏ vượt quá Beginning và End
Một số lệnh khác
LIST [Scope] [Field ] [FOR ]
COUNT [ TO VarName ] [ FOR expL1 ] [ While expL2 ] [ Phạm vi ]
AVERAGE expN TO VarName [ FOR expL1 ] [ While expL2 ] [ Phạm vi ]
SUM TO
FOR expL1 ] [ While expL2 ] [ Phạm vi ]
CALC TO
[ FOR expL1 ] [ While expL2 ] [ Phạm vi ]
max(expr), min(expr), aver(expN)
COPY TO [ FOR expL1 ] [ While expL2 ] [ Phạm vi ]
COPY STRUCTURE TO [EXTENDED]
APPEND FROM [ FOR ]
Bài tập
Cập nhật dữ liệu cho tất cả các bảng của Database DIEMDB (đã tạo trong bài 4, dữ liệu là danh sách lớp).
Thực hiện các ví dụ trong bài học.