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

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

Upload: jock

Post on 14-Jan-2016

78 views

Category:

Documents


1 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 VỀ 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 - HUC 22

I - TỔNG QUAN VỀ Microsoft Visual FoxProI - TỔNG QUAN VỀ 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 phân giải 800 x 600, 256 màu hoặc High color 16-bitHigh color 16-bitỔ đĩa CD-ROM/DVDỔ đĩa CD-ROM/DVDChuộtChuộtHệ điều hành WINDOWS XP và Windows Server 2003Hệ điều hành WINDOWS XP và Windows Server 2003Tố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 Microsoft Visual

FoxPro 9FoxPro 9 trên màn hình nền Desktop trên màn hì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ácb. 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 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 menub. Mục chọnb. Mục chọnc. Menu PopUpc. Menu PopUpd. Menu Optiond. Menu Option

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

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

CỬA SỔ LỆNH COMMANDCỬA SỔ LỆNH COMMAND TRỢ GIÚPTRỢ GIÚP HELPHELP3.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 - 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ể.một thao tác 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 <Lệnh VFP> [<phạm vi>] [<FIELDS <danh sách trường>] [<danh sách biểu thức>] sách trường>] [<danh sách biểu thức>] [FOR[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 để chỉ hành động và các phương thức hoạt độngvà các phương thứ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 + 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ẫuđối với các từ khoá 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 5: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

- 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ừ + NEXT <n> thao tác với <n> bản ghi tiếp theo kể từ bản ghi hiện thời bản ghi hiện thời + REST thao tác với các bản ghi kể từ bản ghi hiện + 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ùngthời đến bản ghi cuố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 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 nguyên, thập phân và dấu chấm thập phân

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

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

- 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 7: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

- 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 8: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

+ 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 - Là các phép toán trên các giá trị nhằm sinh ra một giá trị mới một giá trị 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 9: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

- - 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) làm tròn số x với n chữ số thập phânROUND (x,n) là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 MAX(<biểu thức 1>,<biểu thức 2>) cho giá trị lớn nhất

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

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

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

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

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 1010

+ 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) cắt các dấu trắng bên trái xâu sLTRIM(s) cắ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) cắt các dấu trắng ở hai bên xâu sALLTRIM(s) cắ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 biến tất cả các chữ cái trong xâu s

thành chữ hoathành chữ hoaLOWER(s) LOWER(s) biến tất cả các chữ cái trong xâu s biến tất cả các chữ cái trong xâu s

thành chữ nhỏ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ự trả lại giá trị xâu của số x, gồm n ký tự

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

trong xâu strong xâu s

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

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

CHR(n) cho biết ký tự có mã ASCII là nCHR(n) cho 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 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, trong xâu s, nếu không tìm thấy t trong s, hàm trả lại giá trị 0hà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) cho biết giá trị số của năm trong ngày d YEAR(d) cho biết giá trị số của năm trong ngày d MONTH(d) cho biết giá trị số của tháng trong ngày dMONTH(d) cho 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à 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)chủ nhật, 2 là thứ 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 cho tên đầy đủ của tệp

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

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

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

ALIAS([<biểu thức số N>]) chỉ bí danh của tệp dữ liệu 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>đang mở trong vùng làm việc thứ <biểu thức số N>

BOF([<biểu thức số N>]) dùng để kiểm tra xem vị trí con BOF([<biểu thức số N>]) 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ố trỏ có ở đầu tệp dữ liệu trong vùng <biểu thức số N> không?N> không?

EOF([<biểu thức số N>]) dùng để kiểm tra xem vị trí con EOF([<biểu thức số N>]) 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ố trỏ có ở cuối tệp dữ liệu trong vùng <biểu thức số N> không?N> không?

DELETED([<biểu thức số N>]) cho giá trị .T. nếu bản ghi 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> hiện thời trong vùng làm việc thứ <biểu thức số N> bị đánh dấu xoábị đánh dấu xoá

FOUND([<biểu thức số N>]) cho giá trị .T. nếu lệnh tì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 vùng kiếm LOCATE ... CONTINUE, SEEK, FIND trong vùng <biểu thức số N> tìm được một bản ghi<biểu thức số N> tìm được một bản ghi

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

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

