hỆ quẢn trỊ cƠ sỞ dỮ liỆu microsoft visual foxpro

78
1 HỆ QUẢN TRỊ CƠ SỞ DỮ HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual LIỆU Microsoft Visual FoxPro FoxPro TS. ĐỖ QUANG VINH TS. ĐỖ QUANG VINH Email: Email: [email protected] Hà Nội - 2008 Hà Nội - 2008

Upload: oded

Post on 13-Jan-2016

65 views

Category:

Documents


4 download

DESCRIPTION

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro. TS. ĐỖ QUANG VINH Email: [email protected] Hà Nội - 2008. I - TỔNG QUAN Microsoft Visual FoxPro MỞ ĐẦU - VFP 9.0 SP2 phát hành vào năm 2007 YÊU CẦU HỆ THỐNG Máy tính PC Pentium Bộ nhớ 64 MB RAM (128 MB or cao h ơ n) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

11

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

Microsoft Visual FoxProMicrosoft Visual FoxPro

TS. ĐỖ QUANG VINHTS. ĐỖ QUANG VINH

Email: Email: [email protected]

Hà Nội - 2008Hà Nội - 2008

Page 2: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC22

I - TỔNG QUAN Microsoft Visual FoxProI - TỔNG QUAN Microsoft Visual FoxPro

1.1. MỞ ĐẦUMỞ ĐẦU- VFP 9.0 SP2 phát hành vào năm 2007- VFP 9.0 SP2 phát hành vào năm 2007

YÊU CẦU HỆ THỐNGYÊU CẦU HỆ THỐNGMáy tính PC PentiumMáy tính PC PentiumBộ nhớ 64 MB RAM (128 MB or cao hBộ nhớ 64 MB RAM (128 MB or cao hơơn)n)Dung lượng Dung lượng đĩađĩa cứng dành cho VFP 9.0 165 MB cứng dành cho VFP 9.0 165 MBMàn hình có Màn hình có độđộ phân giải 800 x 600, 256 màu hoặc High color phân giải 800 x 600, 256 màu hoặc High color 16-bit16-bitỔ đĩa CD-ROM/DVDỔ đĩa CD-ROM/DVDChuộtChuộtHệ điều hành WINDOWS XPHệ điều hành WINDOWS XPTốt nhất là cài đầy đủ VFP9.0 SP2 từ đĩa CD Tốt nhất là cài đầy đủ VFP9.0 SP2 từ đĩa CD

Page 3: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 33

KHỞI ĐỘNG Microsoft Visual FoxProKHỞI ĐỘNG Microsoft Visual FoxPro

Cách 1: Cách 1: Start\Program\Microsoft Visual FoxPro 9Start\Program\Microsoft Visual FoxPro 9

Cách 2: Cách 2: Start\RunStart\Run

Cách 3: nháy vào biểu tượng Cách 3: nháy vào biểu tượng Microsoft Visual FoxPro 9Microsoft Visual FoxPro 9 trên màn trên màn

hình nền Desktophình nền Desktop

CÁC CHẾ ĐỘ LÀM VIỆCCÁC CHẾ ĐỘ LÀM VIỆC: 2 : 2

a. Chế độ tương táca. Chế độ tương tác

b. Chế độ chương trìnhb. Chế độ chương trình

THOÁT KHỎI Visual FoxProTHOÁT KHỎI Visual FoxPro: lệnh : lệnh QUITQUIT

Page 4: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 44

Page 5: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 55

2.2. GIAO DIỆNGIAO DIỆN

HỆ THỐNG BẢNG CHỌNHỆ THỐNG BẢNG CHỌN

a. Bảng chọn menua. Bảng chọn menu

b. Mục chọnb. Mục chọn

c. Menu PopUpc. Menu PopUp

d. Menu Optiond. Menu Option

CỬA SỔ LỆNH COMMANDCỬA SỔ LỆNH COMMAND

TRỢ GIÚPTRỢ GIÚP HELPHELP

Page 6: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 66

Page 7: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 77

3.3. CÁC KHÁI NIỆM CƠ BẢNCÁC KHÁI NIỆM CƠ BẢN

LỆNH Visual FoxPro LỆNH Visual FoxPro

- Lệnh của VFP là một chỉ thị cho VFP thực hiện một thao tác - Lệnh của VFP là một chỉ thị cho VFP thực hiện một thao tác quản trị dữ liệu cụ thể.quản trị dữ liệu cụ thể.

- Cú pháp tổng quát của lệnh VFP:- Cú pháp tổng quát của lệnh VFP:

<Lệnh VFP> [<phạm vi>] [<FIELDS <danh sách trường>] <Lệnh VFP> [<phạm vi>] [<FIELDS <danh sách trường>] [<danh sách biểu thức>] [FOR[<danh sách biểu thức>] [FORWHILE <biểu thức logic L>]WHILE <biểu thức logic L>]

+ Bao gồm một số + Bao gồm một số từ khoátừ khoá để chỉ hành động và các phương để chỉ hành động và các phương thức hoạt độngthức hoạt động

+ Độ dài mỗi dòng lệnh không quá 254 ký tự+ Độ dài mỗi dòng lệnh không quá 254 ký tự

+ Không phân biệt ký tự hoa hay ký tự thường đối với các từ + Không phân biệt ký tự hoa hay ký tự thường đối với các từ khoá hay các tên hàm mẫukhoá hay các tên hàm mẫu

+ Cho phép chỉ cần viết 4 ký tự đầu+ Cho phép chỉ cần viết 4 ký tự đầu

Page 8: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 88

- Phạm vi là miền tác động của lệnh khi thực hiện: 4- Phạm vi là miền tác động của lệnh khi thực hiện: 4+ ALL thao tác với tất cả các bản ghi + ALL thao tác với tất cả các bản ghi + RECORD <n> thao tác với bản ghi thứ <n> + RECORD <n> thao tác với bản ghi thứ <n> + NEXT <n> thao tác với <n> bản ghi tiếp theo kể từ bản ghi hiện + NEXT <n> thao tác với <n> bản ghi tiếp theo kể từ bản ghi hiện thời thời + REST thao tác với các bản ghi kể từ bản ghi hiện thời đến bản ghi + REST thao tác với các bản ghi kể từ bản ghi hiện thời đến bản ghi cuối cùngcuối cùng

CÁC KIỂU DỮ LIỆUCÁC KIỂU DỮ LIỆU - Kiểu ký tự - Kiểu ký tự CC (Character) (Character)+ có dạng một xâu ký tự thuộc bảng mã ASCII + có dạng một xâu ký tự thuộc bảng mã ASCII + có độ rộng tối đa là 254 ký tự+ có độ rộng tối đa là 254 ký tự+ phân biệt giữa ký tự hoa và ký tự thường + phân biệt giữa ký tự hoa và ký tự thường - Kiểu số thập phân - Kiểu số thập phân NN (Numeric) (Numeric) biểu diễn một giá trị số với tối đa 20 ký số kể cả phần nguyên, thập biểu diễn một giá trị số với tối đa 20 ký số kể cả phần nguyên, thập phân và dấu chấm thập phân phân và dấu chấm thập phân

Page 9: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 99

- Kiểu ngày tháng - Kiểu ngày tháng DD (Date) (Date)

+ ngày dương lịch từ 01/01/0001 đến 31/12/9999+ ngày dương lịch từ 01/01/0001 đến 31/12/9999

+ dạng mặc định là mm/dd/yy + dạng mặc định là mm/dd/yy

+ Độ rộng cố định là 8 + Độ rộng cố định là 8

+ dùng lệnh SET DATE và SET CENTURY ON + dùng lệnh SET DATE và SET CENTURY ON

- Kiểu Logic - Kiểu Logic LL (Logical) (Logical)

+ chỉ lấy một trong hai giá trị: đúng .T. hoặc sai .F. + chỉ lấy một trong hai giá trị: đúng .T. hoặc sai .F.

+ mặc định giá trị .T. lớn hơn .F. + mặc định giá trị .T. lớn hơn .F.

+ có độ rộng cố định là 1+ có độ rộng cố định là 1

- Kiểu ký ức - Kiểu ký ức MM (Memo) (Memo)

+ văn bản có độ rộng + văn bản có độ rộng 4000 ký tự 4000 ký tự

+ độ rộng khai báo = 4+ độ rộng khai báo = 4

- Kiểu chung - Kiểu chung GG (General) (General)

+ dùng để lưu trữ các đối tượng OLE+ dùng để lưu trữ các đối tượng OLE

+ Độ rộng khai báo = 4+ Độ rộng khai báo = 4

Page 10: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC1010

- Kiểu số dấu chấm động F (Float)- Kiểu số dấu chấm động F (Float)

- Kiểu số Integer- Kiểu số Integer

- Kiểu số Double- Kiểu số Double

- Kiểu tài chính (Currency)- Kiểu tài chính (Currency) HẰNGHẰNG

- Là đại lượng có giá trị không thay đổi - Là đại lượng có giá trị không thay đổi

- 4 loại hằng:- 4 loại hằng:

+ Hằng số + Hằng số

+ Hằng ký tự + Hằng ký tự

+ Hằng logic+ Hằng logic

+ Hằng ngày tháng+ Hằng ngày tháng BIẾNBIẾN

- Là đại lượng có giá trị thay đổi - Là đại lượng có giá trị thay đổi

- 3 loại biến: - 3 loại biến:

Page 11: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 1111

+ Biến bộ nhớ+ Biến bộ nhớ+ Biến trường+ Biến trường+ Biến hệ thống+ Biến hệ thống

TOÁN TỬTOÁN TỬ- Là các phép toán trên các giá trị nhằm sinh ra một giá trị - Là các phép toán trên các giá trị nhằm sinh ra một giá trị mới mới - 4 loại toán tử:- 4 loại toán tử:

+ Toán tử số học+ Toán tử số học+ Toán tử xâu ký tự+ Toán tử xâu ký tự+ Toán tử quan hệ/ toán tử so sánh+ Toán tử quan hệ/ toán tử so sánh+ Toán tử logic + Toán tử logic

HÀMHÀM - Là một loại chương trình con - Là một loại chương trình con - Xây dựng một thư viện các hàm mẫu- Xây dựng một thư viện các hàm mẫu- Cú pháp: <tên hàm>(danh sách đối số)- Cú pháp: <tên hàm>(danh sách đối số)

Page 12: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 1212

- - Phân loại hàmPhân loại hàm:: Hàm mẫuHàm mẫu+ Hàm số học+ Hàm số họcABS(x) ABS(x) cho biết trị tuyệt đối của số xcho biết trị tuyệt đối của số xSQRT(x) SQRT(x) tính căn bậc 2 của xtính căn bậc 2 của xEXP(x) EXP(x) tính e mũ xtính e mũ xLOG(x) LOG(x) tính loga cơ số e của xtính loga cơ số e của xINT(x) INT(x) lấy phần nguyên của xlấy phần nguyên của xROUND (x,n) ROUND (x,n) làm tròn số x với n chữ số thập phânlàm tròn số x với n chữ số thập phânMAX(<biểu thức 1>,<biểu thức 2>) cho giá trị lớn nhất của hai biểu MAX(<biểu thức 1>,<biểu thức 2>) cho giá trị lớn nhất của hai biểu

thứcthứcMIN(<biểu thức 1>,<biểu thức 2>) cho giá trị nhỏ nhất của hai biểu thứcMIN(<biểu thức 1>,<biểu thức 2>) cho giá trị nhỏ nhất của hai biểu thức

MOD(<biểu thức 1>,<biểu thức 2>) cho số dư của phép toán <biểu MOD(<biểu thức 1>,<biểu thức 2>) cho số dư của phép toán <biểu

thức1> chia cho <biểu thức 2> thức1> chia cho <biểu thức 2>VAL(s) VAL(s) trả lại giá trị số của xâu strả lại giá trị số của xâu s

Page 13: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 1313

