1. Trang chủ
  2. » Công Nghệ Thông Tin

Hướng dẫn SQL & XQuery cho IBM DB2, Phần 6: Ngôn ngữ định nghĩa dữ liệu và ngôn ngữ kiểm soát dữ liệu ppt

34 673 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 256,29 KB

Nội dung

Những người phát triển ứng dụng và những người quản trị cơ sở dữ liệu có thể sử dụng hướng dẫn này để nâng cao các kỹ năng truy vấn cơ sở dữ liệu của mình.. Các thành viên tham gia sáng

Trang 1

Hướng dẫn SQL & XQuery cho IBM DB2, Phần 6: Ngôn ngữ định nghĩa dữ liệu và ngôn

ngữ kiểm soát dữ liệu

Tổng quan về các thành phần DML, DDL, và DCL của SQL

Pat Moffatt, Giám đốc Chương trình quản lý thông tin, Sáng kiến học đường, IBM Bruce Creighton, Chuyên viên lập kế hoạch các phần kỹ năng, IBM

Jessica Cao, Chuyên viên phát triển các công cụ đào tạo, IBM

Tóm tắt: Hướng dẫn này, Phần 6 của loạt bài hướng dẫn SQL & XQuery cho

IBM DB2 , phát triển theo ngôn ngữ xử lý dữ liệu (DML) và giới thiệu ngôn ngữ định nghĩa dữ liệu (DDL) và ngôn ngữ kiểm soát dữ liệu (DCL) Nó cũng bàn luận đến các lệnh SQL khác lệnh SELECT

Trước khi bạn bắt đầu

Về loạt bài này

Loạt bài hướng dẫn này dạy các chủ đề SQL từ cơ bản đến nâng cao và các chủ đề XQuery cơ bản Nó cũng chỉ ra cách diễn đạt các câu hỏi nghiệp vụ thường gặp bằng các truy vấn cơ sở dữ liệu sử dụng các câu truy vấn SQL hay các câu truy vấn XQuery Những người phát triển ứng dụng và những người quản trị cơ sở dữ liệu có thể sử dụng hướng dẫn này để nâng cao các kỹ năng truy vấn cơ sở dữ liệu của mình Các thành viên tham gia sáng kiến học đường IBM có thể sử dụng loạt hướng dẫn này như một phần trong chương trình giảng dạy cơ sở dữ liệu của họ Loạt bài hướng dẫn chỉ ra cách diễn đạt các câu hỏi kinh doanh thường gặp như các truy vấn cơ sở dữ liệu khi sử dụng SQL hay các XQuery

Tất cả các ví dụ trong bài này là dựa trên Aroma, một cơ sở dữ liệu mẫu chứa các

dữ liệu doanh thu về các sản phẩm cà phê và chè đã bán trong các cửa hàng trên khắp nước Mỹ Mỗi ví dụ gồm có ba phần:

 Một câu hỏi kinh doanh dưới dạng ngôn ngữ thường ngày

 Một hoặc nhiều ví dụ truy vấn, được biểu diễn bằng SQL hay XQuery

Trang 2

 Một bảng các kết quả trả về từ cơ sở dữ liệu

Hướng dẫn này được thiết kế để cho phép các học viên học tập ngôn ngữ SQL và XQuery Cũng như học bất cứ cái gì khác, việc bổ sung thêm các bài tập thực hành

là rất quan trọng Dữ liệu và các định nghĩa bảng sẽ tạo điều kiện thuận lợi cho các bài tập thực hành này

Đối với các sinh viên sử dụng tài liệu này như một phần của khoá học, hãy nhận từ thầy hướng dẫn của mình các chỉ dẫn để kết nối tới cơ sở dữ liệu Aroma và tìm hiểu mọi sự khác biệt giữa hướng dẫn và cài đặt tại máy cục bộ của mình

Cảm ơn bạn lựa chọn IBM® DB2® để nghiên cứu về các máy chủ dữ liệu lai, phục vụ dữ liệu với cả hai cấu trúc: cấu trúc quan hệ thuần khiết lẫn cấu trúc

Trang 3

Kết nối tới một cơ sở dữ liệu

Bạn cần kết nối tới một cơ sở dữ liệu trước khi có thể sử dụng các câu lệnh SQL

để truy vấn hay xử lý dữ liệu Lệnh CONNECT kết hợp một kết nối cơ sở dữ liệu với một tên người sử dụng