RECCOUNT([<biểu thức số N>]) cho biết số bản ghi có RECCOUNT([<biểu thức số N>]) cho biết số bản ghi có trong tệp cơ sở dữ liệu đang mở trong vùng <biểu trong tệp cơ sở dữ liệu đang mở trong vùng <biểu thức số N>thức số N>

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

SELECT() cho số hiệu của vùng làm việc hiện thờiSELECT() cho 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ệcDISKSPACE() DISKSPACE() cho số byte còn trống trên ổ đĩa cho số byte còn trống trên ổ đĩa

hiện thờihiện thờiOS()OS() cho biết hệ điều hành đang sử cho biết hệ điều hành đang sử

dụngdụngVERSION()VERSION() cho biết ấn bản của VFP cho biết ấn bản của VFP

đang sử dụngđang sử dụng

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

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 1414

+ 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> 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>là .T., ngược lại, hàm cho giá trị <biểu thức 2>

BETWEEN(x, a, b) BETWEEN(x, a, b)

cho giá trị .T. nếu x nằm trong khoảng từ a đến bcho 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 ... hoặc

x = ax = ann

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

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

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 - 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 Dsố N, biểu thức logic L, biểu thức ngày tháng D

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

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 1616

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 - 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 đối tượng quản lý và được tổ chức theo một nguyên tắc nhất địnhnguyên tắc nhất định

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

- Bản ghi (Record): Là các thông tin phản ánh về - 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 đối tượng được quản lý

- Mỗi trường nhận một tên, kiểu dữ liệu và có độ - 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 rộng nhất định. Số lượng trường tối đa trong một bảng dữ liệu là 255 trườngmột bảng dữ liệu là 255 trường

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

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

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 ban đầu vào bảng dữ liệu + Nhập bản ghi dữ liệu ban đầ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 SINHVIEN CREATE SINHVIEN

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

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

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

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 1818

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 <Ctrl+N> để xuất hiện hộp thoại New. Chọn mục Table rồi chọn tiếp New File.Table rồi 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

3.3. LIỆT KÊ DANH SÁCH BẢNG DỮ LIỆULIỆT KÊ DANH SÁCH BẢNG DỮ LIỆU:: 3 cách 3 cách

- - DISPLAYDISPLAY

- - LISTLIST

- - BROWSEBROWSE

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

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

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

2 cách khai báo để sử dụng bảng dữ liệu:2 cách khai báo để sử dụng bảng dữ liệu: Cách 1:Cách 1:

Tại khung cửa sổ lệnh, gõ:Tại khung 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 [TO <PRINTER>] [TO FILE <tên tệp>] FILE <tên tệp>]

hoặchoặc

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

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

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

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 - 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.nhập 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, - 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 xảy ra sau khi tệp dữ liệu đã được tạo lập, hoặc trong một chu kỳ xử lýchu kỳ xử lý - Cập nhật có thể là việc thay đổi nội dung của, thay đổi trị - Cập nhật có thể là việc thay đổi nội dung của, thay đổi trị số một trườngsố một trườ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 21: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

+ 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 22: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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ỆUINSERT 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 23: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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 24: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 2424

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 25: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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 26: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

+ 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 27: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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>] [<phạm vi>] [FOR<biểu thức logic L>] [WHILE<biểu thức logic L>] [NOOPTIMIZE] [WHILE<biểu 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 28: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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/ trường>] [FOR<biểu thức logic L>][TYPE] DIF/ MOD/ SDF/ SYLK/ WK1/ WK3/ WKS/ FW2/ PDOX/ WR1/ SDF/ SYLK/ WK1/ WK3/ WKS/ FW2/ PDOX/ WR1/ WRK/ XLS/ XL5/ RPD/ DELIMITED[WITH WRK/ XLS/ XL5/ RPD/ DELIMITED[WITH Delimiter/WITH BLANK / WITH TAB]] [AS <n>]Delimiter/WITH BLANK / WITH TAB]] [AS <n>]

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

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

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 <tên bảng sao lưu cấu trúc> [FIELDS <danh sách trường>]lưu cấu 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 <bảng sao lưu cấu trúc>trúc>

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

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

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 31: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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 32: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

       + 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ì + Đố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 sắp xếp tăng dần khi dùng từ khoá [ASCENDING] hoặc giảm dần khi dùng từ khoá [DESCENING]khi 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à + Đố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]chữ 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 33: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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