+ Hàm xâu+ Hàm xâuLEN(s) LEN(s) cho biết độ dài của xâu scho biết độ dài của xâu sLEFT(s,n) LEFT(s,n) trích n ký tự bên trái xâu strích n ký tự bên trái xâu sRIGHT(s,n) RIGHT(s,n) trích ký tự bên phải của xâu strích ký tự bên phải của xâu sSUBSTR(s,i,n) SUBSTR(s,i,n) trích n ký tự của xâu s kể từ ký tự thứ itrích n ký tự của xâu s kể từ ký tự thứ iREPLICATE(s,n) REPLICATE(s,n) tạo một xâu gồm n lần xâu stạo một xâu gồm n lần xâu sSPACE(n) SPACE(n) tạo một xâu gồm n ký tự trắngtạo một xâu gồm n ký tự trắngLTRIM(s) LTRIM(s) cắt các dấu trắng bên trái xâu scắt các dấu trắng bên trái xâu sRTRIM(s) RTRIM(s) cắt các dấu trắng bên phải xâu scắt các dấu trắng bên phải xâu sALLTRIM(s) ALLTRIM(s) cắt các dấu trắng ở hai bên xâu scắt các dấu trắng ở hai bên xâu sTRIM(s)TRIM(s)UPPER(s) UPPER(s) biến tất cả các chữ cái trong xâu s thành chữ hoabiến tất cả các chữ cái trong xâu s thành chữ hoaLOWER(s) LOWER(s) biến tất cả các chữ cái trong xâu s thành chữ nhỏbiến tất cả các chữ cái trong xâu s thành chữ nhỏPROPER(s)PROPER(s)STR(x,n,m) STR(x,n,m) trả lại giá trị xâu của số x, gồm n ký tự với m trả lại giá trị xâu của số x, gồm n ký tự với m

chữ chữ số lẻsố lẻASC(s) ASC(s) cho biết mã ASCII của ký tự đầu tiên trong xâu scho biết mã ASCII của ký tự đầu tiên trong xâu s

Page 14: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC1414

CHR(n) CHR(n) cho biết ký tự có mã ASCII là ncho biết ký tự có mã ASCII là nAT(t,s) AT(t,s) cho biết vị trí đầu tiên xâu con t xuất hiện trong xâu s, cho biết vị trí đầu tiên xâu con t xuất hiện trong xâu s,

nếu không tìm thấy t trong s, hàm trả lại giá trị 0nếu không tìm thấy t trong s, hàm trả lại giá trị 0+ Hàm ngày tháng+ Hàm ngày thángCTOD(s) CTOD(s) chuyển đổi xâu s sang kiểu ngày tháng Dchuyển đổi xâu s sang kiểu ngày tháng DDTOC(d) DTOC(d) chuyển đổi ngày D sang kiểu ký tự Cchuyển đổi ngày D sang kiểu ký tự CDTOS(d)DTOS(d) ‘yyyymmdd’‘yyyymmdd’YEAR(d) YEAR(d) cho biết giá trị số của năm trong ngày d cho biết giá trị số của năm trong ngày d MONTH(d) MONTH(d) cho biết giá trị số của tháng trong ngày dcho biết giá trị số của tháng trong ngày dDAY(d) DAY(d) cho biết giá trị số của ngày trong ngày d cho biết giá trị số của ngày trong ngày d DOW(d) DOW(d) trả lại ngày trong tuần của ngày d (1 là chủ nhật, 2 là thứ trả lại ngày trong tuần của ngày d (1 là chủ nhật, 2 là thứ

hai , ... ,7 là thứ bảy)hai , ... ,7 là thứ bảy)DATE () DATE () cho biết giá trị của ngày hiện tạicho biết giá trị của ngày hiện tại+ Hàm đối với tệp dữ liệu+ Hàm đối với tệp dữ liệuDBF([<biểu thức số N>])DBF([<biểu thức số N>]) cho tên đầy đủ của tệp dữ liệu đang mở cho tên đầy đủ của tệp dữ liệu đang mở

trong vùng làm việc thứ <biểu thức trong vùng làm việc thứ <biểu thức số N>số N>

Page 15: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 1515

ALIAS([<biểu thức số N>]) chỉ bí danh của tệp dữ liệu đang mở trong ALIAS([<biểu thức số N>]) chỉ bí danh của tệp dữ liệu đang mở trong

vùng làm việc thứ <biểu thức số N>vùng làm việc thứ <biểu thức số N>

BOF([<biểu thức số N>]) BOF([<biểu thức số N>]) dùng để kiểm tra xem vị trí con trỏ có ở dùng để kiểm tra xem vị trí con trỏ có ở

đầu tệp dữ liệu trong vùng <biểu thức số N> không? đầu tệp dữ liệu trong vùng <biểu thức số N> không?

EOF([<biểu thức số N>]) EOF([<biểu thức số N>]) dùng để kiểm tra xem vị trí con trỏ có ở dùng để kiểm tra xem vị trí con trỏ có ở

cuối tệp dữ liệu trong vùng <biểu thức số N> không? cuối tệp dữ liệu trong vùng <biểu thức số N> không?

DELETED([<biểu thức số N>]) cho giá trị .T. nếu bản ghi hiện thời DELETED([<biểu thức số N>]) cho giá trị .T. nếu bản ghi hiện thời

trong vùng làm việc thứ <biểu thức số N> bị đánh dấu xoá trong vùng làm việc thứ <biểu thức số N> bị đánh dấu xoá

FOUND([<biểu thức số N>]) cho giá trị .T. nếu lệnh tìm kiếm FOUND([<biểu thức số N>]) cho giá trị .T. nếu lệnh tìm kiếm

LOCATE ... CONTINUE, SEEK, FIND trong LOCATE ... CONTINUE, SEEK, FIND trong

vùng <biểu thức số N> tìm được một bản ghi vùng <biểu thức số N> tìm được một bản ghi

Page 16: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC1616

RECCOUNT([<biểu thức số N>]) RECCOUNT([<biểu thức số N>]) cho biết số bản ghi có trong cho biết số bản ghi có trong

bảng dữ liệu đang mở trong vùng <biểu thức số N> bảng dữ liệu đang mở trong vùng <biểu thức số N>

RECNO([<biểu thức số N>]) RECNO([<biểu thức số N>]) cho số hiệu của bản ghi hiện cho số hiệu của bản ghi hiện

thời trong vùng <biểu thức số N> thời trong vùng <biểu thức số N>

SELECT() SELECT() cho số hiệu của vùng làm việc hiện thờicho số hiệu của vùng làm việc hiện thời

+ Hàm môi trường làm việc+ Hàm môi trường làm việc

DISKSPACE() DISKSPACE() cho số byte còn trống trên ổ đĩa hiện thờicho số byte còn trống trên ổ đĩa hiện thời

OS()OS() cho biết hệ điều hành đang sử dụngcho biết hệ điều hành đang sử dụng

VERSION()VERSION() cho biết ấn bản của VFP đang sử dụngcho biết ấn bản của VFP đang sử dụng

Page 17: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 1717

+ Hàm logic+ Hàm logic

IIF(<biểu thức logic L>, <biểu thức 1>, <biểu thức 2>) IIF(<biểu thức logic L>, <biểu thức 1>, <biểu thức 2>)

cho giá trị <biểu thức 1> nếu <biểu thức logic L> là .T. , cho giá trị <biểu thức 1> nếu <biểu thức logic L> là .T. ,

ngược lại, hàm cho giá trị <biểu thức 2>ngược lại, hàm cho giá trị <biểu thức 2>

BETWEEN(x, a, b) cho giá trị .T. nếu x nằm trong khoảng từ a đến bBETWEEN(x, a, b) cho giá trị .T. nếu x nằm trong khoảng từ a đến b

INLIST(x, aINLIST(x, a11, a, a22, ..., a, ..., ann) ) cho giá trị .T. nếu x = acho giá trị .T. nếu x = a11 hoặc x = a hoặc x = a22 ... ...

hoặc x = ahoặc x = ann

Page 18: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC1818

Hàm tự xây dựng của người sử dụng Hàm tự xây dựng của người sử dụng UDFUDF(User Defined Function)(User Defined Function)

FUNCTION TRICHTENFUNCTION TRICHTENparameters sparameters s

private t,jprivate t,jt = rtrim(s)t = rtrim(s)j = rat(' ',t)j = rat(' ',t)t = substr(t,j)t = substr(t,j)

return padr(t,7)return padr(t,7)

BIỂU THỨCBIỂU THỨC- Là một tổ hợp các hằng, biến, hàm và toán tử- Là một tổ hợp các hằng, biến, hàm và toán tử- Phân loại biểu thức: biểu thức ký tự C, biểu thức số N, biểu - Phân loại biểu thức: biểu thức ký tự C, biểu thức số N, biểu thức logic L, biểu thức ngày tháng Dthức logic L, biểu thức ngày tháng D

Page 19: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 1919

II - TẠO LẬP BẢNG DỮ LIỆUII - TẠO LẬP BẢNG DỮ LIỆU

1.1. KHÁI NIỆMKHÁI NIỆM

- Bảng dữ liệu: Là một tập hợp thông tin về một đối tượng - Bảng dữ liệu: Là một tập hợp thông tin về một đối tượng

quản lý và được tổ chức theo một nguyên tắc nhất địnhquản lý và được tổ chức theo một nguyên tắc nhất định

- Trường (Field): Là một thuộc tính của đối tượng quản lý- Trường (Field): Là một thuộc tính của đối tượng quản lý

- Bản ghi (Record): Là các thông tin phản ánh về từng đối - Bản ghi (Record): Là các thông tin phản ánh về từng đối

tượng được quản lýtượng được quản lý

- Mỗi trường nhận một tên, kiểu dữ liệu và có độ rộng nhất - Mỗi trường nhận một tên, kiểu dữ liệu và có độ rộng nhất

định. Số lượng trường tối đa trong một bảng dữ liệu là 255 định. Số lượng trường tối đa trong một bảng dữ liệu là 255

trườngtrường

Page 20: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 2020

2.2. TẠO LẬP BẢNG DỮ LIỆUTẠO LẬP BẢNG DỮ LIỆU

- 2 bước: - 2 bước:

+ Khai báo cấu trúc bảng dữ liệu + Khai báo cấu trúc bảng dữ liệu

+ Nhập bản ghi dữ liệu vào bảng dữ liệu + Nhập bản ghi dữ liệu vào bảng dữ liệu

a. Tạo và khai báo cấu trúc bảng dữ liệua. Tạo và khai báo cấu trúc bảng dữ liệu: 2 cách : 2 cách

Cách 1: tại khung cửa sổ lệnh:Cách 1: tại khung cửa sổ lệnh:

CREATECREATE <tên bảng dữ liệu> <tên bảng dữ liệu>

+ Bước 1: tại khung cửa sổ lệnh, gõ:+ Bước 1: tại khung cửa sổ lệnh, gõ:

CREATE KHOSACH CREATE KHOSACH

+ Bước 2: khai báo từng trường như Tên trường (Name), Kiểu + Bước 2: khai báo từng trường như Tên trường (Name), Kiểu trường (Type), Độ rộng trường (Width), Phần thập phân trường (Type), Độ rộng trường (Width), Phần thập phân (Decimal) ... (Decimal) ...

Cách 2: tạo cấu trúc bằng hộp thoại Table DesignerCách 2: tạo cấu trúc bằng hộp thoại Table Designer

Page 21: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 2121

Page 22: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 2222

Cách 2: tạo cấu trúc bằng hộp thoại Table DesignerCách 2: tạo cấu trúc bằng hộp thoại Table Designer

Bước 1: từ menu File, chọn New hoặc ấn 2 phím Bước 1: từ menu File, chọn New hoặc ấn 2 phím

<Ctrl+N> để xuất hiện hộp thoại New. Chọn mục Table rồi <Ctrl+N> để xuất hiện hộp thoại New. Chọn mục Table rồi

chọn tiếp New File.chọn tiếp New File.

Bước 2: hộp thoại Bước 2: hộp thoại CREATECREATE xuất hiện xuất hiện

Bước 3: Khai báo cấu trúc bảng dữ liệuBước 3: Khai báo cấu trúc bảng dữ liệu

b. Nhập bản ghib. Nhập bản ghi dữ liệu dữ liệu

Cách 1: Cách 1: BROWSEBROWSE

Cách 2: Cách 2: APPENDAPPEND hoặc hoặc INSERTINSERT

Page 23: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 2323

Page 24: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC2424

3.3. LIỆT KÊ DỮ LIỆU LIỆT KÊ DỮ LIỆU

Có 3 cách:Có 3 cách:

- - DISPLAYDISPLAY

- - LISTLIST

- - BROWSEBROWSE

Page 25: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 2525

Page 26: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 2626

4.4. KHAI BÁO SỬ DỤNG BẢNG DỮ LIỆUKHAI BÁO SỬ DỤNG BẢNG DỮ LIỆU

Có 2 cách khai báo:Có 2 cách khai báo:

Cách 1:Cách 1:

Tại cửa sổ lệnh, gõ:Tại cửa sổ lệnh, gõ:

USEUSE <Tên bảng dữ liệu> <Tên bảng dữ liệu>

Cách 2:Cách 2:

Chọn lệnh Chọn lệnh File\OpenFile\Open

5.5. HIỂN THỊ CẤU TRÚC CỦA BẢNG DỮ LIỆUHIỂN THỊ CẤU TRÚC CỦA BẢNG DỮ LIỆU