Đối với loạt bài này, tên cơ sở dữ liệu là aromadb (Nếu bạn là sinh viên khi sử dụng phần này như một phần của khoá học, hãy thông qua thầy hướng dẫn để tìm

ra tên cơ sở dữ liệu bạn cần nối tới.)

Để kết nối tới cơ sở dữ liệu aromadb, gõ lệnh sau đây vào trong bộ xử lý dòng lệnh DB2:

CONNECT TO aromadb USER userid USING

password

Đối với sinh viên khi sử dụng phần này như một phần của khoá học, thay thế

"userid" và "password" bằng số ID và mật khẩu của người sử dụng mà bạn đã nhận được từ thầy hướng dẫn Nếu máy không hỏi userid và password thì chỉ cần

gõ vào lệnh sau đây:

CONNECT TO aromadb

Thông điệp sau báo cho bạn biết rằng đã tạo kết nối thành công:

Database Connection Information

Database server = DB2/NT 9.0.0

SQL authorization ID = USERID

Local database alias = AROMADB

Trang 4

Khi đã kết nối được, bạn có thể bắt đầu sử dụng cơ sở dữ liệu

Các thành phần SQL

SQL gồm có ba thành phần: ngôn ngữ xử lý dữ liệu (DML), ngôn ngữ định nghĩa

dữ liệu (DDL) và ngôn ngữ kiểm soát dữ liệu (DCL) DML gồm các lệnh

SELECT, UPDATE, INSERT, và DELETE; DDL gồm các lệnh CREATE, ALTER, và DROP ; ngôn ngữ kiểm soát gồm có các lệnh GRANT và REVOKE

DDL

ALTER Thường dùng để thêm, điều chỉnh

Trang 5

DCL

REVOKE

Thường dùng để hủy bỏ quyền của những người sử dụng cơ sở dữ liệu

Lệnh CREATE TABLE

Câu hỏi

Trang 6

Bộ phận tiếp thị đã bắt đầu giới thiệu một chương trình thành viên mới để làm tăng doanh thu Các khách hàng có thể mua một "Gold Card" (Thẻ Vàng) và được hưởng chiết khấu, các quà tặng miễn phí và thông tin qua email về các hoạt động khuyến mại khác nhau

Mỗi cửa hàng được cung cấp các thẻ ghi số trước

Tạo ra một bảng mới trong cơ sở dữ liệu Aroma được gọi là Gold để lưu giữ

thông tin về các khách hàng Gold Card Nó cần phải có các cột để chứa các giá trị như một số nhận dạng (ID) thẻ duy nhất, khóa cửa hàng, họ, tên, email, và trạng thái

Ví dụ truy vấn

CREATE TABLE aroma.gold

(card_id SMALLINT NOT NULL PRIMARY

KEY,

storekey INTEGER NOT NULL,

fname VARCHAR(20) NOT NULL,

lname VARCHAR(20) NOT NULL,

email VARCHAR(30),

status VARCHAR(10) NOT NULL,

FOREIGN KEY (storekey) REFERENCES

aroma.store (storekey));

Kết quả

Bạn có thể thực hiện một lệnh SELECT để xem kết quả của lệnh CREATE

TABLE

Trang 7

SELECT * FROM aroma.gold;

Card_id Storekey Fname Lname Email Status

Cú pháp của lệnh CREATE TABLE

CREATE TABLE table_name

Truy vấn này sử dụng một lệnh CREATE TABLE để xây dựng một bảng có tên là

Gold trong cơ sở dữ liệu Aroma Lệnh CREATE phải bắt đầu với từ CREATE Từ

thứ hai nói cho DB2 biết sẽ tạo ra kiểu đối tượng nào (ở đây là bảng - table), còn

từ thứ ba đặt tên đối tượng (Gold)

Trang 8

Phần nằm trong dấu ngoặc đơn là vùng mô tả cột để định nghĩa cột Mọi cột phải được gán ba phần: tên cột, kiểu dữ liệu, và đặc tính NULL

Mệnh đề PRIMARY KEY là tùy chọn Nó bảo đảm chắc chắn rằng các giá trị

trong cột card_id là duy nhất hai thẻ không thể có cùng số ID

Mệnh đề FOREIGN KEY cũng là tùy chọn Nó liên kết cột storekey của bảng

Gold với cột storekey của bảng Store Điều này bảo đảm chắc chắn rằng khóa cửa

hàng (store key) tồn tại và hợp lệ và hai cột chứa các giá trị có cùng kiểu dữ liệu

Để biết chi tiết hơn về lệnh CREATE TABLE , hãy tìm nó trong Trung tâm thông tin DB2 (xem Tài nguyên) Trung tâm được giới thiệu trong Phần 1 của loạt bài này