Đố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 rất chậm so với INDEX vì phải chép qua - Tốc độ sắp xếp rất 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ì 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 chậm của lệnh SORT không thể hiện rõ, 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 nghìn bản ghi thì tốc độ thực hiện 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.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 - 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ồntương ứ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 - 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ếpSORT tạo ra một tệp dữ liệu mới cùng với tiêu chí sắp xếp

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

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

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ư - 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áchbảng mụ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 35: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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 36: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

3636

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 37: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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 38: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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 39: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 3939

+ 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 40: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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 để - VFP tổ chức cơ chế con trỏ bản ghi (record pointer) dùng để xác định bản ghi hiện thờixác đị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 - Khi mở bảng dữ liệu, con trỏ bản ghi bao giờ cũng đặt ở bản ghi thứ nhất ghi thứ 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, + Di chuyển “ẩn” nằm ngay trong các lệnh như: LIST, DISPLAY ALL, LOCATE/CONTINUE, SCAN, COUNT, DISPLAY ALL, LOCATE/CONTINUE, SCAN, COUNT, AVERACE, SUM, TOTAL AVERACE, SUM, TOTAL

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

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

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í [RECORD] <n> [IN <vùng làm việc n> | <bí danh bảng dữ liệu>]danh bảng dữ liệu>]GOTO TOP | BOTTOM [IN <vùng làm việc n> | <bí danh GOTO TOP | BOTTOM [IN <vùng làm việc n> | <bí danh bảng dữ liệu>]bảng 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 - 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 ghighi hiệ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 42: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

2. LIỆT KÊ DỮ LIỆU2. 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 [NOCONSOLE][TO PRINTER [PROMPT] | TO FILE <tên tệp >] [NOOPTIMIZE]tệp >] [NOOPTIMIZE]

DISPLAYDISPLAY [ OFF] [<phạm vi>] [FIELDS <danh sách [ OFF] [<phạm vi>] [FIELDS <danh sách trường>] [FOR <biểu thức logic L> | WHILE <biểu thức trường>] [FOR <biểu thức logic L> | WHILE <biểu thức logic L>[NOCONSOLE][TO PRINTER [PROMPT] | TO logic L>[NOCONSOLE][TO PRINTER [PROMPT] | TO FILE <tên tệp>] [NOOPTIMIZE]FILE <tên 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 43: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 4343

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

LỆNH CONTINUE LỆNH CONTINUE

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

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

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 - Tìm kiếm ngẫu nhiên bản ghi trong tệp dữ liệu đã được chỉ mụ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 [ORDER <n> | <tên tệp chỉ mục .IDX> [TAG] <tên đính mục> [OF <tên chỉ mục .IDX> [TAG] <tên đính mục> [OF <tên tệp .CDX>]] [ASCENDING | DESCENDING] [IN <vùng tệp .CDX>]] [ASCENDING | DESCENDING] [IN <vùng làm việc n> | <bí danh bảng dữ liệu>]làm việc n> | <bí danh bảng dữ liệu>]

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

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

HÀM SEEK()HÀM SEEK()- Hàm SEEK() cũng thực hiện nhiệm vụ giống như lệnh - 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 để 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 tại của bản ghi đầu tiên có trường khoá trùng 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>. 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ữ (<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> ]])liệu> [,<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ỉ - 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 được 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 điểm quan trọng của một DBMS quản lý và khai thác các 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ệntệp dữ liệu trở nên mềm dẻo và thuận tiện

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

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 4646

- 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 47: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 4747

VI - THỐNG KÊ VI - THỐNG KÊ VÀVÀ TRÍCH LỌC DỮ LIỆU 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>] [<phạm vi>] [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>] [TO <biến bộ nhớ>] [WHILE <biểu 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 Đếm số bản ghi trong bảng dữ liệu thoả mãn <biểu thức logic L>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 [<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 số N>] [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>] [TO <danh sách biến bộ nhớ>] logic L>] [TO <danh 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 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>bảng dữ liệu thoả mãn <biểu thức logic L>

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

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

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 [<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 số>] [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>] [TO <danh sách biến bộ nhớ>] thức logic L>] [TO <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ố 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>trong bảng dữ 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á> <trường khoá> [<phạm vi>] [FIELDS <danh sách trường số>] [FOR [<phạm vi>] [FIELDS <danh sách trường số>] [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>] <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 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á>bản ghi có cùng <biểu thức khoá>

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

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

+ Bảng dữ liệu cần được tính tổng theo nhóm cần + 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) đượ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) theo biểu thức khoáhoặc chỉ mục (INDEX) 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 + 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ómkhoá> hay còn gọ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 + Bước 2: mở bảng dữ liệu đã sắp xếp theo <biểu thức khoá>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 - Mở bảng dữ liệu kết quả: USE <tên bảng dữ liệu kết quả>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>] [<phạm vi>] [<Danh sách biểu thức>] [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>] [TO <danh sách biến bộ nhớ>]L>] [TO <danh sách biến bộ nhớ>]

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

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

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