DISPLAY STRUCTUREDISPLAY STRUCTURE [TO <PRINTER>] [TO FILE <tên tệp>] [TO <PRINTER>] [TO FILE <tên tệp>]

hoặchoặc

LIST STRUCTURELIST STRUCTURE [TO <PRINTER>] [TO FILE <tên tệp>] [TO <PRINTER>] [TO FILE <tên tệp>]

Page 27: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 2727

III - CẬP NHẬT DỮ LIỆUIII - CẬP NHẬT DỮ LIỆU

1. ĐẶT VẤN ĐỀ1. ĐẶT VẤN ĐỀ

Cập nhật dữ liệu liên quan đến các trường hợp sauCập nhật dữ liệu liên quan đến các trường hợp sau::

- Cập nhật có thể là việc huỷ bỏ một số bản ghi lỗi thời hoặc nhập - Cập nhật có thể là việc huỷ bỏ một số bản ghi lỗi thời hoặc nhập sai gây dư thừa hay trùng lặp dữ liệu.sai gây dư thừa hay trùng lặp dữ liệu.

- Cập nhật có thể liên quan đến việc chèn thêm bản ghi mới, xảy - Cập nhật có thể liên quan đến việc chèn thêm bản ghi mới, xảy ra sau khi tệp dữ liệu đã được tạo lập, hoặc trong một chu kỳ xử lýra sau khi tệp dữ liệu đã được tạo lập, hoặc trong một chu kỳ xử lý

- Cập nhật có thể là việc thay đổi nội dung của, thay đổi trị số một - Cập nhật có thể là việc thay đổi nội dung của, thay đổi trị số một trườngtrường

- Cập nhật cũng có thể liên quan đến dữ liệu đúng- Cập nhật cũng có thể liên quan đến dữ liệu đúng

2. CHÈN THÊM BẢN GHI2. CHÈN THÊM BẢN GHI: 2 cách: 2 cách

+ Chèn thêm vào giữa bảng dữ liệu+ Chèn thêm vào giữa bảng dữ liệu

INSERTINSERT

Page 28: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 2828

+ Chèn thêm vào cuối bảng dữ liệu+ Chèn thêm vào cuối bảng dữ liệu- BROWSE- BROWSE- - APPENDAPPEND- APPEND FROM- APPEND FROM

CHÈN THÊM BẢN GHI VÀO CUỐI BẢNG DỮ LIỆUCHÈN THÊM BẢN GHI VÀO CUỐI BẢNG DỮ LIỆUAPPENDAPPEND - Chèn thêm một hoặc nhiều bản ghi mới vào cuối bảng dữ liệu- Chèn thêm một hoặc nhiều bản ghi mới vào cuối bảng dữ liệu- Cú pháp:- Cú pháp:APPENDAPPEND [BLANK] [IN <n>/ <bí danh bảng dữ liệu>] [BLANK] [IN <n>/ <bí danh bảng dữ liệu>] [NOMENU][NOMENU]

NỐI THÊM BẢN GHI VÀO CUỐI BẢNG DỮ LIỆU NỐI THÊM BẢN GHI VÀO CUỐI BẢNG DỮ LIỆU APPEND FROMAPPEND FROM

Page 29: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 2929

USEUSE <tệp tin nguồn> <tệp tin nguồn>

APPEND FROMAPPEND FROM <tệp tin trung gian> [<điều kiện>] <tệp tin trung gian> [<điều kiện>]

CHÈN THÊM VÀO GIỮA BẢNG DỮ LIỆUCHÈN THÊM VÀO GIỮA BẢNG DỮ LIỆU

INSERT INSERT

- - Cú pháp: Cú pháp: INSERTINSERT [BLANK] [BEFORE] [BLANK] [BEFORE]

3. SỬA ĐỔI DỮ LIỆU3. SỬA ĐỔI DỮ LIỆU: 3: 3

- - CHANGE/ EDITCHANGE/ EDIT

- BROWSE- BROWSE

- REPLACE- REPLACE

LỆNH LỆNH EDIT/CHANGEEDIT/CHANGE

- Cho phép hiệu chỉnh dữ liệu của bảng dữ liệu hiện thời- Cho phép hiệu chỉnh dữ liệu của bảng dữ liệu hiện thời

- Cú pháp:- Cú pháp:

Page 30: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 3030

EDIT/CHANGEEDIT/CHANGE [<phạm vi>] [FIELDS <danh sách trường>] [<phạm vi>] [FIELDS <danh sách trường>]

[FOR <biểu thức logic L>] [WHILE <biểu thức logic L>][FOR <biểu thức logic L>] [WHILE <biểu thức logic L>]

[FONT<tên font chữ> [, <cỡ chữ>]][FONT<tên font chữ> [, <cỡ chữ>]]

[STYLE <kiểu chữ>] [FREEZE <tên trường>][STYLE <kiểu chữ>] [FREEZE <tên trường>]

[KEY <biểu thức1> [,<biểu thức 2>]] [LAST/ NOINIT][KEY <biểu thức1> [,<biểu thức 2>]] [LAST/ NOINIT]

[LPARTITION] [NAME <tên đối tượng>][LPARTITION] [NAME <tên đối tượng>]

[NOAPPEND] [NOCLEAR] [NODELETE][NOAPPEND] [NOCLEAR] [NODELETE]

[NOEDIT/ NOMODIFY] [NOLINK] [NOMENU][NOEDIT/ NOMODIFY] [NOLINK] [NOMENU]

[NOOPTIMIZE] [NORMAL] [NOWAIT][NOOPTIMIZE] [NORMAL] [NOWAIT] LỆNH LỆNH BROWSEBROWSE

- Là một trong những lệnh mạnh nhất của Visual FoxPro - Là một trong những lệnh mạnh nhất của Visual FoxPro

- Cú pháp:- Cú pháp:

Page 31: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 3131

BROWSEBROWSE [FIELDS <danh sách trường>] [FIELDS <danh sách trường>]

[FOR <biểu thức logic L> [REST]][FOR <biểu thức logic L> [REST]]

[FONT <tên font chữ> [,< cỡ chữ>]] [FORMAT][FONT <tên font chữ> [,< cỡ chữ>]] [FORMAT]

[STYLE <kiểu chữ>] [FREEZE <tên trường>][STYLE <kiểu chữ>] [FREEZE <tên trường>]

[KEY <biểu thức 1>] [,<biểu thức 2>]] [KEY <biểu thức 1>] [,<biểu thức 2>]]

[LOCK <n>][LOCK <n>]

[LPARTITION] [NAME <tên đối tượng>][LPARTITION] [NAME <tên đối tượng>]

[NOAPPEND] [NOCLEAR] [NODELETE][NOAPPEND] [NOCLEAR] [NODELETE]

[NOEDIT/ NOMODIFY] [NOLINK] [NOMENU][NOEDIT/ NOMODIFY] [NOLINK] [NOMENU]

[NOLGRID] [NORGRID][NOLGRID] [NORGRID]

[NOOPTIMIZE] [NOREFRESH] [NORMAL] [NOOPTIMIZE] [NOREFRESH] [NORMAL] [NOWAIT][NOWAIT]

[PARTITION <m>] [LEDIT] [REDIT][PARTITION <m>] [LEDIT] [REDIT]

Page 32: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 3232

LỆNH LỆNH REPLACEREPLACE - Trường hợp muốn cập nhật nhiều bản ghi, trường- Trường hợp muốn cập nhật nhiều bản ghi, trường- Cú pháp:- Cú pháp:REPLACE REPLACE <trường 1> <trường 1> WITHWITH <biểu thức 1> [ADDITIVE] <biểu thức 1> [ADDITIVE][,<trường 2> [,<trường 2> WITHWITH <biểu thức 2> [ADDTIVE]] ... <biểu thức 2> [ADDTIVE]] ...[ phạm vi] [FOR <biểu thức logic L>] [ phạm vi] [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>][WHILE <biểu thức logic L>][IN <n>/ <bí danh bảng dữ liệu>] [NOOPTIMIZE][IN <n>/ <bí danh bảng dữ liệu>] [NOOPTIMIZE]

4. XOÁ DỮ LIỆU: 4. XOÁ DỮ LIỆU: 2 mức2 mức + Mức 1: đánh dấu bản ghi / xoá logic + Mức 1: đánh dấu bản ghi / xoá logic bản ghi không bản ghi không tham gia vào xử lý thông tin, nhưng vẫn tồn tại trong bảng tham gia vào xử lý thông tin, nhưng vẫn tồn tại trong bảng dữ liệu và có thể phục hồi bằng lệnh RECALLdữ liệu và có thể phục hồi bằng lệnh RECALL

Page 33: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 3333

+ Mức 2: xoá vật lý các bản ghi đã bị đánh dấu xoá + Mức 2: xoá vật lý các bản ghi đã bị đánh dấu xoá bản ghi bản ghi bị xoá hoàn toàn, không tồn tại trong bảng dữ liệu, không thể bị xoá hoàn toàn, không tồn tại trong bảng dữ liệu, không thể phục hồiphục hồi

XOÁ LOGICXOÁ LOGIC Lệnh Lệnh DELETE DELETE

- Cú pháp:- Cú pháp:DELETEDELETE [phạm vi] [FOR <biểu thức logic L>] [WHILE [phạm vi] [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>][IN <n>/ <bí danh bảng dữ liệu>]<biểu thức logic L>][IN <n>/ <bí danh bảng dữ liệu>]

Đánh dấu xoá bản ghi ở lệnh Đánh dấu xoá bản ghi ở lệnh BROWSEBROWSE + ấn tổ hợp phím <Ctrl+T>+ ấn tổ hợp phím <Ctrl+T>+ + Chọn mụcChọn mục Table/Delete RecordTable/Delete Record

LỆNH LỆNH SETSET DELETED ON/OFFDELETED ON/OFF XOÁ VẬT LÝ XOÁ VẬT LÝ

PACK PACK ZAPZAP

Page 34: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 3434

PHỤC HỒI BẢN GHI PHỤC HỒI BẢN GHI

- Phục hồi các bản ghi đã bị đánh dấu xóa- Phục hồi các bản ghi đã bị đánh dấu xóa

- Cú pháp:- Cú pháp:

RECALLRECALL [<phạm vi>] [FOR<biểu thức logic L>] [WHILE<biểu [<phạm vi>] [FOR<biểu thức logic L>] [WHILE<biểu thức logic L>] [NOOPTIMIZE] thức logic L>] [NOOPTIMIZE]

5. SỬA ĐỔI CẤU TRÚC BẢNG DỮ LIỆU5. SỬA ĐỔI CẤU TRÚC BẢNG DỮ LIỆU

- Cho phép thực hiện:- Cho phép thực hiện:

+ Xóa trường+ Xóa trường

+ Thêm trường+ Thêm trường

+ Đổi tên trường/ kiểu trường/ độ rộng trường+ Đổi tên trường/ kiểu trường/ độ rộng trường

+ Thay đổi thứ tự các trường+ Thay đổi thứ tự các trường

- Cú pháp:- Cú pháp:

MODIFY STRUCTUREMODIFY STRUCTURE

Page 35: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 3535

6. SAO CHÉP CẤU TRÚC BẢNG DỮ LIỆU6. SAO CHÉP CẤU TRÚC BẢNG DỮ LIỆU LỆNHLỆNH COPY STRUCTURE COPY STRUCTURE

- Tạo lập một tệp dữ liệu mới, rỗng - Tạo lập một tệp dữ liệu mới, rỗng

- Cú pháp:- Cú pháp:

USEUSE <tên bảng dữ liệu gốc> <tên bảng dữ liệu gốc>

COPY STRUCTURE TOCOPY STRUCTURE TO <tên bảng dữ liệu mới> <tên bảng dữ liệu mới>

[FIELDS <danh sách trường>][FIELDS <danh sách trường>] LỆNH LỆNH APPEND FROMAPPEND FROM

- Cú pháp:- Cú pháp:

APPEND FROMAPPEND FROM <tên tệp nguồn>/ ?[FIELDS <danh sách <tên tệp nguồn>/ ?[FIELDS <danh sách trường>] [FOR<biểu thức logic L>][TYPE] DIF/ MOD/ SDF/ trường>] [FOR<biểu thức logic L>][TYPE] DIF/ MOD/ SDF/ SYLK/ WK1/ WK3/ WKS/ FW2/ PDOX/ WR1/ WRK/ XLS/ SYLK/ WK1/ WK3/ WKS/ FW2/ PDOX/ WR1/ WRK/ XLS/ XL5/ RPD/ DELIMITED[WITH Delimiter/WITH BLANK / XL5/ RPD/ DELIMITED[WITH Delimiter/WITH BLANK / WITH TAB]] [AS <n>]WITH TAB]] [AS <n>]

Page 36: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 3636

