Chuẩn bị cho kỳ thi cơ bản về DB2 9, Phần 4: Làm việc với dữ liệu DB2 potx - Pdf 20

Chuẩn bị cho kỳ thi cơ bản về DB2 9, Phần 4: Làm việc với dữ liệu DB2
Roman B. Melnyk, Nhân viên phát triển thông tin, IBM
Tóm tắt: Bài viết này giới thiệu về ngôn ngữ truy vấn cấu trúc - Structured Query
Language (SQL) và cung cấp cho bạn sự hiểu biết về cách DB2® 9 sử dụng SQL
để thao tác dữ liệu trong cơ sở dữ liệu quan hệ. Bài viết này là bài thứ tư nằm
trong số bảy bài viết mà bạn có thể sử dụng để có được chứng chỉ DB2 9 cơ bản
(Bài thi số 730).
Trước khi bắt đầu
Về bài viết này
Bạn đã nghĩ tới việc có một chứng chỉ về các khái niệm cơ bản của DB2 (Bài thi
số 730)? Nếu bạn nghĩ như thế thì bạn đã đến đúng chỗ. Loạt bảy bài hướng dẫn
chuẩn bị thi chứng chỉ DB2 bao gồm những vấn đề cơ bản nhất những chủ đề
mà bạn cần phải hiểu rõ trước khi bạn đọc câu hỏi sát hạch đầu tiên. Thậm chí,
ngay cả khi bạn chưa có kế hoạch tìm kiếm chứng chỉ ngay bây giờ thì loạt bài
viết này cũng là một nơi tuyệt vời để bạn bắt đầu học những vấn đề mới trong
DB2 9.
Về bài viết này
Bài viết này giải thích cách mà DB2 sử dụng SQL để thao tác dữ liệu trong cơ sở
dữ liệu quan hệ. Các tài liệu được cung cấp chủ yếu ở đây bao gồm các mục tiêu
trong phần 4 của bài thi, phần có tiêu đề là "Làm việc với dữ liệu DB2 sử dụng
SQL và XQuery". Bạn có thể nhìn thấy các mục tiêu này tại: http://www-
03.ibm.com/certify/tests/obj730.shtml.
Các chủ đề chứa đựng trong bài viết bao gồm:
 Giới thiệu về SQL
 Mô tả về Data Manipulation Language (Ngôn ngữ thao tác dữ liệu (DML))
và các ví dụ giải thích cách sử dụng DML để thu được thông tin riêng biệt.
 Ranh giới chuyển đổi
 Thủ tục SQL và hàm do người dùng định nghĩa Mục tiêu

Ngôn ngữ truy vấn có cấu trúc (Structured Query Language) (SQL)
Các phần của câu SQL
SQL là ngôn ngữ được sử dụng để định nghĩa và thao tác các đối tượng dữ liệu
SQL. Sử dụng SQL để định nghĩa một bảng dữ liệu, chèn dữ liệu vào bảng, thay
đổi dữ liệu trong bảng và lấy dữ liệu từ bảng. Giống như tất cả các ngôn ngữ khác,
SQL có cú pháp định nghĩa và một tập hợp các phần tử ngôn ngữ.
Hầu hết các câu lệnh SQL đều chứa đựng một hoặc nhiều phần tử ngôn ngữ sau:
 Các ký tự đơn lẻ có thể là các chữ cái (A-Z, a-z, $, #, và @, hoặc một thành
phần trong tập ký tự mở rộng), các số (từ 0 đến 9), hoặc các ký tự đặc biệt
(+, *, %, ).
 Một mã thông báo là chuỗi gồm một hoặc nhiều ký tự. Chuỗi này không
được chứa ký tự trống trừ khi đó là một định dạng đã được định nghĩa (một
hoặc nhiều ký tự nằm giữa hai dấu ngoặc kép) hoặc là một hằng xâu ký tự.
 Một định danh dạng SQL là một mã thông báo được dùng để tạo thành tên.
 Kiểu dữ liệu của một giá trị xác định trong DB2 sẽ giải thích giá trị đó thế
nào. DB2 hỗ trợ khá nhiều công cụ xây dựng kiểu dữ liệu và thậm chí hỗ
trợ cả các kiểu do người dùng định nghĩa (UDTs).
 Một hằng số chỉ rõ một giá trị. Chúng được phân ra thành nhiều loại như ký