trong đó:trong đó:<Danh sách biểu thức> bao gồm danh sách các <Danh sách biểu thức> bao gồm danh sách các hàm: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 51: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 5151

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 [FIELDS<Danh sách trường>] [FOR <biểu thức logic L>] [WHILE <biểu thức logic L>] 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ữ 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 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 logic L> và <phạm vi> thoả mãn <biểu thức logic L> và những trường trong <danh sách trường>những trường trong <danh sách trường>

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

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

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ó 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ệ với 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 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 trường thực 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 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 53: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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 - 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 việc mở bảng dữ liệu, cho phép tạo ra 3276732767 vùng vùng làm việc được đánh số từ 1 đến 32767 làm việc được đánh số từ 1 đến 32767 - Trên một vùng làm việc ở một thời điểm chỉ có một - 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 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ạibả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 - 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: bảng một vùng 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ữ <Số hiệu vùng> là vùng muốn chọn để mở bảng dữ liệu cho phép từ 1 ÷ 32767liệu cho phép từ 1 ÷ 32767

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

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

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 5454

+ Lệnh SELECT 0 chọn vùng làm việc có số vùng + 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ệuthấp nhất chư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, - 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 VFP cho phép gán bí danh cho bảng ngoài tên khai sinh bằng lệnh: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 - 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 ký tự sau đó là số hoặc ký tự, không chứa dấu cách và dài 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 - Các bảng được mở đồng thời phải có bí danh khác nhau. khác nhau. - Nếu không gán bí danh cho bảng dữ liệu khi mở - 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:thì VFP tự đặt tên bí danh theo quy tắc:

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

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

+ Lấy tên bảng làm tên bí danh. Nếu tên bảng thoả + 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í danhmãn tên biến và khô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 vùng làm việc đầu tiên, các vùng còn lại là tiên, các vùng 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ó - Khi đã mở bảng dữ liệu ở vùng làm việc nào đó có thể dùng lệnh 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 - Tại vùng hiện thời có thể mở bảng dữ liệu ở vùng khác bằng lệnh: 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 - 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á bảng có thể mở ở nhiều vùng khác bằng từ khoá AGAIN: AGAIN: USEUSE <tên bảng> <tên bảng> AGAINAGAIN [ [ALIASALIAS <bí danh>] <bí danh>]

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

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

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 - 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 liên quan đang mở của chúng như các tệp .CDX, .IDX, .FMT, .FPTtệp .CDX, .IDX, .FMT, .FPT- Đặc biệt có 32767 con trỏ bản ghi để quản lý 32767 - Đặ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 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 ảnh hưởng đế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 việc từ vùng này 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ỏ bản 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ở ghi của các vùng đó, kể cả khi 1 bảng dữ liệu được mở ở nhều vùng khác nhauở nhều vùng khác nhau Vì vậy, nếu không thiết lập mối quan hệ nào giữa 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 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 lập khác nhau là hoàn toàn độc lập

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

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

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 - Để 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 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 việc hiện thờithường xuyên thay đổi vùng làm việc hiện thời- Lệnh SELECT ngoài công dụng xác định vùng làm - 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ừ 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ácvù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+ SELECT <số hiệu vùng làm việc từ 1÷÷ 32767> 32767>+ SELECT <Bí danh ngầm định A + SELECT <Bí danh ngầm định A ÷÷ J> 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 58: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

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

- Các bảng được mở ở các vùng làm việc khác nhau - 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 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 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 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ệ 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 thiết lập lại mối quan hệđảo ngược chúng ta phải 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 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 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 đó lại trở về trạng thái độc lậpthi hành xong các bảng đó lại trở về trạng thái độc lập

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

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