7. SAO LƯU CẤU TRÚC TỆP DỮ LIỆU7. SAO LƯU CẤU TRÚC TỆP DỮ LIỆU

LỆNH COPY STRUCTURE EXTENDEDLỆNH COPY STRUCTURE EXTENDED

- Cú pháp:- Cú pháp:

USEUSE <tên bảng dữ liệu> <tên bảng dữ liệu>

COPY STRUCTURE EXTENDED TOCOPY STRUCTURE EXTENDED TO <tên bảng sao lưu cấu <tên bảng sao lưu cấu

trúc> [FIELDS <danh sách trường>]trúc> [FIELDS <danh sách trường>]

LỆNH CREATE FROMLỆNH CREATE FROM

- Cú pháp:- Cú pháp:

CREATECREATE <bảng dữ liệu mới> <bảng dữ liệu mới> FROMFROM <bảng sao lưu cấu trúc> <bảng sao lưu cấu trúc>

Page 37: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 3737

IV - SẮP XẾP VÀ CHỈ MỤCIV - SẮP XẾP VÀ CHỈ MỤC

  

1. ĐẶT VẤN ĐỀ1. ĐẶT VẤN ĐỀ

- 2 cách:- 2 cách:

+ Sắp xếp vật lý + Sắp xếp vật lý SORT:SORT: lệnh SORT sẽ tạo ra tệp thứ hai cùng lệnh SORT sẽ tạo ra tệp thứ hai cùng kích thước như tệp nguồn nhưng được sắp xếp theo một trật tự kích thước như tệp nguồn nhưng được sắp xếp theo một trật tự mới về mặt vật lýmới về mặt vật lý

+ Sắp xếp theo chỉ mục + Sắp xếp theo chỉ mục INDEX:INDEX: đối với lệnh INDEX, tệp đối với lệnh INDEX, tệp nguồn không thay đổi, nhưng một tệp chỉ mục (index file) nguồn không thay đổi, nhưng một tệp chỉ mục (index file) được tạo ra theo tiêu chí cần sắp xếpđược tạo ra theo tiêu chí cần sắp xếp

+ Trường/ biểu thức dùng làm tiêu chí để sắp xếp là khoá sắp + Trường/ biểu thức dùng làm tiêu chí để sắp xếp là khoá sắp xếp khi dùng SORT hoặc INDEX.xếp khi dùng SORT hoặc INDEX.

+ Có thể sắp xếp theo theo thứ tự tăng dần hoặc giảm dần. + Có thể sắp xếp theo theo thứ tự tăng dần hoặc giảm dần.

Page 38: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 3838

2. SẮP XẾP VẬT LÝ SORT2. SẮP XẾP VẬT LÝ SORT- - Cú pháp:Cú pháp:SORTSORT TOTO <tên bảng sắp xếp > <tên bảng sắp xếp > ONON <tên trường 1> [/A] [/D] <tên trường 1> [/A] [/D] [/C][,<tên trường 2> [/A] [/D] [/C], ...] [ASCENDING | [/C][,<tên trường 2> [/A] [/D] [/C], ...] [ASCENDING | DESCENDING][<phạm vi>] [FOR <biểu thức logic L> | DESCENDING][<phạm vi>] [FOR <biểu thức logic L> | WHILE <biểu thức logic L>] [FIELDS <danh sách trường> | WHILE <biểu thức logic L>] [FIELDS <danh sách trường> | FIELD LIKE <Skeleton> | FIELD EXCEPT <Skeleton>] FIELD LIKE <Skeleton> | FIELD EXCEPT <Skeleton>] [NOOPTIMIZE][NOOPTIMIZE]

     + Bảng dữ liệu cần sắp xếp (bảng nguồn) là bảng hiện hành.+ Bảng dữ liệu cần sắp xếp (bảng nguồn) là bảng hiện hành.+ <tên bảng sắp xếp > là tên bảng đã được sắp xếp (bảng đích)+ <tên bảng sắp xếp > là tên bảng đã được sắp xếp (bảng đích)+ <tên trường i> là trường thứ i dùng làm tiêu chí sắp xếp. + <tên trường i> là trường thứ i dùng làm tiêu chí sắp xếp. Trường hợp dùng nhiều trường khoá thì tên các trường khoá Trường hợp dùng nhiều trường khoá thì tên các trường khoá phải được phân cách bằng dấu phẩy phải được phân cách bằng dấu phẩy + Số trường khoá không hạn chế nhưng tổng độ dài của lệnh + Số trường khoá không hạn chế nhưng tổng độ dài của lệnh SORT không quá 254 ký tựSORT không quá 254 ký tự

Page 39: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC3939

       + Trường khoá có thể là dữ liệu kiểu C, N, D, L + Trường khoá có thể là dữ liệu kiểu C, N, D, L

+ Có thể sắp xếp tăng dần [/A] hoặc giảm dần [/D]. Nếu không có + Có thể sắp xếp tăng dần [/A] hoặc giảm dần [/D]. Nếu không có tham số [/A] hoặc [/D] thì mặc định là tăng dầntham số [/A] hoặc [/D] thì mặc định là tăng dần

+ Đối với trường khoá, nếu không có tham số [/A] hoặc [/D] thì sắp + Đối với trường khoá, nếu không có tham số [/A] hoặc [/D] thì sắp xếp tăng dần khi dùng từ khoá [ASCENDING] hoặc giảm dần khi xếp tăng dần khi dùng từ khoá [ASCENDING] hoặc giảm dần khi dùng từ khoá [DESCENING]dùng từ khoá [DESCENING]

+ Đối với trường kiểu C, nếu sắp xếp không phân biệt chữ hoa và chữ + Đối với trường kiểu C, nếu sắp xếp không phân biệt chữ hoa và chữ thường thì dùng từ khoá [/C]thường thì dùng từ khoá [/C]

Nhận xétNhận xét::

- Yêu cầu dung lượng nhớ trống tối thiểu trên ổ đĩa - Yêu cầu dung lượng nhớ trống tối thiểu trên ổ đĩa 3 lần kích 3 lần kích thước tệp cần sắp xếp thước tệp cần sắp xếp

- Sắp xếp đơn giản - Sắp xếp đơn giản

- Không cho phép sắp xếp theo trường khoá là biểu thức phức tạp, - Không cho phép sắp xếp theo trường khoá là biểu thức phức tạp, nghĩa là một phần của trường, biến bộ nhớ, hàm hoặc biểu thứcnghĩa là một phần của trường, biến bộ nhớ, hàm hoặc biểu thức

Page 40: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 4040

- Chỉ thích hợp đối với các tệp dữ liệu nhỏ- Chỉ thích hợp đối với các tệp dữ liệu nhỏ

Đối với các tệp dữ liệu có kích thước lớn lệnh SORT có những Đối với các tệp dữ liệu có kích thước lớn lệnh SORT có những

nhược điểm sau đây:nhược điểm sau đây:

   - Tốc độ sắp xếp chậm so với INDEX vì phải chép qua chép lại các - Tốc độ sắp xếp chậm so với INDEX vì phải chép qua chép lại các

bản ghi. Nếu tệp nhỏ ~ 1000 ÷ 2000 bản ghi thì tốc độ thực hiện bản ghi. Nếu tệp nhỏ ~ 1000 ÷ 2000 bản ghi thì tốc độ thực hiện

chậm của lệnh SORT không thể hiện rõ, nhưng khi tệp lớn trên chục chậm của lệnh SORT không thể hiện rõ, nhưng khi tệp lớn trên chục

nghìn bản ghi thì tốc độ thực hiện rất chậm.nghìn bản ghi thì tốc độ thực hiện rất chậm.

- Các bản ghi của tệp đích không cùng số hiệu với các bản ghi tương - Các bản ghi của tệp đích không cùng số hiệu với các bản ghi tương

ứng trong tệp dữ liệu nguồnứng trong tệp dữ liệu nguồn

- Gây khó khăn cho người dùng vì mỗi lần thực hiện lệnh SORT tạo - Gây khó khăn cho người dùng vì mỗi lần thực hiện lệnh SORT tạo

ra một tệp dữ liệu mới cùng với tiêu chí sắp xếpra một tệp dữ liệu mới cùng với tiêu chí sắp xếp

Page 41: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 4141

3. SẮP XẾP THEO CHỈ MỤC3. SẮP XẾP THEO CHỈ MỤC

KHÁI NIỆM VỀ CHỈ MỤCKHÁI NIỆM VỀ CHỈ MỤC

- Sắp xếp theo chỉ mục được dựa trên nguyên tắc tương tự như bảng - Sắp xếp theo chỉ mục được dựa trên nguyên tắc tương tự như bảng mục lục của một quyển sáchmục lục của một quyển sách

PHÂN LOẠI TỆP CHỈ MỤC THEO TỔ CHỨCPHÂN LOẠI TỆP CHỈ MỤC THEO TỔ CHỨC: 3 : 3

- Tệp chỉ mục độc lập .IDX (còn gọi là stand-alone IDX)- Tệp chỉ mục độc lập .IDX (còn gọi là stand-alone IDX)

- Tệp chỉ mục kết hợp .CDX structural- Tệp chỉ mục kết hợp .CDX structural

- Tệp chỉ mục kết hợp .CDX non-structural- Tệp chỉ mục kết hợp .CDX non-structural

PHÂN LOẠI TỆP CHỈ MỤC THEO SỬ DỤNGPHÂN LOẠI TỆP CHỈ MỤC THEO SỬ DỤNG: 4 : 4

- Chỉ mục chính (primary index)- Chỉ mục chính (primary index)

- Chỉ mục dự bị (candidate index)- Chỉ mục dự bị (candidate index)

- Chỉ mục thông thường (regular index)- Chỉ mục thông thường (regular index)

- Chỉ mục duy nhất (unique index- Chỉ mục duy nhất (unique index))

Page 42: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 4242

TẠO TỆP CHỈ MỤCTẠO TỆP CHỈ MỤC Tạo tệp chỉ mục bằng lệnh INDEXTạo tệp chỉ mục bằng lệnh INDEX

- Cú pháp:- Cú pháp:INDEXINDEX ONON <biểu thức> <biểu thức> TOTO <tên tệp IDX> | TAG <tên <tên tệp IDX> | TAG <tên đính mục> [OF <tên tệp CDX>] [FOR <biểu thức logic L>] đính mục> [OF <tên tệp CDX>] [FOR <biểu thức logic L>] [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]CANDIDATE] [ADDITIVE]

Sử dụng bảng chọn để tạo tệp chỉ mụcSử dụng bảng chọn để tạo tệp chỉ mụca. Mở bảng dữ liệu qua khung giao diện hoặc gõ lệnh USE a. Mở bảng dữ liệu qua khung giao diện hoặc gõ lệnh USE <tên bảng dữ liệu> tại khung cửa sổ lệnh <tên bảng dữ liệu> tại khung cửa sổ lệnh b. Chọn mục View\Browse để hiển thị bảng dữ liệu ở chế độ b. Chọn mục View\Browse để hiển thị bảng dữ liệu ở chế độ Browse hoặc gõ Browse tại cửa sổ lệnhBrowse hoặc gõ Browse tại cửa sổ lệnhc. Chọn mục View\Table Designer, khung hội thoại Table c. Chọn mục View\Table Designer, khung hội thoại Table Designer xuất hiện với thẻ mặc định là FieldsDesigner xuất hiện với thẻ mặc định là Fieldsd. Chọn thẻ Indexesd. Chọn thẻ Indexes

Page 43: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

4343

e. Nhập tên tệp chỉ mục (hoặc tên đính mục) e. Nhập tên tệp chỉ mục (hoặc tên đính mục) f. Sau khi nhập xong cột Name cột Type hiện lên giá trị mặc định là f. Sau khi nhập xong cột Name cột Type hiện lên giá trị mặc định là regularregular g. Tại cột Expression nhập biểu thức dùng làm trường khoág. Tại cột Expression nhập biểu thức dùng làm trường khoá

CÁCH THÀNH LẬP BIỂU THỨC CHỈ MỤCCÁCH THÀNH LẬP BIỂU THỨC CHỈ MỤC+ Chỉ mục trên các biểu thức đơn giản + Chỉ mục trên các biểu thức đơn giản + Chỉ mục trên các biểu thức phức tạp + Chỉ mục trên các biểu thức phức tạp + Chỉ mục trên một biểu thức kiểu xâu + Chỉ mục trên một biểu thức kiểu xâu + + Chỉ mục trên nhiều trường có kiểu dữ liệu khác nhauChỉ mục trên nhiều trường có kiểu dữ liệu khác nhau + Dùng hàm mẫu có sẵn và UDF trong biểu thức chỉ mục+ Dùng hàm mẫu có sẵn và UDF trong biểu thức chỉ mục