tự, ảnh, hằng số chuỗi hệ thập lục phân, số nguyên, số thập phân hoặc hằng
số thực.
 Một đăng ký đặc biệt (special register) là một vùng lưu trữ được xác định
cho một thủ tục quản lý của cơ sở dữ liệu và được sử dụng để lưu trữ thông
tin có thể tham chiếu bởi các câu lệnh SQL. Các mẫu của đăng ký đặc biệt
(special registers) là: CURRENT DATE, CURRENT
DBPARTITIONNUM, và CURRENT SCHEMA.
 Một đoạn chương trình (routine) có thể là một hàm, một phương thức hoặc
một thủ tục.
o Một hàm thể hiện mối liên giữa một hoặc nhiều giá trị dữ liệu đầu
vào với một hoặc nhiều giá trị kết quả. Hàm dữ liệu có thể là do
người dùng định nghĩa hoặc có sẵn.

sở dữ liệu trong danh mục hệ thống (có thể truy cập thông qua các
mục SYSCAT.ROUTINES) sử dụng câu lệnh CREATE
FUNCTION
o Một phương thức (method) cũng thể hiện mối quan hệ giữa tập các
giá trị dữ liệu đầu vào và tập các giá trị kết quả. Tuy nhiên, phương
thức cơ sở dữ liệu được xác định rất cụ thể và rõ ràng, giống như
một phần định nghĩa của kiểu cấu trúc do người dùng định nghĩa.
Xem ví dụ, một phương thức gọi CITY (kiểu ADDRESS) được
truyền giá trị đầu vào kiểu VARCHAR, và kết quả là một kiểu con
của ADDRESS. Phương thức do người dùng định nghĩa (User-
defined) được ghi vào cơ sở dữ liệu trong danh mục hệ thống (có thể
truy cập thông qua mục SYSCAT.ROUTINES) sử dụng câu lệnh
CREATE METHOD. Có rất nhiều thông tin về kiểu cấu trúc này,
tham khảo Giới thiệu về các kiểu dữ liệu có cấu trúc và kiểu bảng
(An introduction to structured data types and typed tables) .
o Một thủ tục là một chương trình ứng dụng có thể bắt đầu bằng cách
tự thực hiện câu lệnh CALL. Các đối số của các thủ tục là các giá trị
vô hướng có thể là các kiểu khác nhau và có thể được sử dụng để
đưa vào các thủ tục, hay nhận các giá trị trả về từ thủ tục. Thủ tục do
người dùng định nghĩa (User-defined) được ghi vào cơ sở dữ liệu
trong danh mục hệ thống (có thể truy cập thông qua danh mục
SYSCAT.ROUTINES) sử dụng câu lệnh CREATE PROCEDURE.
 Một biểu thức chỉ định một giá trị. Có những biểu thức chuỗi ký tự, có
những biểu thức toán học, và những biểu thức rẽ nhánh (case), được dùng
để chỉ rõ các kết quả đặc biệt dựa vào sự đánh giá của một hoặc nhiều điều
kiện.
 Một predicate (vị từ) chỉ ra điều kiện đúng, sai hoặc chưa biết về một hàng
hoặc một nhóm. Có những loại sau:
o Các basic predicate (vị từ cơ bản) so sánh hai giá trị với nhau (ví dụ,
x > y).


-
20

Pernal 20 Sales

8 18171.25

612.45
30

Marenghi

38 Mgr 5 17506.75

-
Để giới hạn được số lượng của hàng trong bảng kết quả, sử dụng mệnh đề FETCH
FIRST. Xem ví dụ:
SELECT * FROM staff FETCH FIRST 10 ROWS ONLY

Để giới hạn số lượng cột hiển thị từ bảng dữ liệu, liệt kê danh sách tên cột cách
nhau bởi dấu phẩy. Xem ví dụ:
SELECT name, salary FROM staff

Sử dụng mệnh đề DISTINCT để loại bỏ các hàng trùng nhau trong tập kết quả.
Xem ví dụ:
SELECT DISTINCT dept, job FROM staff

Sử dụng vị từ AS để chỉ định một tên có nghĩa vào biểu thức hoặc một mục trong
danh sách lựa chọn. Xem ví dụ:


 Tìm kiếm tên của những nhân viên bắt đầu bằng ký tự S:
SELECT name FROM staff
WHERE name LIKE 'S%'