Tên cột

Các bảng và các cột phải theo các quy ước đặt tên của DB2:

 Ký tự đầu tiên của tên bảng phải là một ký tự chữ cái hay một trong các ký hiệu quốc gia Chúng bao gồm các chữ cái A - Z, ký hiệu Đôla ($), ký hiệu (@), và ký hiệu số (#)

 Các ký tự tiếp theo có thể chứa một tổ hợp các ký tự chữ cái, các chữ số

0-9, và dấu gạch chân (_) Trong hầu hết các trường hợp, dấu gạch chân được

sử dụng như một dấu phân tách trực quan

 Chiều dài tên của bảng/ cột thay đổi tùy theo nền hệ thống Xin vui lòng

xem SQL Reference Guide (Hướng dẫn Tham khảo SQL) về các đặc thù

riêng (xem Resources)

Kiểu dữ liệu

Một cột phải lưu trữ các giá trị của một kiểu dữ liệu cụ thể

Numbers Tất cả các số có một dấu và một độ chính xác Độ chính

Trang 9

(Các số) xác là số các bit hay các chữ số, trừ dấu Các số gồm có

SMALLINT, INTEGER, BIGINT, REAL, DOUBLE và DECIMALS

Character

string (Chuỗi

ký tự)

Một chuỗi ký tự) Một chuỗi ký tự là một chuỗi các byte

Chiều dài của chuỗi là số lượng các byte trong chuỗi Nếu

chiều dài bằng không, giá trị này được gọi là chuỗi rỗng

Các chuỗi ký tự gồm có chuỗi ký tự có chiều dài cố định

và chuỗi ký tự có chiều dài thay đổi (VARCHAR, LONG VARCHAR, và CLOB)

Graphic

string (Chuỗi

đồ họa)

Một chuỗi đồ họa Một chuỗi đồ họa là một chuỗi của dữ

liệu ký tự hai byte Chuỗi đồ họa gồm có chuỗi đồ họa có chiều dài cố định và chuỗi đồ họa có chiều dài thay đổi

(Chuỗi nhị

phân)

Một chuỗi nhị phân Một chuỗi nhị phân là một chuỗi các

byte Nó thường được dùng để chứa dữ liệu không truyền thống, như các hình ảnh Đối tượng lớn nhị phân (BLOB)

là một chuỗi nhị phân Xem các đối tượng lớn (LOBs) để biết thêm thông tin

14 ký số biểu diễn ngày tháng và thời giờ hợp lệ dưới dạng

yyyyxxddhhmmss) Các giá trị kiểu ngày giờ có thể được sử

dụng trong một số phép toán số học và phép toán chuỗi nhất định và tương thích với một số chuỗi ký tự nhất định; tuy nhiên, chúng không phải là chuỗi ký tự mà cũng không

là các số Các giá trị kiểu ngày giờ gồm có Date,Time, và Timestamp

Null value

(Giá trị null)

Giá trị null là một giá trị đặc biệt, khác với tất cả các giá trị khác null Nó có nghĩa là không có mặt bất kỳ một giá trị nào khác tại cột đó trên dòng đang xét Giá trị null tồn tại với tất cả các kiểu dữ liệu

Trang 10

XML

DB2 9 là máy chủ cơ sở dữ liệu lai đầu tiên trên thế giới cho phép quản lý dữ liệu theo mô hình quan hệ và mô hình pureXML DB2 9 đã đưa ra cơ chế tối ưu để lưu tữ dữ liệu XML cùng với cơ chế quan hệ vốn có của nó

Để biết các chi tiết về các kiểu dữ liệu, xem lại Phần1 của loạt bài này

Đặc tính NULL

Tất cả Card_id, storekey, fname, và lname được định nghĩa như giá trị không null

(NOT NULL) do chúng là các thông tin quan trọng mà mỗi hàng phải có Đối với

bảng này, một hàng không có card_id là vô nghĩa đối với ngôn ngữ định nghĩa dữ

liệu và ngôn ngữ kiểm soát dữ liệu

Nếu một đặc tính null bị bỏ qua, nó sẽ bằng NULL theo mặc định Email được cho

phép là null do không phải tất cả khách hàng đều có e-mails Họ vẫn có thể được hưởng các chiết khấu và các quà tặng miễn phí

Sau khi tất cả các cột đều được định nghĩa, các khóa chính và khoá ngoài được định nghĩa Bạn không cần chỉ rõ khóa chính mà khóa ngoài tham chiếu đến bởi vì DB2 biết về khóa chính từ thông tin danh mục