Ví dụ: hàm UDF TRICHTEN(s) Ví dụ: hàm UDF TRICHTEN(s) SỬ DỤNG CHỈ MỤCSỬ DỤNG CHỈ MỤC Mở tệp chỉ mục tại khung cửa sổ lệnh: 2 cáchMở tệp chỉ mục tại khung cửa sổ lệnh: 2 cách

-- USE ... INDEX USE ... INDEX - SET INDEX ...- SET INDEX ...

Page 44: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 4444

Lệnh Lệnh SET INDEXSET INDEX- Dùng để mở một hoặc nhiều tệp chỉ mục .IDX hoặc .CDX - Dùng để mở một hoặc nhiều tệp chỉ mục .IDX hoặc .CDX của tệp dữ liệu hiện thời của tệp dữ liệu hiện thời - Cú pháp:- Cú pháp:SET INDEX TOSET INDEX TO [<danh sách tệp chỉ mục>| ?] [ORDER <n>| [<danh sách tệp chỉ mục>| ?] [ORDER <n>| <tên tệp chỉ mục .IDX>| [TAG] <tên đính mục> [OF <tên <tên tệp chỉ mục .IDX>| [TAG] <tên đính mục> [OF <tên tệp .CDX>]] [ASCENDING | DESCENDING] [ADDITIVE]tệp .CDX>]] [ASCENDING | DESCENDING] [ADDITIVE]

Lệnh Lệnh USE ... INDEXUSE ... INDEX - Cú pháp:- Cú pháp:

USEUSE [<tên bảng dữ liệu>|<SQLViewName>|<?>] [IN <n> | [<tên bảng dữ liệu>|<SQLViewName>|<?>] [IN <n> | <bí danh bảng dữ liệu>] [AGAIN] [NOREQUERY <bí danh bảng dữ liệu>] [AGAIN] [NOREQUERY [<nDataSessionNumber>]] [NODATA][[<nDataSessionNumber>]] [NODATA][INDEXINDEX <danh sách <danh sách tệp chỉ mục>|<?> [ORDER [<n> | <tên tệp .IDX>[TAG] <tên tệp chỉ mục>|<?> [ORDER [<n> | <tên tệp .IDX>[TAG] <tên đính mục> [OF <tên tệp .CDX>] [ASCENDING|đính mục> [OF <tên tệp .CDX>] [ASCENDING|DESCENDING]]]][ALIAS <bí danh bảng dữ liệu>] DESCENDING]]]][ALIAS <bí danh bảng dữ liệu>] [EXCLUSIVE] [SHARED] [NOUPDATE][EXCLUSIVE] [SHARED] [NOUPDATE]

Page 45: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 4545

Lệnh Lệnh SET ORDERSET ORDER - Chỉ định rõ ràng tệp .IDX trong danh sách <danh sách tệp chỉ - Chỉ định rõ ràng tệp .IDX trong danh sách <danh sách tệp chỉ mục> là tệp chỉ mục chủ/ chính (master index)mục> là tệp chỉ mục chủ/ chính (master index)- Cú pháp:- Cú pháp:SET ORDER TOSET ORDER TO [ <n> | <tên tệp chỉ mục .IDX>| [TAG] [ <n> | <tên tệp chỉ mục .IDX>| [TAG] <tên đính mục> [OF <tên tệp .CDX>] [IN <n> | <bí danh bảng <tên đính mục> [OF <tên tệp .CDX>] [IN <n> | <bí danh bảng dữ liệu>] [ASCENDING | DESCENDING]]dữ liệu>] [ASCENDING | DESCENDING]]+ Lệnh + Lệnh SET ORDER TO 0SET ORDER TO 0 hoặc hoặc SET ORDER TOSET ORDER TO huỷ tác huỷ tác dụng chỉ mục, nghĩa là tệp dữ liệu được liệt kê hoặc truy xuất dụng chỉ mục, nghĩa là tệp dữ liệu được liệt kê hoặc truy xuất theo thứ tự vật lý ban đầu nhưng các tệp chỉ mục vẫn đang mởtheo thứ tự vật lý ban đầu nhưng các tệp chỉ mục vẫn đang mở

Cập nhật các tệp chỉ mục REINDEXCập nhật các tệp chỉ mục REINDEX- Chỉ mục lại các tệp chỉ mục đã lỗi thời- Chỉ mục lại các tệp chỉ mục đã lỗi thời+ Cách 1:+ Cách 1:

USEUSE <tên bảng dữ liệu> <tên bảng dữ liệu> INDEXINDEX <danh sách tệp chỉ mục> <danh sách tệp chỉ mục> REINDEXREINDEX

Page 46: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC4646

+ Cách 2:+ Cách 2:

USEUSE <tên bảng dữ liệu> <tên bảng dữ liệu>

SET INDEX TOSET INDEX TO <danh sách tệp chỉ mục> <danh sách tệp chỉ mục>

REINDEXREINDEX

Xoá tệp chỉ mục kiểu .IDX Xoá tệp chỉ mục kiểu .IDX