Trong ví dụ này, kí hiệu % là một kí tự thay thế cho một chuỗi rỗng hoặc
nhiều hơn một ký tự.
Một truy vấn con (subquery) là một câu lệnh SELECT xuất hiện bên trong mệnh
đề WHERE của truy vấn chính và tập kết quả thu được của truy vấn con chính là
kết quả của mệnh đề WHERE. Ví dụ:
"SELECT lastname FROM employee
WHERE lastname IN
(SELECT sales_person FROM sales
WHERE sales_date < '01/01/1996')"

Một tên liên kết (correlation name) được định nghĩa trong mệnh đề FROM của
truy vấn và có thể được dùng như là một tên ngắn cho bảng. Tên liên kết cũng loại
trừ các tham chiếu nhập nhằng giữa các cột từ các bảng khác nhau. Ví dụ:
"SELECT e.salary FROM employee e
WHERE e.salary <
(SELECT AVG(s.salary) FROM staff s)"
Sử dụng mệnh đề ORDER BY để sắp xếp các kết quả
Sử dụng mệnh đề ORDER BY để sắp xếp các kết quả theo các giá trị trên một
hoặc nhiều cột. Tên của các cột được chỉ rõ trong mệnh đề ORDER BY và không
cần chỉ ra trong danh sách liệt kê. Xem ví dụ:
"SELECT name, salary FROM staff
WHERE salary > 20000

DEPTNAME

MANAGER_ID

MANAGER

10 Head Office 160 Molinare
15 New England

50 Hanes
20 Mid Atlantic 10 Sanders
Câu lệnh mà bạn nhìn thấy trong phần cuối cùng của ví dụ là một liên kết nội
(inner join). Inner joins (liên kết nội) chỉ trả về những dòng có mặt ở cả hai bảng
thỏa mãn điều kiện liên kết. Nếu tồn tại một dòng trong một bảng nhưng không
được tồn tại trong bảng khác, nó không được thêm vào tập kết quả. Để xác định
một cách rõ ràng một liên kết nội, thêm vào truy vấn trước toán tử INNER JOIN
trong mệnh đề FROM:

FROM org INNER JOIN staff
ON manager = id Từ khóa ON chỉ ra điều kiện liên kết giữa các bảng sẽ được liên kết. DeptNumb và
DeptName là các cột trong bảng ORG và Manager_ID, Manager dựa trên các cột
(ID và Name) trong bảng STAFF. Kết quả của liên kết nội chứa đựng các giá trị
phù hợp cho các cột Manager và ID ở bảng bên trái (left table) (ORG) và bảng
bên phải (right table) (STAFF), theo thứ tự định sẵn. (Khi thực hiện liên kết hai
bảng, bạn phải quy định bảng nào là bảng bên trái, bảng nào là bảng bên phải.)
Outer joins (liên kết ngoại) trả về các hàng được tạo bởi toán tử liên kết nội, cộng
thêm các hàng không được trả về bởi toán tử liên kết nội. Có ba loại liên kết ngoại:

Kết hợp hai hoặc nhiều truy vấn thành một truy vấn bằng cách sử dụng các toán tử
tập hợp UNION, EXCEPT, hoặc INTERSECT. Các toán tử tập hợp xử lý các kết
quả của truy vấn, loại bỏ các kết quả trùng lặp và đưa ra kết quả cuối cùng.
 Toán tử tập hợp UNION tạo ra một bảng kết quả được kết hợp từ một hoặc
nhiều bảng kết quả khác.
 Toán tử tập hợp EXCEPT tạo ra một bảng kết quả chứa đựng tất cả các
hàng được trả về bởi truy vấn đầu tiên, nhưng không phải là truy vấn thứ
hai hay bất kỳ một truy vấn tiếp theo nào.
 Toán tử tập hợp INTERSECT tạo ra một bảng kết quả chứa đựng các hàng
được trả về bởi tất cả các truy vấn.
Dưới đây là một ví dụ về truy vấn có sử dụng toán tử tập hợp UNION. Có thể tạo
ra các truy vấn tương tự cho các toán tử EXCEPT hoặc toán tử INTERSECT bằng
cách thay từ khóa UNION trong cấu trúc truy vấn sau.
"SELECT sales_person FROM sales
WHERE region = 'Ontario-South'
UNION
SELECT sales_person FROM sales
WHERE sales > 3"
Sử dụng mệnh đề GROUP BY để tổng hợp các kết quả
Sử dụng mệnh đề GROUP BY để tổ chức các hàng trong tập kết quả. Mỗi một
nhóm được trình bày thành một dòng trên bảng kết quả. Ví dụ:
SELECT sales_date, MAX(sales) AS max_sales FROM sales
GROUP BY sales_date