2. THIẾT LẬP MỐI QUAN HỆ BẰNG LỆNH 2. THIẾT LẬP MỐI QUAN HỆ BẰNG LỆNH SET RELATIONSET 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 - 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 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 quan hệ giữa chúng bằng 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 cơ chế tự động lật 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 với sự 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ủ). 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ơ 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 đã được xác định từ trước giữa bảng chủ và bảng kháchkhách- Cú pháp:- Cú pháp:SET RELATIONSET RELATION [<trường khóa 1> [<trường khóa 1> INTOINTO <số hiệu <số hiệu vùng 1>| <bí danh 1>] [,< trường khóa 2> INTO <bí vùng 1>| <bí danh 1>] [,< trường khóa 2> INTO <bí danh 2> ...] [IN <số hiệu vùng>| <bí danh>] danh 2> ...] [IN <số hiệu vùng>| <bí danh>] [ADDITIVE][ADDITIVE]

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

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 6060

- 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à - 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ó trường quan hệ thì quan hệ vẫn được duy trì, vì thế có thể gây ra những kết quả saithể gây ra những kết quả sai

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

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

- Không dùng lệnh COPY TO, SORT ON, JOIN ... để - 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áchtạo ra bả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 - Không nên dùng lệnh SUM, AVERAGE theo biểu thức nào đó của bảng khách.thức nào đó của bảng khách.- Thường thiết lập quan hệ từ bảng có nhiều bản - 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 ghi trùng khoá đến bảng mỗi khoá chỉ có 1 bản ghi duy nhấtduy nhất- Lập SET RELATION cho phép thiết lập mối quan - 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 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ủ quan hệ khác. quan hệ này, vừa là chủ 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 62: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 6262

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 - 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 sẽ cắt đứt quan hệ của vùng hiện thời đã có với các vùng khácvùng khác- Đứng ở vùng làm việc của bảng chủ ra lệnh SET - Đứng ở vùng làm việc của bảng chủ ra lệnh SET RELATION TO không có tham sốRELATION TO 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ù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 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 nối ở vùng hiện thời, còn 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. 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 <biểu thức logic L>]L>]+ Bảng thứ nhất ở vùng hiện thời, bảng thứ hai nhận + Bảng thứ nhất ở vùng hiện thời, bảng thứ hai nhận diện bởi bí danh sau WITHdiện bởi bí danh sau WITH

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

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 6363

- Ví dụ: quản lý sách thư viện có bảng BANDOC và - 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à SACHMUON gồm bảng KHOSACH. Tạo bảng thứ 3 là SACHMUON gồm trường SDK, TENSACH, SOTHE và HOTENtrường SDK, TENSACH, SOTHE và HOTENCLOSE ALLCLOSE ALLSELECT 2SELECT 2USE KHOSACH ALIAS KSUSE KHOSACH ALIAS KSSELECT 1SELECT 1USE BANDOCUSE BANDOCJOIN 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 3USE SACHMUONUSE SACHMUONBROWSEBROWSE

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

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

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 - 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 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 phải được mở ở vùng hiện 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ở 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 cần ở 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, 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, 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 định một giá trị so khớ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à <trường khoá> và 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. 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 65: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

ĐỖ QUANG VINH - HUCĐỖ QUANG VINH - HUC 6565

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í - Đò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ỉ 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 khoá>mục tăng dần theo <trường khoá>- Nếu không thoả mãn điều kiện, UPDATE không - 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ả saicó RANDOM 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ự, - 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 nhưng bảng hiện hành phải được chỉ mục tăng theo <trường khoá>theo <trường khoá>- Nếu bảng hiện hành không được chỉ mục thì - 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ữ VFP thông 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 liệu không đưọc sắp xếp), còn nếu chỉ mục không đúng sẽ cho kết quả saikhông đúng sẽ cho kết quả sai

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

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

- Ví dụ: trong việc quản lý xuất bản phẩm, giả sử - Ví dụ: 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 đã 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 lần nhập, xuất 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 đề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 ứ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ình trạng 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 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 KDXBP gồm hai trường: MAXBP ghi mã xuất bản phẩm và SOLUONG ghi số lượng xuất bản phẩm. 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 NHAPXBP. 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 Các biên lai xuất được cất trong bảng XUATXBP

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

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

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 68: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  Microsoft Visual FoxPro

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

KẾT THÚC !KẾT THÚC !

TRÂN TRỌNG CÁM ƠN !TRÂN TRỌNG CÁM ƠN !