Trước khi chuyển sang phần tiếp theo, bạn cần vào Trung tâm thông tin DB2 (xemTài nguyên) và đọc toàn bộ tài liệu trực tuyến về lệnh CREATE TABLE Điều này sẽ giúp bạn trở nên quen thuộc với định dạng của tài liệu trợ giúp và xem lại những thứ bạn vừa mới học được

Lệnh INSERT

Câu hỏi

Trang 11

Một khách hàng vừa mới mua Thẻ Vàng (Gold Card) đầu tiên từ cửa hàng có khóa cửa hàng (storekey) là 1 Tên của cô ấy là Ada Alexander, và e-mail của cô ấy là coffee_lover@hotmail.com

Với mục đích của bài tập này, giả thiết rằng cửa hàng này được gán các thẻ đánh

số từ 1 tới 100

Nhập bản ghi của cô ấy vào trong bảng Gold với trạng thái được đặt là Active

(hoạt động)

Ví dụ truy vấn

INSERT INTO aroma.gold

VALUES(1, 1, 'Ada', 'Alexander',

'coffee_lover@hotmail.com',

'Active');

Kết quả

SELECT * FROM aroma.gold;

Card_id StorekeyFname Lname Email Status

1 1 Ada Alexander coffee_lover@hotmail.comActive

Cú pháp của lệnh INSERT

Trang 12

INSERT INTO table_name

VALUES(value1, value2, value3, );

Về truy vấn

Ví dụ truy vấn này minh họa một lệnh INSERT để thêm một hàng mới vào bảng

Gold Chú ý rằng chuỗi các giá trị trong lệnh INSERT được xếp cùng tuần tự

giống như tuần tự các cột trong bảng Cũng lưu ý rằng có một giá trị cho từng cột trong bảng

Nếu giá trị là kiểu ký tự, nó phải được đặt trong các dấu nháy đơn

Để biết thêm thông tin về lệnh INSERT tìm kiếm trong Trung tâm thông tin DB2 (xem Tài nguyên)

Bạn cũng có thể chèn nhiều hàng vào trong một bảng, chỉ sử dụng một lệnh

INSERT

Câu hỏi

Có nhiều khách hàng mua các Thẻ Vàng từ cửa hàng có storekey 1 Tên của họ là Ben Bowman - mmmcoffee@yahoo.com, Cynthia Chen -

iheartcoffee@gmail.com, David Doyle - coffee_maniac@msn.com, Emily Enright

- cupAday@hotmail.com and Frank Freeman - coffee_addict@gmail.com Hãy

nhập các bản ghi của họ vào trong bảng Gold bằng chỉ một lệnh

Ví dụ truy vấn

INSERT INTO aroma.gold

VALUES(2, 1, 'Ben', 'Bowman', 'mmmcoffee@yahoo.com',

'Active'),

(3, 1, 'Cynthia', 'Chen', 'iheartcoffee@gmail.com', 'Active'),

Trang 13

(4, 1, 'David', 'Doyle', 'coffee_maniac@msn.com', 'Active'),

(5, 1, 'Emily', 'Enright', 'cupAday@hotmail.com', 'Active'),

(6, 1, 'Frank', 'Freeman', 'coffee_addict@gmail.com', 'Active');

Kết quả

SELECT * FROM aroma.gold;

Card_id Storekey Fname Lname Email Status

1 1 Ada Alexander coffee_lover@hotmail.com Active

2 1 Ben Bowman mmmcoffee@yahoo.com Active

3 1 Cynthia Chen iheartcoffee@gmail.com Active

4 1 David Doyle coffee_maniac@msn.com Active

5 1 Emily Enright cupAday@hotmail.com Active

6 1 Frank Freeman coffee_addict@gmail.com Active

Trang 14

Lệnh UPDATE

Câu hỏi

Emily Enright mới kết hôn với Frank Freeman và thay đổi tên họ của cô ấy thành

'Freeman' Hãy cập nhật bảng Gold để phản ánh sự thay đổi này

SELECT * FROM aroma.gold;

Card_id Storekey Fname Lname Email Status

1 1 Ada Alexander coffee_lover@hotmail.comActive

2 1 Ben Bowman mmmcoffee@yahoo.com Active

3 1 Cynthia Chen iheartcoffee@gmail.com Active

Trang 15

4 1 David Doyle coffee_maniac@msn.com Active

5 1 Emily Freeman cupAday@hotmail.com Active

6 1 Frank Freeman coffee_addict@gmail.com Active

