Ngôn ngữ SQL

19 1K 6
Ngôn ngữ SQL

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Ngôn ngữ SQL

SQL- Những kiến thức GIỚI THIỆU Ngôn ngữ truy vấn có cấu trúc (SQL) ngơn sở liệu (CSDL) chuẩn công nghiệp công cụ quản trị liệu Microsoft (Microsoft jet database engine) sử dụng SQL sử dụng để tạo đối tượng truy vấn (QueryDef objects), đối số cho phương thức mở tập hợp ghi (OpenRecordset method), thuộc tính nguồn ghi (RecordSource property) điều khiển liệu (data control) Nó dùng với phương thức thi hành (Execute method) để trực tiếp tạo thao tác (jet databases), tạo SQL PassThrough truy vấn để thao tác CSDL khách chủ từ xa (remote client/server databases) Chương bàn tới cấu trúc SQL, cách thức sử dụng cho việc tạo, bảo trì sửa đổi CSDL Chúng ta nói tới xây dựng công dụng truy vấn SQL để tạo đối tượng tập hợp ghi (Recordset objects), để chọn, xếp, lọc cập nhật liệu bảng sở Hơn nữa, chương xem xét cách thức tối ưu hoá truy vấn SQL mặt tốc độ hiệu Cuối cùng, bàn tới khác Microsoft Jet SQL ANSI SQL cách cụ thể SQL LÀ GÌ ? SQL ngơn ngữ lập trình CSDL có nguồn gốc liên quan mật thiết tới phát minh mơ hình CSDL quan hệ E.F.Codd vào đầu năm 70 Tiền thân SQL ngơn ngữ Sequel, lý SQL thường phát âm “sequel” “ess cue ell”, hai cách phát âm chấp nhận SQL ngày phát triển rộng trở thành ngôn ngữ chuẩn cho CSDL quan hệ, định nghĩa chuẩn ANSI Hầu hết thi hành SQL biến đổi nhỏ từ SQL chuẩn, bao gồm phiên Jet database engine hỗ trợ Những khác nhắc tới cuối chương, hầu hết cấu trúc chức ngôn ngữ quán nhà phát triển hệ quản trị CSDL Nếu bạn sử dụng thi hành SQL, bạn thấy khơng khó khăn chuyển sang Microsoft Jet SQL SQL vs Navigation Như đề cập phần đầu tài liệu, Mircosoft Jet database engine cung cấp hai phương thức tách biệt để hoàn tất hầu hết tác vụ CSDL: - Một mơ hình điều hướng dựa cở sở dịch chuyển qua lại ghi - Một mơ hình quan hệ dựa truy vấn hỏi có cấu trúc (SQL) Mơ hình điều hướng bao gồm thuộc tính phương thức mô tả “Tạo sửa đổi CSDL” (“Creating and Modifying Databases”) “Thao tác với ghi trường” (“Working with Records and Fields”) Mơ hình quan hệ nói bàn tới chương Những lập trình viên không quen thuộc với hệ quản trị sở liệu hướng file dBASE, Foxpro, Paradox cảm thấy dễ chịu bắt đầu với phương thức điều hướng thảo luận chương trước Tuy nhiên, hầu hết trường hợp phương thức SQL với vai trò tương đương tỏ hiệu hơn, nói chung chúng nên dùng cho nơi tính hiệu xem quan trọng Hơn SQL có lợi điểm giao tiếp mức chuẩn công nghiệp CSDL, nên hiểu biết lệnh SQL cho phep bạn truy cập thao tác với diện rộng sản phẩm CSDL từ nhà phát triển khác CÁC THÀNH PHẦN CỦA SQL Ngôn ngữ SQL bao gồm lệnh, mệnh đề, toán tử, hàm tổng hợp (hàm nhóm - aggregate functions) Những thành phần kết hợp vào phát biểu (statements) dùng để tạo, cập nhật, thao tác CSDL Những mục sau mô tả thành tố cách ngắn gọn, phần lại chương đưa cho bạn ví dụ cụ thể cơng dụng chúng Chú ý: Những mục sau lệnh từ khố dùng thường xun nhất, khơng phải tất Để có tham khảo hồn chỉnh danh sách từ khố SQL, tìm kiếm “SQL” Books Online 1.Lệnh SQL: Giống mơ hình điều hướng DAO (Data Access Object), SQL cung cấp hai phần, ngôn ngữ định nghĩa liệu (DDL - Data Definition Language) ngôn ngữ thao tác liệu (DML - Data Manipulation Language) Tuy có vài phần trùng lặp, câu lệnh DDL cho phép bạn tạo định nghĩa CSDL, trường, mục mới, câu lệnh DML để bạn xây dựng truy vấn, xếp, lọc, trích liệu từ CSDL DDL Các câu lệnh DDL SQL biểu thức xây dựng chung quanh mệnh đề sau: CREATE Dùng để tạo bảng, trường mục DROP Dùng để xoá bảng mục khỏi CSDL ALTER Dùng để sửa đổi bảng cách thêm trường, thay đổi định nghĩa trường DML Các câu lệnh DML biểu thức xây dựng dựa mệnh đề sau: SELECT Dùng để truy vấn CSDL để lấy ghi thoả mãn tiêu chuẩn INSERT Dùng để chèn nhóm liệu vào CSDL thông qua thao tác UPDATE Dùng để thay đổi giá trị trường, ghi cụ thể DELETE Dùng để loại bỏ ghi khỏi CSDL 2.Mệnh đề SQL: Mệnh đề điều kiện thay đổi dùng để xác định liệu bạn muốn chọn, muốn thao tác Bảng sau liệt kê mệnh đề bạn dùng FROM Liệt kê danh sách bảng mà ta cần lấy ghi từ WHERE Xác định điều kiện mà ghi chọn phải đáp ứng GROUP BY Dùng để nhóm ghi chọn thành nhóm riêng biệt HAVING Dùng để đưa điều kiện cho nhóm ORDER BY Dùng để xếp ghi chọ theo thứ tự 3.Những tốn hạng SQL: Có hai loại tốn hạng SQL: toán hạng logic toán hạng so sánh Toán hạng logic: Toán hạng logic dùng để nối biểu thức, thường phạm vi mệnh đề WHERE Ví dụ như: SELECT * FROM MY_TABLE WHERE Condition1 AND Condition2; Những toán tử logic bao gồm: AND, OR, NOT Toán hạng so sánh: Toán hạng so sánh dùng để so sánh tương đối giá trị hai biểu thức để xác định hoạt động thực Ví dụ: SELECT * FROM Publishers WHERE PubID = 5; Những toán tử so sánh bao gồm: < bé lớn >= lớn = khác 4.Hàm tổng hợp (aggregate functions) Hàm tổng hợp (hàm nhóm) dùng phạm vi mệnh đề SELECT nhóm ghi để trả lại giá trị Ví dụ, hàm AVG trả lại giá trị trung bình tất giá trị trường cụ thể Bảng sau liệt kê danh sách hàm tổng hợp AVG Trả lại giá trị trung bình trường COUNT Trả lại số ghi chọn SUM Hàm tính tổng giá trị trường cụ thể MAX Hàm trả giá trị cực đại trường MIN Hàm trả giá trị cực tiểu trường NHỮNG THAO TÁC DLL DDL bao gồm số lệnh bạn dùng để tạo bảng mục, sửa đổi bảng cách thêm loại bỏ cột mục Những câu lệnh định nghĩa liệu dùng với Jet database; Chúng không hỗ trợ cho CSDL định dạng Chú ý: Để dùng câu lệnh DDL, truy vấn khơng trả lại tập ghi, đóng ngoặc kép sử dụng chúng đối số phương thức thi hành CSDL hay đối tượng truy vấn (QueryDef object) ví dụ sau: MyDB.Execute “CREATE TABLE Employees ([First Name] TEXT, [Last_ Name] TEXT)”; Để dùng câu lệnh trả lại ghi (như SELECT), dùng biểu thức đối số nguồn phương thức mở tập ghi (OpenRecordset method), ví dụ sau: MyDB.OpenRecordset (“SELECT * FROM Titles WHERE Au_ID = 5”, _ dbOpenDynaset); 1.Tạo bảng: Để tạo bảng CSDL, dùng câu lệnh CREATE TABLE Một câu lệnh hoàn chỉnh nhận đối số tên bảng, tên trường, kiểu liệu trường độ rộng trường Ví dụ sau tạo bảng có tên “Employees”, có hai trường kiểu TEXT với độ rộng 25: CREATE TABLE Employees ([First Name] TEXT(25), [Last Name] TEXT(25)); Thêm xoá cột: Bạn thêm, sửa đổi xố cột với câu lệnh ALTER TABLE Ví dụ, câu lệnh sau thêm trường kiểu TEXT có độ rộng 25 tên “Notes” vào bảng Employees: ALTER TABLE Employees ADD COLUMN Notes TEXT(25); Để loại bỏ cột, dùng từ khố DROP Ví dụ loại bỏ cột có tên “Notes” vừa thêm lúc nãy: ALTER TABLE Employees DROP COLUMN Notes; Để sửa đổi trường, trước tiên bạn phải xố nó, sau thêm trường với tên cũ Ví dụ sau tăng độ rộng trường “Notes”: ALTER TABLE Employees DROP COLUMN Notes; ALTER TABLE Employees ADD COLUMN Notes TEXT(30); Chú ý: Dùng ALTER TABLE, bạn thêm xố trường thời điểm 2.Tạo xoá mục: Có ba cách khác để tạo mục: - Lúc bắt đầu tạo bảng với câu lệnh CREATE TABLE - Với câu lệnh CREATE INDEX - Với câu lệnh ALTER TABLE Mặc dầu ba cách cho kết tương tự, có khác điểm khác Nếu bạn muốn thêm khoá ngoại (foreign key) ép buộc toàn vẹn tham chiếu (enfore referential integrity), bạn phải dùng mệnh đề ràng buộc (CONSTRAINT clause) câu lệnh CREATE TABLE ALTER TABLE Đôi người ta muốn tạo bảng ban đầu khơng có mục, tiếp thiết kế tham số mục sau dùng mẫu bảng Với tình này, bạn nên dùng CREATE TABLE để tạo mẫu bảng khơng có mục, sau thêm mục với câu lệnh CREATE INDEX ALTER TABLE Tạo mục với câu lệnh CREATE TABLE Khi bạn tạo bảng, bạn tạo mục cho cột riêng rẽ, hai nhiều cột, dùng mệnh đề SQL CONSTRAINT (từ khoá CONSTRAINT bắt đầu định nghĩa số) Ví dụ sau minh hoạ cách tạo bảng với ba trường có mục: CREATE TABLE Employees ([First Name] TEXT(25), [Last Name] TEXT(25), _ [Date of Birth] DATETIME, CONSTRAINT EmployeesIndex UNIQUE _ ([First Name], [Last Name], [Date of Birth])); Để đánh mục với cột, bạn đặt mệnh đề CONSTRAINT vào mô tả cột Ví dụ, để đánh mục trường “Date of Birth”, bạn dùng câu lệnh CREATE TABLE sau đây: CREATE TABLE Employees ([First Name] TEXT(25), [Last Name] TEXT(25), _ [Date of Birth] DATETIME CONSTRAINT EmployeesIndex PRIMARY); Sự khác đánh mục cho nhiều trường cho trường là: cho trường đơn, từ khoá CONSTRAINT bắt đầu định nghĩa mục không bị tách biệt với trường cuối dấu phẩy mà sát sau kiểu liệu trường đánh mục Tạo mục với câu lệnh CREATE INDEX Bạn dùng mệnh đề CREATE INDEX để thêm mục Ví dụ sau đưa kết với ví dụ trước, ngoại trừ việc dùng CREATE TABLE thay cho ALTER TABLE CREATE UNIQUE INDEX MyIndex ON Employees ([Date of Birth]); Trong mệnh đề tuỳ chọn WITH, bạn ép buộc liệu với ràng buộc PRIMARY, có nghĩa trường mục chính; DISALLOW NUL, nghĩa trường khơng bị bỏ trống; IGNORE NULL, có nghĩa ghi khơng đánh mục trường để trống Ví dụ sau thêm mệnh đề WITH vào ví dụ trước, khơng ghi thêm vào bảng mà cột số bảo hiểm xã hội bị bỏ trống: CREATE UNIQUE INDEX MyIndex ON Employees (SSN) _ WITH DISALLOW NULL; Chú ý: Khơng dùng từ khố PRIMARY bạn tạo mục bảng mà bảng tồn khố (Primary key); Nếu bạn vi phạm điều hệ thống báo lỗi Bạn dùng CREATE INDEX để tạo đặc tả mục bảng mà chưa tồn mục Để tạo mục thế; bạn không cần cho phép truy cập tới máy chủ xa, CSDL xa không nhận biết hay không ảnh hưởng bới mục Bạn dùng cú pháp cho bảng kết nối bảng gốc Điều đặc hữu dụng tạo mục bảng thường đọc (read only) thiếu mục Tạo mục với câu lệnh ALTER TABLE Bạn thêm mục cho bảng tồn cách dùng câu lệnh ALTER TABLE, dùng cú pháp ADD CONSTRAINT Ví dụ sau thêm mục cho trường “SSN”: ALTER TABLE Employees ADD CONSTRAINT MyIndex _ PRIMARY (SSN); Bạn thêm mục cho nhiều trường bảng cách dùng câu lệnh ALTER TABLE giống sau: ALTER TABLE Employees ADD CONSTRAINT NameIndex _ UNIQUE ([Last Name], [First Name], SSN); Mệnh đề CONSTRAINT toàn vẹn tham chiếu (Referential Integrity) Một ràng buộc mục Bạn dùng mệnh đề CONSTRAINT để tạo xoá mục với câu lệnh CREATE TABLE ALTER TABLE, phần trước Mệnh đề CONSTRAINT cho phép bạn định nghĩa khố khoá ngoại, định nghĩa quan hệ ép buộc tồn vẹn tham chiếu Để biết thêm thơng tin quan hệ toàn vẹn tham chiếu, xem “Tạo sửa đổi CSDL” (“Creating and Modifying Databases”) Có hai loại mệnh đề CONSTRAINT: Một để tạo mục cho trường đơn để tạo mục cho nhiều trường Cú pháp mục trường là: CONSTRAINT name {PRIMARY KEY | UNIQUE | REFERENCES foreigntable [(foreginfield1, foreignfield2)]} Cú pháp cho mục nhiều trường là: CONSTRAINT name {PRIMARY KEY (primary1[,primary2[, ]]) | UNIQUE (unique1[,unique2[, ]]) | FOREIGN KEY (ref1[,ref2[, ]]) REFERENCES foreigntable [(foreignfield1[,foreignfield2[, ]])}; Sau đối số áp dụng cho hai loại trên: name : Tên mục tạo primary1, primary2 : Tên trương hay trường định làm khố unique1, unique2 : Tên trường hay trường định làm khố khơng lặp ref1, ref2 : Tên trường trường khố ngồi tham chiếu tới trường, số trường bảng khác foreigntable Tên bảng chứa trường xác định foreignfield foreignfield1, foreignfield2: Tên trường số trường bảng xác định ref1, ref2 Dùng CONSTRAINT, bạn gán cho trường loại mục sau: - UNIQUE – Chỉ định trường trường có giá trị khơng lặp Điều có nghĩa hai ghi bảng khơng có giá trị trường Bạn ràng buộc trường danh sách trường duy (unique) Nếu nhiều trường định không lặp, giá trị kết hợp trường phải nhất, dầu hai số ghi có giá trị trường nhóm trường - PRIMARY KEY – Chỉ định một tập trường bảng tạo thành khố Tất giá trị khố phải nhất, có khố cho bảng Nếu bạn thiết lập khố cho bảng tồn khố hệ thống báo lỗi - FOREIGN KEY – Xác định trường khố ngồi Nếu khố bảng ngồi có nhiều trường, bạn phải dùng định nghĩa cho mục nhiều trường, liệt kê tất trường tham chiếu, tên bảng, tên bảng ngoài, tên trường tham chiếu bảng theo thứ tự liệt kê danh sách trường tham chiếu Nếu trường tham chiếu khố bảng ngồi, bạn khơng cần định trường tham chiếu mà Jet engine ngầm định khố bảng ngồi trường tham chiếu Ví dụ, để thêm mục cho bảng Titles CSDL Biblio.mdb, bạn dùng câu lệnh sau đây: ALTER TABLE Titles ADD CONSTRAINT MyIndex _ FOREIGN KEY (PubID) REFERENCES Publishers (PubID); Nhớ rằng, cách dùng từ khoá FOREIGN KEY, Chúng ta thiết lập quan hệ trường PubID bảng Titles (khố ngồi) trường PubID bảng Publishers (khố chính) Mối quan hệ ràng buộc Jet engine, thể bạn dùng phương thức CreateRelation mơ tả "Tạo sửa đổi CSDL" PHẦN NGƠN NGỮ THAO TÁC TRÊN DỮ LIỆU - DML Phần ngôn ngữ thao tác liệu (DML - Data Manipulation Languague) dùng để lấy ghi bảng, cập nhật, thêm, xoá ghi bảng Có số câu lệnh hỗ trợ tác vụ này, phần lớn có cấu trúc câu lệnh SELECT Truy vấn chọn: Sử dụng câu lệnh SELECT để lấy ghi từ CSDL tập hợp ghi, lưu trử chúng đối tượng tập ghi (Recordset object) ứng dụng bạn thao tác tập ghi hiển thị, thêm, thay đổi xoá cần thiết ứng dụng bạn hiển thị, sinh báo cáo từ liệu SELECT thường từ câu lệnh SQL Hầu hết câu lệnh SELECT SELECT INTO Bạn dùng câu lệnh SELECT SQL thuộc tính đối tượng truy vấn (QueryDef object), thuộc tính RecordSource điều khiển liệu (data control), đối số cho phương thức OpenRecordset câu lệnh SELECT không thay đổi liệu CSDL; chúng lấy liệu từ CSDL Dạng tổng quát câu lệnh SELECT là: SELECT fieldlist FROM tablenames IN databasename WHETE searchconditions GROUP BY fieldlist HAVING group criteria ORDER BY fieldlist WITH OWNERACCESS OPTION Mỗi phần câu lệnh đại diện cho mệnh đề bàn đến phần sau: Truy vấn đơn giản: Dạng đơn giản câu lệnh SELECT là: SELECT * FROM tablename; Ví dụ, truy vấn chọn sau trả lại tất cột tất ghi bảng Employees: SELECT * FROM Employees; Dấu cho biết tất trường bảng chọn Bạn định số trường định Khi hiển thị, liệu cột hiển theo thứ tự chúng liệt kê, bạn thay đổi lại thứ tự cho dễ đọc: SELECT [First Name], [Last Name] FROM Employees; Chỉ định nguồn liệu chọn: Một câu lệnh SELECT ln có mệnh đề FROM, cho biết danh sách bảng ta cần lấy ghi từ Nếu trường tồn nhiều bảng mệnh đề FROM, đặt trước chúng tên trường dấu chấm Trong ví dụ sau, trường Department có hai bảng Employees Supervisors Câu lệnh chọn trường Department bảng Employees SupvName từ bảng Supervisors: SELECT Employees Department, SupvName _ FROM Employees, Supervisors _ WHERE Employees.Department = Supervisors.Department; Khi mệnh đề FROM liệt kê nhiều bảng, thứ tự chúng không quan trọng Xác định bảng từ CSDL bên ngồi Đơi khi, bạn cần thiết tham chiếu tới bảng CSDL bên ngồi mà cơng cụ quản trị CSDL (Microsoft Jet database engine) kết nối tới, CSDL dBASE, Paradox Jet database bên ngồi Bạn làm điều mệnh đề tuỳ chọn IN Mệnh đề IN thường xuất sau tên bảng mệnh đề FROM, dùng SELECT INTO INSERT INTO, đích CSDL ngồi Chú ý: Bạn IN để kết nối CSDL thời điểm Trong số trường hợp, đối số đường dẫn đề cập tới thư mục chứa CSDL Ví dụ, làm việc với dBASE, Foxpro, Paradox, tham số đường dẫn thư mục chứa file có DBF DB Tên bảng bắt nguồn từ đích biểu thức bảng Để xác định Jet database, thêm dấu chấm phẩy sau tên, đóng lại dấu trích đơn dấu ngoặc kép Ví dụ: ‘dBASE IV;’ Bạn dùng từ khố DATABASE để định CSDL ngồi Ví dụ, hai dòng sau bảng; SELECT * FROM Table IN “” [dBASE IV; _ DATABASE=C:\DBASE\DATA\SALES;]; SELECT * FROM Table IN “C:\DBASE\DATA\SALES” _ “dBASE IV;” Chú ý: Để nâng hiệu dễ sử dụng, thường người ta dùng bảng kết nối thay cho mệnh đề IN Để biết thêm thông tin bảng kết nối, xem “Working with Records and Fields” “Accessing External Data” Biệt danh cột Khi đối tượng Recordset tạo từ câu lệnh SELECT, tên cột bảng trở thành tên trường đối tượng Recordset Nếu bạn muốn tên khác đi, dùng mệnh đề AS Ví dụ sau dùng “DOB” biệt danh trường [Date of Birth] bảng Employees: SELECT [Date of Birth] AS DOB FROM Employees; Bất bạn dùng truy vấn trả lại tên trường nhập nhằng trùng tên trường, bạn phải dùng mệnh đề AS để cung cấp tên khác cho trường Ví dụ sau dùng bó danh “Head Count” để gán kết đếm tập ghi: SELECT COUNT(EmployeeID) AS [Head Count] FROM Employees; Sử dụng biến Visual Basic câu lệnh SQL Trong chương trình Visual Basic, bạn tạo câu lệnh SELECT ứng dụng bạn cách ghép biến cục vào câu lệnh cần để chọn, xếp, lọc liệu yêu cầu ứng dụng bạn Ví dụ bạn có điều khiển TextBox (TitleWanted) chứa tên tiêu đề bạn muốn lấy tất sách bảng Titles có nhan đề nhan đề hộp TextBox, bạn tạo câu lệnh SQL bao gồm giá trị thời hộp TextBox Nhưng nhớ SQL đóng TitleWanted dấu trích đơn (‘’): Set Rst = Db.OpenRecordset(“SELECT * FROM Titles “ _ & “WHERE Title = ‘” & TitleWanted.Text & “’”) 1.Lọc xếp kết truy vấn: SQL cung cấp số từ khóa xác nhận mệnh đề tuỳ chọn giúp bạn thuận tiện việc hạn chế xếp kết Phần sau thảo luận tiện dụng Chỉ dẫn DISTINCT Để bỏ qua ghi trùng nhau, dùng từ khoá DISTINCT Nếu dùng, giá trị trường hay nhóm trường chọn câu lệnh SELECT Ví dụ, Có vài nhân viên liệt kê bảng Employees có họ Nếu hai ghi có nội dung trường “Last Name” Smith câu lệnh sau trả lại ghi có nội dung Smith: SELECT DISTINCT [Last Name] FROM Employees; Nếu bỏ từ khố DISTINCT truy vấn trả lại nhiều giá trị Smith Kết tập hợp ghi truy vấn dùng DISTINCT không cho phép cập nhật không phản ánh thay đổi sau người dùng khác Chỉ dẫn TOP Để trả lại số ghi định đầu cuối phạm vi ghi Dùng dẫn TOP Giả sử bạn muốn lấy tên 25 sinh viên đầu lớp tốt nghiệp năm 1994: SELECT TOP 25 [First Name], [Last Name] FROM Students _ WHERE [Graduation Year] = 1994 _ ORDER BY [Grade Point Average] DESC; Nếu bạn không dùng mệnh đề ORDER BY, truy vấn trả lại 25 ghi tuỳ ý bảng Students thoả mãn điều kiện mệnh đề WHERE Bất bạn dùng truy vấn trả lại tên trường nhập nhằng trùng tên trường, bạn phải dùng mệnh đề AS để cung cấp tên khác cho trường Ví dụ sau dùng bó danh “Head Count” để gán kết đếm tập ghi: SELECT COUNT(EmployeeID) AS [Head Count] FROM Employees; Sử dụng biến Visual Basic câu lệnh SQL Trong chương trình Visual Basic, bạn tạo câu lệnh SELECT ứng dụng bạn cách ghép biến cục vào câu lệnh cần để chọn, xếp, lọc liệu yêu cầu ứng dụng bạn Ví dụ bạn có điều khiển TextBox (TitleWanted) chứa tên tiêu đề bạn muốn lấy tất sách bảng Titles có nhan đề nhan đề hộp TextBox, bạn tạo câu lệnh SQL bao gồm giá trị thời hộp TextBox Nhưng nhớ SQL đóng TitleWanted dấu trích đơn (‘’): Set Rst = Db.OpenRecordset(“SELECT * FROM Titles “ _ & “WHERE Title = ‘” & TitleWanted.Text & “’”) 1.Lọc xếp kết truy vấn: SQL cung cấp số từ khóa xác nhận mệnh đề tuỳ chọn giúp bạn thuận tiện việc hạn chế xếp kết Phần sau thảo luận tiện dụng Chỉ dẫn DISTINCT Để bỏ qua ghi trùng nhau, dùng từ khoá DISTINCT Nếu dùng, giá trị trường hay nhóm trường chọn câu lệnh SELECT Ví dụ, Có vài nhân viên liệt kê bảng Employees có họ Nếu hai ghi có nội dung trường “Last Name” Smith câu lệnh sau trả lại ghi có nội dung Smith: SELECT DISTINCT [Last Name] FROM Employees; Nếu bỏ từ khố DISTINCT truy vấn trả lại nhiều giá trị Smith Kết tập hợp ghi truy vấn dùng DISTINCT không cho phép cập nhật không phản ánh thay đổi sau người dùng khác Chỉ dẫn TOP Để trả lại số ghi định đầu cuối phạm vi ghi Dùng dẫn TOP Giả sử bạn muốn lấy tên 25 sinh viên đầu lớp tốt nghiệp năm 1994: SELECT TOP 25 [First Name], [Last Name] FROM Students _ WHERE [Graduation Year] = 1994 _ ORDER BY [Grade Point Average] DESC; Nếu bạn không dùng mệnh đề ORDER BY, truy vấn trả lại 25 ghi tuỳ ý bảng Students thoả mãn điều kiện mệnh đề WHERE Chỉ dẫn TOP không chọn lựa ghi Trong ví dụ, ghi thứ 25 thứ 26 có hạng truy vấn trả lại 26 ghi Bạn dùng từ khố PERCENT để trả lại số phần trăm ghi đầu hay cuối tuỳ thuộc vào mệnh đề ORDER BY Giã sử thay 25 sinh viên, bạn muốn 10 phần trăm sinh viên lớp SELECT TOP 10 PERCENT [First Name], [Last Name] _ FROM Students _ WHERE [Graduation Year] = 1994 _ ORDER BY [Grade Point Average] DESC; Mệnh đề WHERE Mệnh đề WHERE xác định ghi từ bảng liệt kê mệnh đề FROM Microsoft Jet Database engine chọn ghi thoả mãn điều kiện liệt kê mệnh đề WHERE Nếu bạn khơng có mệnh đề WHERE, truy vấn trả lại tất dòng từ bảng chọn Nếu bạn bảng truy vấn khơng có mệnh đề WHERE mệnh đề kết nối JOIN, truy vấn bạn trả lại kết tích đề bảng Chú ý: Mặc dù mệnh đề WHERE đảm nhận tác vụ kết nối bảng, bạn phải dùng mệnh đề JOIN để thực thao tác kết nối nhiều bảng với bạn muốn kết truy vấn cập nhật Mệnh đề WHERE tương tự HAVING WHERE xác định ghi chọn Một cách tương tự, ghi nhóm GROUP BY, HAVING định ghi hiển thị Dùng mệnh đề WHERE để loại bỏ ghi bạn không muốn nhóm GROUP BY Một mệnh đề WHERE có tới 40 biểu thức kết nối toán tử logic AND, OR Khi bạn dùng trường tên có chứa dấu cách dấu câu, bạn phải bỏ tên trường dấu ngoặc vng ([]): SELECT [Product ID], [Units In Stock] _ FROM Products _ WHERE [Units In Stock] 1000; Mặc định, khơng có hai ghi trùng kết truy vấn hợp; nhiên, bạn bao gồm dẫn ALL để kết có ghi trùng Nó làm cho truy vấn thi hành nhanh Tất truy vấn phep hợp UNION yêu cầu có số trường, nhiên trường không cần thiết phải có kích thước kiểu liệu Bạn dùng mệnh đề GROUP BY và/hoặc HAVING truy vấn tham gia phép hợp để nhóm liệu Bạn dùng mệnh đề ORDER BY cuối truy vấn cuối để kết trả theo thứ tự xác định 7.Tối ưu truy vấn: Tối ưu CSDL chủ đề lớn bao hàm nhiều vấn đề Nhiều yếu tố, bao gồm cấu hình phần cứng phần mềm, cài đặt Windows, đệm, không liên quan đến truy vấn, chúng ảnh hưởng đến hiệu CSDL Một yếu tố quan trọng khác dùng bảng gắn với CSDL kết nối trực tiếp với CSDL từ xa Vấn đề bàn kỹ “Accessing External Data” Phần trình bày ngắn gọn số cách tối ưu liên quan đặc biệt tới xây dựng truy vấn, tận dụng khả tối ưu Jet database để xây dựng truy vấn Một số chiến lược tối ưu thường dùng: - Hạn chế dùng trường xếp, đặc biệt trường không tạo mục - Đảm bảo bảng kết nối từ nguồn khác tạo mục liên kết khố - Nếu liệu khơng thay đổi thường xuyên, dùng truy vấn tạo bảng từ truy vấn Dynasets bạn Dùng bảng để làm sở cho form, báo cáo dùng truy vấn - Nếu bạn tạo truy vấn Crosstab, dùng tiêu đề cột cố định - Dùng BETWEEN AND, IN dấu “=” cột đánh mục - Khi tạo truy vấn, không nên thêm trường không cần thiết Tối ưu truy vấn với công nghệ Rushmore: Rushmore công nghệ truy cập liệu dùng Jet database engine cho phép tập hợp ghi truy cập cách hiệu Với Rushmore, bạn dùng kiểu biểu thức định điều kiện truy vấn, truy vấn bạn thi hành nhanh nhiều Biểu thức tối ưu dạng đơn giản: Jet database engine tối ưu hoá biểu thức đơn giản mệnh đề WHERE câu lệnh SELECT Dạng biểu thức đơn giản thành lập nên toàn phần phần biểu thức Một biểu thức đơn giản tối ưu hố có dạng sau: indexedfield comparisonoperator expression - or -expression comparisonoperator indexedfield Trong dạng biểu thức đơn giản tối ưu: - indexedfield phải trường mà có tạo lập mục - comparisonoperator phải kiểu sau đây: , =, >=,

Ngày đăng: 31/08/2012, 09:39

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan