Lệnh SELECT trên nhiều bảng

Một phần của tài liệu Tìm hiểu về hệ quản trị CSDL ORACLE SERVER và xây dựng phần mềm quản lý thi của sinh viên trên mạng (Trang 47 - 49)

/ DEFAULT VALUES Lệnh này gồm 2 bớc:

2.5.Lệnh SELECT trên nhiều bảng

d. INSERT và giao dịch

2.5.Lệnh SELECT trên nhiều bảng

Khi tham chiếu tới nhiều bảng bằng câu lệnh SELECT, có 2 yêu cầu mới nảy sinh:

- Cần phải chỉ rõ mỗi cột thuộc bảng nào.

- Tập kết quả cần phải giới hạn bằng cách nối các cột chung lại.

Bí danh của bảng

Trong câu lệnh SELECT, khi tham chiếu đến hai bảng trở lên, cần phải chỉ rõ mỗi cột thuộc bảng nào. Để tránh phải nhắc lại tên bảng nhiều lần, ta sử dụng bí danh (alias) của bảng thay cho tên bảng đó:

SELECT p. pub_id, p. pub_name

FROM Pulishers p, Titles t

WHERE p. pub_id = t. Pub_id Tích ngang (tích Đề các) của hai bảng

Trong câu lệnh SELECT, để kết nối 2 bảng với nhau ta sử dụng tích ngang của 2 bảng. Tích này là một phép nhân hai bảng trong đó mỗi hàng của bảng thứ nhất đợc kết hợp với tất cả các hàng của bảng thứ hai. Kết quả của tích không lọc là một bảng với số hàng bằng tích số hàng của hai bảng, kích thớc bảng này sẽ đợc hạn chế bằng các điều kiện trong mệnh đề WHERE (gọi là điều kiện kết nối).

Câu hỏi con (subquery)

Một trong những đặc tính nổi bật nhất của lệnh SELECT là bạn có thể kết hợp các lệnh SELECT với nhau, lệnh SQL SELECT này đợc gắn bên trong lệnh SELECT khác gọi là một câu hỏi con.

Câu hỏi SQL lồng nhau

T –SQL cho phép lồng nhiều lệnh SELECT trong biểu thức của mệnh đề WHERE.

Chú ý : nên sử dụng IS NULL hơn là = NULL, IS NOT NULL hơn là <>

NULL vì = NULL và <> NULL thực hiện trong T –SQL nhng không phải là chuẩn ANSI và nh vậy nó sẽ không làm việc thông qua ODBC khi SET ANSI_DEFAULTS ở chế độ ON, trái lại IS [NOT ] NULL là chuẩn ANSI.

Bảng trích ngang

Bạn có thể dùng câu hỏi con tơng quan để tạo ra bảng trích ngang. Bảng trích ngang (crosstab) là bảng chứa các tóm tắt về bảng khác. Ví dụ tạo một bảng chứa các tóm tắt về ytd_sales của bảng Titles, dựa trên kiểu tiêu đề và dùng câu hỏi cho mỗi cột:

SELECT DISTINCT t. pub_id,

‘business’ = (SELECT sum(ytd_sales) FROM Titles t1 WHERE (t1. pub_id = t. pub_id) AND (t1. type = ‘business’)),

‘psychology’ = (SELECT SUM(ytd_sales) FROM Titles t1 WHERE (t1. pub_id = t. pub_id )AND (t1. Type = ‘psychology’))

FROM Titles t

Lệnh UNION

Một cách khác để nối 2 hay nhiều bảng lại với nhau là dùng lệnh UNION. Lệnh này sẽ lấy kết quả của một lệnh SELECT rồi kết hợp với lệnh SELECT khác với điều kiện là trình tự các cột và kiểu dữ liệu phải tơng thích.

Cú pháp của lệnh UNION:

UNION [ALL]

<select –statement>, etc.

Theo mặc định thì UNION sẽ loại bỏ các hàng trùng nhau, nếu muốn thể hiện các hàng giá trị trùng nhau, bạn thêm từ đánh giá ALL.

3. Giao dịch

Trong ORACLE Server, giao dịch là một nhóm lệnh DBMS đợc coi là một đơn vị công việc thống nhất về mặt logic. Bằng cách coi tất cả những thay đổi dữ liệu nằm trong giao dịch, hệ quản trị cơ sở dữ liệu sẽ đảm bảo cho cơ sở dữ liệu giữ đợc tính bền vững, làm việc với nhiều ngời sử dụng và có thể phục hồi sau sự cố.

Bốn mục tiêu lý tởng của một giao dịch là: tính hoàn toàn, tính bền vững, khả năng hồi phục và khả năng đồng thời. Các mục đích đó tơng ứng với những thuộc tính ACID của giao dịch:

- Atomicity (tính nguyên tố): hoặc là tất cả những thay đổi trong giao dịch đợc thực hiện, hoặc là không có thay đổi nào. (adsbygoogle = window.adsbygoogle || []).push({});

- Consistency (tính bền vững): giao dịch không vi phạm một ràng buộc nào của cơ sở dữ liệu.

- Isolation (tính riêng biệt): các giao dịch thực hiện đồng thời không can thiệp lẫn nhau.

- Durability (tính giá trị): khi có sự cố xảy ra trong lúc thực hiện giao dịch thì ở pha phục hồi, nó có thể hoàn thành giao dịch hoặc quay lui về trạng thái cũ.

Một phần của tài liệu Tìm hiểu về hệ quản trị CSDL ORACLE SERVER và xây dựng phần mềm quản lý thi của sinh viên trên mạng (Trang 47 - 49)