Câu lệnh này đưa ra một danh sách ngày bán hàng từ bảng SALES. Bảng SALES
trong cơ sở dữ liệu SAMPLE chứa đựng các dữ liệu bán hàng, bao gồm cả số
lượng các giao dịch thành công của một người bán hàng trên một ngày. Thường có

1996 - 147
Lệnh này gần giống như lệnh trước đó, nhưng có chỉ rõ mệnh đề ROLLUP, hoặc
mệnh đề CUBE thay vì mệnh đề GROUPING SETS, kết quả trả về được liệt kê
chi tiết hơn trên các dữ liệu. Nó có thể cung cấp tóm tắt theo vị trí và thời gian.
Mệnh đề HAVING thường được dùng với mệnh đề GROUP BY để tìm kiếm kết
quả cho một nhóm được chỉ ra trong một điều kiện cụ thể. Mệnh đề HAVING có
thể chứa một hoặc nhiều vị từ để so sánh đặc tính của nhóm này với đặc tính của
nhóm khác, hoặc với một hằng số. Ví dụ:
"SELECT sales_person, SUM(sales) AS total_sales FROM sales
GROUP BY sales_person
HAVING SUM(sales) > 25"

Lệnh này trả về kết quả là một danh sách nhân viên bán hàng mà có tổng số hàng
bán trên 25. Sử dụng lệnh INSERT để thêm hàng mới vào bảng biểu hoặc khung nhìn.
Lệnh INSERT được sử dụng để thêm hàng mới vào bảng biểu hay khung nhìn.
Việc chèn hàng vào khung nhìn cũng giống như việc thêm hàng vào một bảng
biểu.
 Sử dụng mệnh đề VALUES có chỉ rõ dữ liệu cột cho một hoặc nhiều hàng.
Xem ví dụ:
INSERT INTO staff VALUES
(1212,'Cerny',20,'Sales',3,90000.00,30000.00)

INSERT INTO staff VALUES
(1213,'Wolfrum',20,'Sales',2,90000.00,10000.00)

Tương đương với:
INSERT INTO staff (id, name, dept, job, years, salary, comm)

mọi hàng trong bảng hoặc trong khung nhìn! Sử dụng lệnh DELETE để xóa dữ liệu.
Câu lệnh DELETE được dùng để xóa các hàng dữ liệu từ bảng. Xóa từng hàng
thỏa mãn điều kiện chỉ ra sau mệnh đề WHERE. Xem ví dụ:
DELETE FROM staff
WHERE id IN (1212, 1213)

Nếu bạn không chỉ ra các giá trị cụ thể sau mệnh đề WHERE, DB2 sẽ xóa tất cả
các hàng trong bảng và khung nhìn! Sử dụng lệnh MERGE để kết hợp các toán tử cập nhật, chèn và xóa
Câu lệnh MERGE cập nhật các bảng con hoặc khung nhìn sử dụng dữ liệu từ các
bảng nguồn. Trong khi thực hiện, các hàng trong mục tiêu phù hợp với dữ liệu
nguồn sẽ được cập nhật hoặc xóa, và các hàng không tồn tại trong mục tiêu sẽ
được chèn thêm vào.
Ví dụ, giả sử bảng EMPLOYEE là bảng mục tiêu, bảng này sẽ cập nhật các thông
tin về các nhân viên của công ty. Thông thường, để cập nhật thông tin, văn phòng
chi nhánh phải xử lý với từng bản ghi trong bảng EMPLOYEE gọi đến MY_EMP.
Câu lệnh MERGE có thể được dùng trong trường hợp này để cập nhật bảng
EMPLOYEE với những thông tin chứa đựng trong bảng MY_EMP, là bảng nguồn
cho toán tử merge.
Câu lệnh sau sẽ chèn một hàng cho nhân viên mới có số thứ tự là 000015 vào bảng
MY_EMP.
INSERT INTO my_emp (empno, firstnme, midinit, lastname, workdept,
phoneno, hiredate, job, edlevel, sex, birthdate, salary)
VALUES ('000015', 'MARIO', 'M', 'MALFA', 'A00',
'6669', '05/05/2000', 'ANALYST', 15, 'M', '04/02/1973', 59000.00)


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status