Mệnh đề SET chỉ rõ các cột được cập nhật và các giá trị mới của chúng

Mệnh đề WHERE là quan trọng Nếu nó bị bỏ sót, tất cả các hàng trong bảng sẽ

được gán giá trị mới new_value tại vị trí cột column_name

Về truy vấn

Trong ví dụ này, một mệnh đề WHERE được dùng để định hướng DB2 tới các hàng bạn muốn cập nhật Đây là chỗ mà mã nhận biết duy nhất trở nên rất quan

trọng Bạn muốn chỉ UPDATE cho riêng một Emily Enright Mặc dù bảng Gold

hiện tại rất nhỏ bé và chỉ chứa một Emily Enright, nhưng nó có thể phát triển

Trang 16

mạnh và chứa nhiều bản ghi có các tên và họ giống nhau Vì vậy luôn luôn sử dụng các mã nhận biết duy nhất là một thói quen an toàn

Để biết thêm thông tin về lệnh UPDATE tìm kiếm nó trong Trung tâm thông tin DB2 (xem Tài nguyên)

Lệnh DELETE

Câu hỏi

Frank Freeman đã huỷ bỏ tư cách thành viên của mình Hãy xóa bản ghi của anh

ấy khỏi cơ sở dữ liệu

Ví dụ truy vấn

DELETE FROM aroma.gold

WHERE card_id = 6;

Kết quả

SELECT * FROM aroma.gold;

Card_id Storekey Fname Lname Email Status

1 1 Ada Alexander coffee_lover@hotmail.comActive

Trang 17

2 1 Ben Bowman mmmcoffee@yahoo.com Active

3 1 Cynthia Chen iheartcoffee@gmail.com Active

4 1 David Doyle coffee_maniac@msn.com Active

5 1 Emily Freeman cupAday@hotmail.com Active

Cú pháp của lệnh DELETE

DELETE FROM table_name

[WHERE search_condition];

search_condition Điều kiện này sẽ được đánh giá là đúng hay sai

Mệnh đề WHERE là quan trọng Nếu nó bị bỏ qua, tất cả các hàng trong bảng sẽ

bị xóa

Về truy vấn

Ở đây lệnh DELETE loại bỏ Frank Freeman ra khỏi bảng Gold Xin nhắc lại, việc

nêu ra một điều kiện chỉ rõ mã nhận diện duy nhất là rất quan trọng Nếu điều kiện chỉ rõ là "WHERE lname = 'Freeman'" thì cả hai bản ghi của Frank and Emily Freeman sẽ bị xóa

Trang 18

Để biết thêm thông tin về lệnh DELETE, tìm kiếm nó trong Trung tâm thông tin DB2 ( xem Tài nguyên)

ALTER TABLE aroma.gold

ADD referrals SMALLINT;

Kết quả

SELECT * FROM aroma.gold;

Card_id Storekey Fname Lname Email Status Referrals

Trang 19

1 1 Ada Alexander coffee_lover@hotmail.comActive

2 1 Ben Bowman mmmcoffee@yahoo.com Active

3 1 Cynthia Chen iheartcoffee@gmail.com Active

4 1 David Doyle coffee_maniac@msn.com Active

5 1 Emily Freeman cupAday@hotmail.com Active

Cú pháp của lệnh ALTER TABLE

ALTER TABLE table_name

ADD column_name column_definition;

Cột card_id ban đầu được tạo ra có kiểu là SMALLINT, hỗ trợ các số nguyên lên

đến năm chữ số Ta đã nhận thấy rằng khi bảng Gold lớn lên, cột này có thể đạt tới

các số id lớn hơn Hãy thay đổi cột card_id để chứa các giá trị kiểu INTEGER

Ngày đăng: 07/08/2014, 09:23

HÌNH ẢNH LIÊN QUAN

Hình 1. Kế hoạch truy nhập trước khi đánh chỉ số - Hướng dẫn SQL & XQuery cho IBM DB2, Phần 6: Ngôn ngữ định nghĩa dữ liệu và ngôn ngữ kiểm soát dữ liệu ppt
Hình 1. Kế hoạch truy nhập trước khi đánh chỉ số (Trang 27)
Hình 2. Kế hoạch truy nhập sau khi đánh chỉ số - Hướng dẫn SQL & XQuery cho IBM DB2, Phần 6: Ngôn ngữ định nghĩa dữ liệu và ngôn ngữ kiểm soát dữ liệu ppt
Hình 2. Kế hoạch truy nhập sau khi đánh chỉ số (Trang 28)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w