DELETE FILEDELETE FILE [<tên tệp> | <?> [<tên tệp> | <?>

Đóng các tệp chỉ mụcĐóng các tệp chỉ mục

SET INDEX TO SET INDEX TO

CLOSE INDEXCLOSE INDEX

Page 47: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC4747

V -V - TÌM KIẾM THÔNG TINTÌM KIẾM THÔNG TIN

1.1. CÁC KHÁI NIỆM CÁC KHÁI NIỆM

CON TRỎ BẢN GHICON TRỎ BẢN GHI

- VFP tổ chức cơ chế con trỏ bản ghi (record pointer) dùng để xác - VFP tổ chức cơ chế con trỏ bản ghi (record pointer) dùng để xác định bản ghi hiện thờiđịnh bản ghi hiện thời

- Khi mở bảng dữ liệu, con trỏ bản ghi bao giờ cũng đặt ở bản ghi thứ - Khi mở bảng dữ liệu, con trỏ bản ghi bao giờ cũng đặt ở bản ghi thứ nhất nhất

- Có 3 cách di chuyển con trỏ bản ghi: - Có 3 cách di chuyển con trỏ bản ghi:

+ Di chuyển tuyệt đối - lệnh + Di chuyển tuyệt đối - lệnh GO/GOTOGO/GOTO

+ Di chuyển tương đối - lệnh + Di chuyển tương đối - lệnh SKIP SKIP

+ Di chuyển “ẩn” nằm ngay trong các lệnh như: LIST, DISPLAY + Di chuyển “ẩn” nằm ngay trong các lệnh như: LIST, DISPLAY ALL, LOCATE/CONTINUE, SCAN, COUNT, AVERACE, SUM, ALL, LOCATE/CONTINUE, SCAN, COUNT, AVERACE, SUM, TOTAL TOTAL

Page 48: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 4848

DI CHUYỂN TUYỆT ĐỐI - LỆNH GO/GOTO DI CHUYỂN TUYỆT ĐỐI - LỆNH GO/GOTO - Di chuyển con trỏ tới bản ghi mang số hiệu được chỉ định- Di chuyển con trỏ tới bản ghi mang số hiệu được chỉ định- Cú pháp:- Cú pháp:GOGO/ / GOTOGOTO [RECORD] <n> [IN <vùng làm việc n> | <bí danh [RECORD] <n> [IN <vùng làm việc n> | <bí danh bảng dữ liệu>]bảng dữ liệu>]< Biểu thức số N>< Biểu thức số N>GOTO TOP | BOTTOM [IN <vùng làm việc n> | <bí danh bảng GOTO TOP | BOTTOM [IN <vùng làm việc n> | <bí danh bảng dữ liệu>]dữ liệu>]

DI CHUYỂN TƯƠNG ĐỐI - LỆNH SKIPDI CHUYỂN TƯƠNG ĐỐI - LỆNH SKIP - Di chuyển con trỏ về bản ghi nằm phía trước/ phía sau bản ghi - Di chuyển con trỏ về bản ghi nằm phía trước/ phía sau bản ghi hiện hành <n> bản ghihiện hành <n> bản ghi- Cú pháp:- Cú pháp:SKIPSKIP [+|-] [<n>] [IN <vùng làm việc n> | <bí danh bảng dữ [+|-] [<n>] [IN <vùng làm việc n> | <bí danh bảng dữ liệu>]liệu>]

HÀM HÀM RECNO(), BOF() VÀ EOF() RECNO(), BOF() VÀ EOF()

Page 49: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 4949

2. TÌM KIẾM ĐƠN GIẢN BẰNG LIỆT KÊ DỮ LIỆU2. TÌM KIẾM ĐƠN GIẢN BẰNG LIỆT KÊ DỮ LIỆU

LỆNH LIST/ DISPLAY LỆNH LIST/ DISPLAY

- Cú pháp: - Cú pháp:

LISTLIST [ OFF] [<phạm vi>] [FIELDS <danh sách trường>] [ OFF] [<phạm vi>] [FIELDS <danh sách trường>]

[FOR <biểu thức logic L> | WHILE <biểu thức logic L>][FOR <biểu thức logic L> | WHILE <biểu thức logic L>][NOCONSOLE][TO PRINTER [PROMPT] | TO FILE <tên tệp [NOCONSOLE][TO PRINTER [PROMPT] | TO FILE <tên tệp >] [NOOPTIMIZE]>] [NOOPTIMIZE]

DISPLAYDISPLAY [ OFF] [<phạm vi>] [FIELDS <danh sách trường>] [ OFF] [<phạm vi>] [FIELDS <danh sách trường>] [FOR <biểu thức logic L> | WHILE <biểu thức logic [FOR <biểu thức logic L> | WHILE <biểu thức logic L>[NOCONSOLE][TO PRINTER [PROMPT] | TO FILE <tên L>[NOCONSOLE][TO PRINTER [PROMPT] | TO FILE <tên tệp>] [NOOPTIMIZE]tệp>] [NOOPTIMIZE]

LỆNH BROWSELỆNH BROWSE

-- Là một trong những lệnh mạnh nhất của Visual FoxProLà một trong những lệnh mạnh nhất của Visual FoxPro

Page 50: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 5050

- Cú pháp: - Cú pháp:

BROWSEBROWSE [FIELDS <danh sách trường>] [FOR <biểu thức logic [FIELDS <danh sách trường>] [FOR <biểu thức logic L>] [WINDOW <tên cửa sổ 1>] [IN WINDOW <tên cửa sổ 2> | L>] [WINDOW <tên cửa sổ 1>] [IN WINDOW <tên cửa sổ 2> | IN SCREEN] [TITLE <biểu thức ký tự C>] [WIDTH <biểu thức IN SCREEN] [TITLE <biểu thức ký tự C>] [WIDTH <biểu thức số N1>] [LPARTTION] [PARTION <biểu thức số N2>] số N1>] [LPARTTION] [PARTION <biểu thức số N2>] [NOLINK] [LEDIT] [REDIT] [LOCK<biểu thức số N3>] [NOLINK] [LEDIT] [REDIT] [LOCK<biểu thức số N3>] [FREEZE <tên trường>] [NOEDIT | NOMODIFY] [FREEZE <tên trường>] [NOEDIT | NOMODIFY] [NOAPPEND] [NODELETE][NOAPPEND] [NODELETE]

3. TÌM KIẾM TUẦN TỰ3. TÌM KIẾM TUẦN TỰ LỆNH LOCATELỆNH LOCATE

- Cú pháp: - Cú pháp:

LOCATE FORLOCATE FOR <biểu thức logic L> [<phạm vi>] [WHILE <biểu <biểu thức logic L> [<phạm vi>] [WHILE <biểu thức logic L>] [NOOPTIMIZE]thức logic L>] [NOOPTIMIZE]

LỆNH CONTINUE LỆNH CONTINUE

Page 51: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC5151

4. TÌM KIẾM THEO CHỈ MỤC4. TÌM KIẾM THEO CHỈ MỤC

LỆNH SEEKLỆNH SEEK

LỆNH FINDLỆNH FIND

HÀM SEEK()HÀM SEEK()

LỆNH FIND LỆNH FIND

- Cú pháp:- Cú pháp:

FINDFIND <biểu thức tìm kiếm> <biểu thức tìm kiếm>

LỆNH SEEK LỆNH SEEK

- Tìm kiếm ngẫu nhiên bản ghi trong tệp dữ liệu đã được chỉ mục - Tìm kiếm ngẫu nhiên bản ghi trong tệp dữ liệu đã được chỉ mục

- Cú pháp:- Cú pháp:

SEEKSEEK <biểu thức tìm kiếm> <biểu thức tìm kiếm> [ORDER <n> | <tên tệp chỉ [ORDER <n> | <tên tệp chỉ mục .IDX> [TAG] <tên đính mục> [OF <tên tệp .CDX>]] mục .IDX> [TAG] <tên đính mục> [OF <tên tệp .CDX>]] [ASCENDING | DESCENDING] [IN <vùng làm việc n> | <bí [ASCENDING | DESCENDING] [IN <vùng làm việc n> | <bí danh bảng dữ liệu>]danh bảng dữ liệu>]

Page 52: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 5252

HÀM SEEK()HÀM SEEK()

- Hàm SEEK() cũng thực hiện nhiệm vụ giống như lệnh SEEK, - Hàm SEEK() cũng thực hiện nhiệm vụ giống như lệnh SEEK, nghĩa là tìm kiếm trên bảng dữ liệu được chỉ mục để tìm ra sự tồn nghĩa là tìm kiếm trên bảng dữ liệu được chỉ mục để tìm ra sự tồn tại của bản ghi đầu tiên có trường khoá trùng khớp với <biểu thức>. tại của bản ghi đầu tiên có trường khoá trùng khớp với <biểu thức>.

- Cú pháp:- Cú pháp:

SEEKSEEK(<biểu thức> [,<vùng làm việc n> | <bí danh bảng dữ liệu> (<biểu thức> [,<vùng làm việc n> | <bí danh bảng dữ liệu> [,<n> | <tên tệp chỉ mục .IDX> | <tên đính mục> ]])[,<n> | <tên tệp chỉ mục .IDX> | <tên đính mục> ]])

5.5. HẠN CHẾ DỮ LIỆUHẠN CHẾ DỮ LIỆU

HẠN CHẾ THEO BẢN GHI - LỆNH SET FILTERHẠN CHẾ THEO BẢN GHI - LỆNH SET FILTER

- Là việc thiết lập một cơ chế sao cho các thao tác sau đó chỉ được - Là việc thiết lập một cơ chế sao cho các thao tác sau đó chỉ được truy xuất các bản ghi cho phép. Đây là một trong những điểm quan truy xuất các bản ghi cho phép. Đây là một trong những điểm quan trọng của một DBMS trọng của một DBMS quản lý và khai thác các tệp dữ liệu trở nên quản lý và khai thác các tệp dữ liệu trở nên mềm dẻo và thuận tiệnmềm dẻo và thuận tiện

Page 53: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 5353

- Cú pháp:- Cú pháp:

SET FILTER TOSET FILTER TO <biểu thức logic L> <biểu thức logic L>

- Huỷ lọc đã đặt, dùng lệnh không tham số:- Huỷ lọc đã đặt, dùng lệnh không tham số:

SET FILTER TOSET FILTER TO

HẠN CHẾ THEO TRƯỜNG - LỆNH SET FIELDS HẠN CHẾ THEO TRƯỜNG - LỆNH SET FIELDS

- Đặt lọc các trường chung cho các lệnh tiếp theo- Đặt lọc các trường chung cho các lệnh tiếp theo

- Cú pháp: - Cú pháp:

SET FIELDS TOSET FIELDS TO <danh sách trường> <danh sách trường>

- Hủy đặt lọc:- Hủy đặt lọc:

SET FIELDS OFF SET FIELDS OFF

SET FIELDS TO ALL SET FIELDS TO ALL

SET FIELDS TOSET FIELDS TO

Page 54: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC5454

VI - THỐNG KÊ & TRÍCH LỌC DỮ LIỆUVI - THỐNG KÊ & TRÍCH LỌC DỮ LIỆU

1.1. ĐẾM SỐ BẢN GHIĐẾM SỐ BẢN GHI- CÚ PHÁP:- CÚ PHÁP:COUNTCOUNT [<phạm vi>] [FOR <biểu thức logic L>] [WHILE <biểu [<phạm vi>] [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>] [TO <biến bộ nhớ>] thức logic L>] [TO <biến bộ nhớ>] - CHỨC NĂNG:- CHỨC NĂNG:Đếm số bản ghi trong bảng dữ liệu thoả mãn <biểu thức logic L>Đếm số bản ghi trong bảng dữ liệu thoả mãn <biểu thức logic L>

2. TÍNH TỔNG SUM2. TÍNH TỔNG SUM- CÚ PHÁP:- CÚ PHÁP:SUMSUM [<phạm vi>] [<Danh sách trường số/ Biểu thức số N>] [FOR [<phạm vi>] [<Danh sách trường số/ Biểu thức số N>] [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>] [TO <danh <biểu thức logic L>] [WHILE <biểu thức logic L>] [TO <danh sách biến bộ nhớ>] sách biến bộ nhớ>] - CHỨC NĂNG:- CHỨC NĂNG:Tính tổng các trường số hoặc các biểu thức số trong bảng dữ liệu Tính tổng các trường số hoặc các biểu thức số trong bảng dữ liệu thoả mãn <biểu thức logic L>thoả mãn <biểu thức logic L>

Page 55: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 5555

3. TÍNH TRUNG BÌNH AVERAGE3. TÍNH TRUNG BÌNH AVERAGE- CÚ PHÁP:- CÚ PHÁP:AVERAGEAVERAGE [<phạm vi>] [<Danh sách trường số/Biểu thức số>] [<phạm vi>] [<Danh sách trường số/Biểu thức số>] [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>] [TO [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>] [TO <danh sách biến bộ nhớ>] <danh sách biến bộ nhớ>] - CHỨC NĂNG- CHỨC NĂNGTính trung bình các trường số hoặc các biểu thức số trong bảng dữ Tính trung bình các trường số hoặc các biểu thức số trong bảng dữ liệu thoả mãn <biểu thức logic L>liệu thoả mãn <biểu thức logic L>

4. TÍNH TỔNG THEO NHÓM TOTAL4. TÍNH TỔNG THEO NHÓM TOTAL- CÚ PHÁP:- CÚ PHÁP:TOTALTOTAL TOTO <tên bảng dữ liệu> <tên bảng dữ liệu> ONON <trường khoá> [<phạm vi>] <trường khoá> [<phạm vi>] [FIELDS <danh sách trường số>] [FOR <biểu thức logic L>] [FIELDS <danh sách trường số>] [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>] [WHILE <biểu thức logic L>] - CHỨC NĂNG:- CHỨC NĂNG:Tính tổng các giá trị bản ghi thuộc trường số của các bản ghi có Tính tổng các giá trị bản ghi thuộc trường số của các bản ghi có cùng <biểu thức khoá>cùng <biểu thức khoá>

Page 56: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 5656

+ Bảng dữ liệu cần được tính tổng theo nhóm cần được sắp xếp + Bảng dữ liệu cần được tính tổng theo nhóm cần được sắp xếp trước đó bởi lệnh sắp xếp vật lý (SORT) hoặc chỉ mục (INDEX) trước đó bởi lệnh sắp xếp vật lý (SORT) hoặc chỉ mục (INDEX) theo biểu thức khoátheo biểu thức khoá

Các bước tiến hành lệnh tính tổng theo nhóm:Các bước tiến hành lệnh tính tổng theo nhóm:+ Bước 1: sắp xếp bảng dữ liệu gốc theo <biểu thức khoá> hay còn + Bước 1: sắp xếp bảng dữ liệu gốc theo <biểu thức khoá> hay còn gọi là tiêu chí phân nhómgọi là tiêu chí phân nhóm+ Bước 2: mở bảng dữ liệu đã sắp xếp theo <biểu thức khoá>+ Bước 2: mở bảng dữ liệu đã sắp xếp theo <biểu thức khoá>+ Bước 3: tính tổng theo nhóm+ Bước 3: tính tổng theo nhóm+ Bước 4: xem kết quả tính tổng theo nhóm+ Bước 4: xem kết quả tính tổng theo nhóm- Mở bảng dữ liệu kết quả: USE <tên bảng dữ liệu kết quả>- Mở bảng dữ liệu kết quả: USE <tên bảng dữ liệu kết quả>- Liệt kê dữ liệu: LIST/ DISPLAY/ BROWSE- Liệt kê dữ liệu: LIST/ DISPLAY/ BROWSE

5. TÍNH TOÁN HỖN HỢP CALCULATE5. TÍNH TOÁN HỖN HỢP CALCULATE- CÚ PHÁP:- CÚ PHÁP:CALCULATECALCULATE [<phạm vi>] [<Danh sách biểu thức>] [FOR <biểu [<phạm vi>] [<Danh sách biểu thức>] [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>] [TO <danh sách biến thức logic L>] [WHILE <biểu thức logic L>] [TO <danh sách biến bộ nhớ>]bộ nhớ>]

Page 57: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 5757

- CHỨC NĂNG:- CHỨC NĂNG:

Lệnh CALCULATE là tổng quát của các lệnh SUM, Lệnh CALCULATE là tổng quát của các lệnh SUM, AVERAGE, COUNT ... cho phép thực hiện đồng thời nhiều AVERAGE, COUNT ... cho phép thực hiện đồng thời nhiều giá trị khác nhau trong cùng một lệnhgiá trị khác nhau trong cùng một lệnh

trong đó:trong đó:

<Danh sách biểu thức> bao gồm danh sách các hàm:<Danh sách biểu thức> bao gồm danh sách các hàm:

CNT()CNT()

SUMSUM(<biểu thức số N>)(<biểu thức số N>)

AVGAVG(<biểu thức số N>)(<biểu thức số N>)

MAXMAX(<biểu thức số N>)(<biểu thức số N>)

MINMIN(<biểu thức số N>)(<biểu thức số N>)

STDSTD(<biểu thức số N>)(<biểu thức số N>)

VARVAR(<biểu thức số N>)(<biểu thức số N>)

Page 58: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 5858

6. TRÍCH LỌC DỮ LIỆU COPY TO6. TRÍCH LỌC DỮ LIỆU COPY TO

- CÚ PHÁP:- CÚ PHÁP:

COPY TOCOPY TO <Tên bảng dữ liệu> [<phạm vi>] <Tên bảng dữ liệu> [<phạm vi>]

[FIELDS<Danh sách trường>] [FOR <biểu thức logic L>] [FIELDS<Danh sách trường>] [FOR <biểu thức logic L>]

[WHILE <biểu thức logic L>] [WHILE <biểu thức logic L>]

- CHỨC NĂNG:- CHỨC NĂNG:

Tạo bảng dữ liệu mới được trích lọc từ bảng dữ liệu hiện thời, Tạo bảng dữ liệu mới được trích lọc từ bảng dữ liệu hiện thời,

bao gồm những bản ghi thuộc <phạm vi> thoả mãn <biểu thức bao gồm những bản ghi thuộc <phạm vi> thoả mãn <biểu thức

logic L> và những trường trong <danh sách trường>logic L> và những trường trong <danh sách trường>

Page 59: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 5959

VII - QUAN HỆ GIỮA CÁC BẢNG DỮ LIỆUVII - QUAN HỆ GIỮA CÁC BẢNG DỮ LIỆU

1. ĐẶT VẤN ĐỀ1. ĐẶT VẤN ĐỀ NGUYÊN TẮC QUAN HỆNGUYÊN TẮC QUAN HỆ

Trong xử lý dữ liệu, nhiều khi phải xử lý nhiều bảng có quan hệ với Trong xử lý dữ liệu, nhiều khi phải xử lý nhiều bảng có quan hệ với nhau đồng thời. Các mối quan hệ là mối quan hệ từ thực tế mang nhau đồng thời. Các mối quan hệ là mối quan hệ từ thực tế mang vào, hoặc là do phát sinh trong quá trình chuyển (phân tích) từ môi vào, hoặc là do phát sinh trong quá trình chuyển (phân tích) từ môi trường thực tế sang mô hình tin học. Xét các mối quan hệ, từ đó tìm trường thực tế sang mô hình tin học. Xét các mối quan hệ, từ đó tìm ra phương thức xử lý nhiều bảng đồng thời.ra phương thức xử lý nhiều bảng đồng thời.

QUAN HỆ 1-1QUAN HỆ 1-1 QUAN HỆ 1-N, N-1 (1 - nhiều, nhiều - 1)QUAN HỆ 1-N, N-1 (1 - nhiều, nhiều - 1) QUAN HỆ M-N QUAN HỆ M-N (nhiều - nhiều)(nhiều - nhiều) QUAN HỆ BẮC CẦUQUAN HỆ BẮC CẦU QUAN HỆ ĐỒNG THỜIQUAN HỆ ĐỒNG THỜI QUAN HỆ PHẢN THÂNQUAN HỆ PHẢN THÂN

Page 60: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC6060

VÙNG LÀM VIỆC VÀ LỆNH SELECTVÙNG LÀM VIỆC VÀ LỆNH SELECT

- Là vùng nhớ trong bộ nhớ RAM mà VFP dành cho việc mở bảng - Là vùng nhớ trong bộ nhớ RAM mà VFP dành cho việc mở bảng dữ liệu, cho phép tạo ra dữ liệu, cho phép tạo ra 3276732767 vùng làm việc được đánh số từ 1 đến vùng làm việc được đánh số từ 1 đến 32767 32767

- Trên một vùng làm việc ở một thời điểm chỉ có một bảng dữ liệu - Trên một vùng làm việc ở một thời điểm chỉ có một bảng dữ liệu được mở, nếu mở bảng dữ liệu khác thì bảng hiện thời tự đóng lạiđược mở, nếu mở bảng dữ liệu khác thì bảng hiện thời tự đóng lại

- Muốn mở nhiều bảng đồng thời phải chọn cho mỗi bảng một vùng - Muốn mở nhiều bảng đồng thời phải chọn cho mỗi bảng một vùng làm việc khác nhau bằng lệnh: làm việc khác nhau bằng lệnh:

SELECTSELECT <Số hiệu vùng> <Số hiệu vùng>

trong đó: trong đó:

<Số hiệu vùng> là vùng muốn chọn để mở bảng dữ liệu cho phép từ <Số hiệu vùng> là vùng muốn chọn để mở bảng dữ liệu cho phép từ 1 ÷ 327671 ÷ 32767

+ Việc chọn vùng làm việc không nhất thiết phải theo trật tự+ Việc chọn vùng làm việc không nhất thiết phải theo trật tự

Page 61: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 6161

+ Lệnh SELECT 0 chọn vùng làm việc có số vùng thấp nhất + Lệnh SELECT 0 chọn vùng làm việc có số vùng thấp nhất

chưa dùng tới để mở bảng dữ liệuchưa dùng tới để mở bảng dữ liệu

VÙNG LÀM VIỆC VÀ BÍ DANH ALIASVÙNG LÀM VIỆC VÀ BÍ DANH ALIAS

GÁN BÍ DANH CHO BẢNG DỮ LIỆUGÁN BÍ DANH CHO BẢNG DỮ LIỆU

- Mỗi khi mở một bảng trên một vùng làm việc, VFP cho phép - Mỗi khi mở một bảng trên một vùng làm việc, VFP cho phép

gán bí danh cho bảng ngoài tên khai sinh bằng lệnh:gán bí danh cho bảng ngoài tên khai sinh bằng lệnh:

USEUSE Tên bảngTên bảng ALIASALIAS <Bí danh> <Bí danh>

- Bí danh đặt theo quy tắc tên biến: bắt đầu bằng ký tự sau đó - Bí danh đặt theo quy tắc tên biến: bắt đầu bằng ký tự sau đó

là số hoặc ký tự, không chứa dấu cách và dài là số hoặc ký tự, không chứa dấu cách và dài 254 kí tự 254 kí tự

- Các bảng được mở đồng thời phải có bí danh khác nhau. - Các bảng được mở đồng thời phải có bí danh khác nhau.

- Nếu không gán bí danh cho bảng dữ liệu khi mở thì VFP tự - Nếu không gán bí danh cho bảng dữ liệu khi mở thì VFP tự

đặt tên bí danh theo quy tắc:đặt tên bí danh theo quy tắc:

Page 62: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC6262

+ Lấy tên bảng làm tên bí danh. Nếu tên bảng thoả mãn tên biến và + Lấy tên bảng làm tên bí danh. Nếu tên bảng thoả mãn tên biến và không bị trùng bí danhkhông bị trùng bí danh

+ Bí danh mặc định + Bí danh mặc định A A ÷÷ J J cho cho 1010 vùng làm việc đầu tiên, các vùng vùng làm việc đầu tiên, các vùng còn lại là còn lại là W11 W11 ÷÷ W32767 W32767

CHỌN VÙNG LÀM VIỆC DỰA VÀO BÍ DANHCHỌN VÙNG LÀM VIỆC DỰA VÀO BÍ DANH

- Khi đã mở bảng dữ liệu ở vùng làm việc nào đó có thể dùng lệnh - Khi đã mở bảng dữ liệu ở vùng làm việc nào đó có thể dùng lệnh SELECTSELECT bí danhbí danh để thay cho lệnh để thay cho lệnh SELECTSELECT số hiệu vùngsố hiệu vùng

THAM KHẢO TRÊN CÁC VÙNG LÀM VIỆC KHÁCTHAM KHẢO TRÊN CÁC VÙNG LÀM VIỆC KHÁC

- Tại vùng hiện thời có thể mở bảng dữ liệu ở vùng khác bằng lệnh: - Tại vùng hiện thời có thể mở bảng dữ liệu ở vùng khác bằng lệnh:

USEUSE Tên bảngTên bảng ININ Số hiệu vùngSố hiệu vùng

- Tại một vùng chỉ được mở một bảng, nhưng một bảng có thể mở ở - Tại một vùng chỉ được mở một bảng, nhưng một bảng có thể mở ở nhiều vùng khác bằng từ khoá AGAIN: nhiều vùng khác bằng từ khoá AGAIN:

USEUSE <tên bảng> <tên bảng> AGAINAGAIN [ [ALIASALIAS <bí danh>] <bí danh>]

Page 63: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC6363

VÙNG LÀM VIỆC VÀ CON TRỎ BẢN GHIVÙNG LÀM VIỆC VÀ CON TRỎ BẢN GHI

- VFP quản lý riêng biệt từng bảng dữ liệu và các tệp liên quan - VFP quản lý riêng biệt từng bảng dữ liệu và các tệp liên quan

đang mở của chúng như các tệp .CDX, .IDX, .FMT, .FPTđang mở của chúng như các tệp .CDX, .IDX, .FMT, .FPT

- Đặc biệt có 32767 con trỏ bản ghi để quản lý 32767 vùng làm - Đặc biệt có 32767 con trỏ bản ghi để quản lý 32767 vùng làm

việc. Vì vậy, việc dịch chuyển con trỏ bản ghi vùng này không làm việc. Vì vậy, việc dịch chuyển con trỏ bản ghi vùng này không làm

ảnh hưởng đến con trỏ bản ghi vùng khác, việc chuyển vùng làm ảnh hưởng đến con trỏ bản ghi vùng khác, việc chuyển vùng làm

việc từ vùng này sang vùng kia cũng không ảnh hưởng tới con trỏ việc từ vùng này sang vùng kia cũng không ảnh hưởng tới con trỏ

bản ghi của các vùng đó, kể cả khi 1 bảng dữ liệu được mở ở nhều bản ghi của các vùng đó, kể cả khi 1 bảng dữ liệu được mở ở nhều

vùng khác nhauvùng khác nhau

Vì vậy, nếu không thiết lập mối quan hệ nào giữa các bảng dữ Vì vậy, nếu không thiết lập mối quan hệ nào giữa các bảng dữ

liệu thì con trỏ bản ghi trong các vùng khác nhau là hoàn toàn độc liệu thì con trỏ bản ghi trong các vùng khác nhau là hoàn toàn độc

lập lập

Page 64: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 6464

CHUYỂN ĐỔI VÙNG LÀM VIỆC HIỆN THỜICHUYỂN ĐỔI VÙNG LÀM VIỆC HIỆN THỜI

- Để làm việc được với nhiều bảng đồng thời, phải tham chiếu dữ - Để làm việc được với nhiều bảng đồng thời, phải tham chiếu dữ

liệu ở các bảng khác nhau, sẽ phải thường xuyên thay đổi vùng làm liệu ở các bảng khác nhau, sẽ phải thường xuyên thay đổi vùng làm

việc hiện thờiviệc hiện thời

- Lệnh SELECT ngoài công dụng xác định vùng làm việc của từng - Lệnh SELECT ngoài công dụng xác định vùng làm việc của từng

bảng dữ liệu còn cho phép di chuyển từ vùng này sang vùng khácbảng dữ liệu còn cho phép di chuyển từ vùng này sang vùng khác

- Một số dạng của lệnh SELECT:- Một số dạng của lệnh SELECT:

+ SELECT <số hiệu vùng làm việc từ 1÷ 32767>+ SELECT <số hiệu vùng làm việc từ 1÷ 32767>

+ SELECT <Bí danh ngầm định A ÷ J>+ SELECT <Bí danh ngầm định A ÷ J>

+ SELECT <Bí danh được đặt bởi từ khoá ALIAS>+ SELECT <Bí danh được đặt bởi từ khoá ALIAS>

+ SELECT <Tên bảng dữ liệu>+ SELECT <Tên bảng dữ liệu>

Page 65: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC6565

QUAN HỆ GIỮA CÁC BẢNG DỮ LIỆU TRONG CÁC VÙNG QUAN HỆ GIỮA CÁC BẢNG DỮ LIỆU TRONG CÁC VÙNG KHÁC NHAUKHÁC NHAU

- Các bảng được mở ở các vùng làm việc khác nhau chỉ có quan hệ - Các bảng được mở ở các vùng làm việc khác nhau chỉ có quan hệ với nhau khi thiết lập được mối quan hệ giữa chúng bằng các lệnh với nhau khi thiết lập được mối quan hệ giữa chúng bằng các lệnh SET RELATIONSET RELATION, , JOINJOIN, , UPDATEUPDATE

- Lệnh - Lệnh SET RELATIONSET RELATION duy trì mối quan hệ một chiều từ bảng duy trì mối quan hệ một chiều từ bảng chủ tới bảng khách. Muốn có mối quan hệ đảo ngược chúng ta phải chủ tới bảng khách. Muốn có mối quan hệ đảo ngược chúng ta phải thiết lập lại mối quan hệthiết lập lại mối quan hệ

- Các lệnh - Các lệnh JOINJOIN, , UPDATEUPDATE chỉ duy trì mối quan hệ tạm thời giữa 2 chỉ duy trì mối quan hệ tạm thời giữa 2 bảng khi các lệnh này đang thi hành. Khi thi hành xong các bảng đó bảng khi các lệnh này đang thi hành. Khi thi hành xong các bảng đó lại trở về trạng thái độc lậplại trở về trạng thái độc lập

Page 66: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 6666

2. ĐẶT QUAN HỆ BẰNG LỆNH SET RELATION2. ĐẶT QUAN HỆ BẰNG LỆNH SET RELATION

LỆNH SET RELATIONLỆNH SET RELATION

- Nhiều trường hợp xử lý dữ liệu đòi hỏi phải tham khảo dữ liệu - Nhiều trường hợp xử lý dữ liệu đòi hỏi phải tham khảo dữ liệu có liên quan với nhau ở các bảng khác nhau, phải thiết lập mối có liên quan với nhau ở các bảng khác nhau, phải thiết lập mối quan hệ giữa chúng bằng lệnh SET RELATION. Khi đó, có một quan hệ giữa chúng bằng lệnh SET RELATION. Khi đó, có một cơ chế tự động lật các bản ghi của bảng dữ liệu khách tương ứng cơ chế tự động lật các bản ghi của bảng dữ liệu khách tương ứng với sự dịch chuyển bản ghi của bảng hiện thời (bảng chủ). Cơ với sự dịch chuyển bản ghi của bảng hiện thời (bảng chủ). Cơ chế này được hoạt động theo một mối "quan hệ" đã được xác chế này được hoạt động theo một mối "quan hệ" đã được xác định từ trước giữa bảng chủ và bảng kháchđịnh từ trước giữa bảng chủ và bảng khách

- Cú pháp:- Cú pháp:

SET RELATIONSET RELATION [<trường khóa 1> [<trường khóa 1> INTOINTO <số hiệu vùng 1>| <số hiệu vùng 1>| <bí danh 1>] [,< trường khóa 2> INTO <bí danh 2> ...] [IN <số <bí danh 1>] [,< trường khóa 2> INTO <bí danh 2> ...] [IN <số hiệu vùng>| <bí danh>] hiệu vùng>| <bí danh>] [ADDITIVE][ADDITIVE]

Page 67: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 6767

- Ví dụ: Để quản lý bạn đọc trong thư việnVí dụ: Để quản lý bạn đọc trong thư việnCLOSE ALLCLOSE ALLSELECT 2SELECT 2USE KHOSACH ALIA KSUSE KHOSACH ALIA KSINDEX ON SDK TO CMSDKINDEX ON SDK TO CMSDKSELECT 1SELECT 1USE BANDOCUSE BANDOCSET RELATION TO SDK INTO KSSET RELATION TO SDK INTO KSBROWSE FIELDS SDK, HOTEN, KS.TENSACH, BROWSE FIELDS SDK, HOTEN, KS.TENSACH, NGAYMUON, SONGAYQH=DATE()-NGAYMUON-15NGAYMUON, SONGAYQH=DATE()-NGAYMUON-15

CHÚ Ý KHI DÙNG LỆNH SET RELATIONCHÚ Ý KHI DÙNG LỆNH SET RELATION- Nếu một trong hai bảng thay đổi cấu trúc, đặc biệt là trường - Nếu một trong hai bảng thay đổi cấu trúc, đặc biệt là trường quan hệ thì quan hệ vẫn được duy trì, vì thế có thể gây ra những quan hệ thì quan hệ vẫn được duy trì, vì thế có thể gây ra những kết quả saikết quả sai

Page 68: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 6868

Page 69: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 6969

- Không dùng lệnh COPY TO, SORT ON, JOIN ... để tạo ra - Không dùng lệnh COPY TO, SORT ON, JOIN ... để tạo ra

bảng kết quả mà bảng này là bảng kháchbảng kết quả mà bảng này là bảng khách

- Không nên dùng lệnh SUM, AVERAGE theo biểu thức nào đó - Không nên dùng lệnh SUM, AVERAGE theo biểu thức nào đó

của bảng khách.của bảng khách.

- Thường thiết lập quan hệ từ bảng có nhiều bản ghi trùng khoá - Thường thiết lập quan hệ từ bảng có nhiều bản ghi trùng khoá

đến bảng mỗi khoá chỉ có 1 bản ghi duy nhấtđến bảng mỗi khoá chỉ có 1 bản ghi duy nhất

- Lập SET RELATION cho phép thiết lập mối quan hệ bắc cầu, - Lập SET RELATION cho phép thiết lập mối quan hệ bắc cầu,

trong đó một bảng vừa là khách của quan hệ này, vừa là chủ trong đó một bảng vừa là khách của quan hệ này, vừa là chủ

quan hệ khác. quan hệ khác.

- Song, không được đặt quan hệ vòng - Song, không được đặt quan hệ vòng

Ví dụ: A Ví dụ: A B B C C A A

Page 70: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 7070

HUỶ BỎ MỐI QUAN HỆHUỶ BỎ MỐI QUAN HỆ

- Mở một quan hệ mới từ vùng hiện thời đến vùng khác sẽ cắt đứt - Mở một quan hệ mới từ vùng hiện thời đến vùng khác sẽ cắt đứt quan hệ của vùng hiện thời đã có với các vùng khácquan hệ của vùng hiện thời đã có với các vùng khác

- Đứng ở vùng làm việc của bảng chủ ra lệnh SET RELATION TO - Đứng ở vùng làm việc của bảng chủ ra lệnh SET RELATION TO không có tham sốkhông có tham số

- Đóng các bảng- Đóng các bảng

3. KẾT NỐI CÁC BẢNG DỮ LIỆU BẰNG LỆNH JOIN 3. KẾT NỐI CÁC BẢNG DỮ LIỆU BẰNG LỆNH JOIN

- Dùng để tạo ra một bảng thứ ba từ hai bảng đang mở dựa trên một - Dùng để tạo ra một bảng thứ ba từ hai bảng đang mở dựa trên một tiêu chuẩn nào đó đã định trước. Chọn 1 trong 2 bảng đã mở để kết tiêu chuẩn nào đó đã định trước. Chọn 1 trong 2 bảng đã mở để kết nối ở vùng hiện thời, còn bảng kia ở một vùng khác. nối ở vùng hiện thời, còn bảng kia ở một vùng khác.

- Cú pháp:- Cú pháp:

JOIN WITHJOIN WITH <bí danh> <bí danh> TOTO <tên bảng kết quả> <tên bảng kết quả>

[[FIELDSFIELDS <danh sách trường>] [ <danh sách trường>] [FORFOR <biểu thức logic L>] <biểu thức logic L>]

+ Bảng thứ nhất ở vùng hiện thời, bảng thứ hai nhận diện bởi bí + Bảng thứ nhất ở vùng hiện thời, bảng thứ hai nhận diện bởi bí danh sau WITHdanh sau WITH

Page 71: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 7171

- Ví dụ: quản lý sách thư viện có bảng BANDOC và bảng - Ví dụ: quản lý sách thư viện có bảng BANDOC và bảng KHOSACH. Tạo bảng thứ 3 là BDMS gồm trường SDK, KHOSACH. Tạo bảng thứ 3 là BDMS gồm trường SDK, TENSACH, SOTHE và HOTENTENSACH, SOTHE và HOTEN

CLOSE ALLCLOSE ALL

SELECT 2SELECT 2

USE KHOSACH ALIAS KSUSE KHOSACH ALIAS KS

SELECT 1SELECT 1

USE BANDOCUSE BANDOC

JOIN WITH KS TO SACHMUON FIELDS SOTHE, HOTEN, JOIN WITH KS TO SACHMUON FIELDS SOTHE, HOTEN, SDK, KS.TENSACH FOR SDK=KS.SDK SDK, KS.TENSACH FOR SDK=KS.SDK

SELECT 3SELECT 3

USE BDMSUSE BDMS

BROWSEBROWSE

Page 72: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 7272

Page 73: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC7373

4. CẬP NHẬT BẢNG CHÍNH TỪ CÁC BẢNG LIÊN QUAN 4. CẬP NHẬT BẢNG CHÍNH TỪ CÁC BẢNG LIÊN QUAN UPDATEUPDATE

- Một trong những ứng dụng của việc mở nhiều bảng là có thể lấy - Một trong những ứng dụng của việc mở nhiều bảng là có thể lấy dữ liệu từ bảng này cập nhật sang bảng khác. Bảng được cập nhật dữ liệu từ bảng này cập nhật sang bảng khác. Bảng được cập nhật phải được mở ở vùng hiện hành, còn bảng chứa các dữ liệu để lấy phải được mở ở vùng hiện hành, còn bảng chứa các dữ liệu để lấy phải được mở ở một vùng khác với <bí danh>. Để VFP biết được phải được mở ở một vùng khác với <bí danh>. Để VFP biết được cần lấy dữ liệu từ những bản ghi nào của bảng có dữ liệu, sao chép cần lấy dữ liệu từ những bản ghi nào của bảng có dữ liệu, sao chép sang bản ghi hiện hành của bảng cần nhập, chúng ta cần phải xác sang bản ghi hiện hành của bảng cần nhập, chúng ta cần phải xác định một giá trị so khớp. Trường tính giá trị này được gọi là định một giá trị so khớp. Trường tính giá trị này được gọi là <trường khoá> và phải có mặt trong cả hai bảng. <trường khoá> và phải có mặt trong cả hai bảng.

- Cú pháp:- Cú pháp:

UPDATE ONUPDATE ON <trường khoá > <trường khoá > FROMFROM <bí danh> <bí danh>

REPLACEREPLACE <trường 1> <trường 1> WITHWITH <biểu thức 1> <biểu thức 1>

[<trường 2> WITH <biểu thức 2>, ...] [[<trường 2> WITH <biểu thức 2>, ...] [RANDOMRANDOM]]

Page 74: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 7474

Có 2 cách dùng UPDATE:Có 2 cách dùng UPDATE:

a. Dùng UPDATE không có RANDOMa. Dùng UPDATE không có RANDOM

- Đòi hỏi cả hai bảng hiện hành và bảng<bí danh> cần phải - Đòi hỏi cả hai bảng hiện hành và bảng<bí danh> cần phải được sắp xếp vật lý hoặc chỉ mục tăng dần theo <trường được sắp xếp vật lý hoặc chỉ mục tăng dần theo <trường khoá>khoá>

- Nếu không thoả mãn điều kiện, UPDATE không có - Nếu không thoả mãn điều kiện, UPDATE không có RANDOM vẫn làm việc nhưng cho kết quả saiRANDOM vẫn làm việc nhưng cho kết quả sai

b. Dùng UPDATE có RANDOM b. Dùng UPDATE có RANDOM

- Không đòi hỏi bảng <bí danh> phải có thứ tự, nhưng bảng - Không đòi hỏi bảng <bí danh> phải có thứ tự, nhưng bảng hiện hành phải được chỉ mục tăng theo <trường khoá>hiện hành phải được chỉ mục tăng theo <trường khoá>

- Nếu bảng hiện hành không được chỉ mục thì VFP thông - Nếu bảng hiện hành không được chỉ mục thì VFP thông báo lỗi Database is not ordered (dữ liệu không đưọc sắp báo lỗi Database is not ordered (dữ liệu không đưọc sắp xếp), còn nếu chỉ mục không đúng sẽ cho kết quả saixếp), còn nếu chỉ mục không đúng sẽ cho kết quả sai

Page 75: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 7575

- Ví dụ: - Ví dụ:

Trong việc quản lý xuất bản phẩm, giả sử đã biết tình trạng tồn Trong việc quản lý xuất bản phẩm, giả sử đã biết tình trạng tồn

kho đầu tháng, trong tháng có thể nhập, xuất một số hàng. Mỗi kho đầu tháng, trong tháng có thể nhập, xuất một số hàng. Mỗi

lần nhập, xuất đều được ghi nhận lại trong những biên lai tương lần nhập, xuất đều được ghi nhận lại trong những biên lai tương

ứng. Căn cứ vào những biên lai này, có thể tính lại tình trạng ứng. Căn cứ vào những biên lai này, có thể tính lại tình trạng

tồn kho cho đầu tháng kế tiếp.tồn kho cho đầu tháng kế tiếp.

- Giả sử tình trạng tồn kho được cất trong bảng KDXBP gồm hai Giả sử tình trạng tồn kho được cất trong bảng KDXBP gồm hai

trường: MAXBP ghi mã xuất bản phẩm và SOLUONG ghi số trường: MAXBP ghi mã xuất bản phẩm và SOLUONG ghi số

lượng xuất bản phẩm. Các biên lai nhập được cất trong bảng lượng xuất bản phẩm. Các biên lai nhập được cất trong bảng

NHAPXBP. Các biên lai xuất được cất trong bảng XUATXBP NHAPXBP. Các biên lai xuất được cất trong bảng XUATXBP

Page 76: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 7676

CLOSE ALLCLOSE ALLSELECT 2SELECT 2USE NHAPXBP ALIAS NHUSE NHAPXBP ALIAS NHSELECT 3SELECT 3USE XUATXBP ALIAS XUUSE XUATXBP ALIAS XUSELECT 1SELECT 1USE KDXBP USE KDXBP INDEX ON MAXBP TO CMXBPINDEX ON MAXBP TO CMXBPBROWSEBROWSEUPDATE ON MAXBP FROM NH REPLACE SOLUONG UPDATE ON MAXBP FROM NH REPLACE SOLUONG WITH SOLUONG + NH.SOLUONG RANDOMWITH SOLUONG + NH.SOLUONG RANDOMBROWSE BROWSE UPDATE ON MAXBP FROM XU REPLACE SOLUONG UPDATE ON MAXBP FROM XU REPLACE SOLUONG WITH SOLUONG - XU.SOLUONG RANDOM WITH SOLUONG - XU.SOLUONG RANDOM BROWSEBROWSE

Page 77: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 7777

Page 78: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 7878

TÀI LIỆU THAM KHẢO1. Date C.J. (1995), An Introduction to Database Systems, 6th Edition, Addison-Wesley,

Massachusetts.

2. A.J. Fabbri, A.R. Schwab (1999), Quản trị cơ sở dữ liệu, Trần Đức Quang biên dịch, Nxb Thống kê, TP. Hồ Chí Minh.

3. T.J. Toby (2002), Mô hình hóa & Thiết kế cơ sở dữ liệu, Trần Đức Quang biên dịch, Nxb Thống kê, TP. Hồ Chí Minh.

4. Nguyễn Kim Anh (2004), Nguyên lý của các hệ cơ sở dữ liệu, Nxb Đại học quốc gia Hà Nội.

5. Nguyễn Thị Ngọc Mai, Nguyễn Thị Kim Trang, Đoàn Thiện Ngân (2007), Lý thuyết cơ sở dữ liệu, 2 tập, Nxb Lao động - Xã hội, TP. Hồ Chí Minh.

6. Đỗ Trung Tuấn (2004), Cơ sở dữ liệu, Nxb Đại học quốc gia Hà Nội.

7. Nguyễn Tô Thành (1996), Giáo trình FoxPro, 2 tập, Trường Đại học Bách khoa Hà Nội.

8. Nguyễn Tuệ (2007), Nhập môn hệ cơ sở dữ liệu, Nxb Giáo dục, Hà Nội.

9. Nguyễn Văn Tâm, Nguyễn Hữu Bình (2002), Cơ sở dữ liệu quan hệ, Nxb Thống kê, TP. Hồ Chí Minh.

10. Đỗ Quang Vinh (chủ biên) (2010), Hệ quản trị cơ sở dữ liệu Microsoft Visual FoxPro và ứng dụng, xuất bản lần thứ 2, Nxb Đại học Quốc gia Hà Nội.