15
B1_2011.11.26 BÀI 3: TRUY VẤN DỮ LIỆU VÀ BẢNG O ThS. Trần Ngọc Thăng 1

TRUY VẤN DỮ LIỆU VÀ BẢ

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

BÀI 3: TRUY VẤN DỮ LIỆU VÀ BẢNG ẢO

ThS. Trần Ngọc Thăng

1

Page 2: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

• Dựa trên các cơ sở dữ liệu, chuyên viên quản trị dữ liệu thường phải trả lời

hàng loạt câu hỏi liên quan đến dữ liệu. Chẳng hạn như “Cho biết địa điểm

của 3 cột ATM gần nhất”, “Sao kê thu chi 3 tháng gần đây của một tài khoản

ngân hàng”, “Cho biết 10 giao dịch với khối lượng tiền lớn nhất” …

TÌNH HUỐNG DẪN NHẬP

Câu hỏi đặt ra là:Làm thế nào để hệ quản trị cơ sở dữ liệucó thể hiểu và trả lời những câu hỏi này của người dùng?

2

Page 3: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

Viết được được các câu lệnh truy ván theo yêu cầu

Truy vấn được dữ liệu từ nhiều bảng với các hình thức kết nối bảng khác

Thực hiện được thao tác truy vấn lồng

Tạo và sử dụng được View

MỤC TIÊU

3

Page 4: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

Cấu trúc truy vấn cơ bản

Truy vấn dữ liệu từ nhiều bảng

Truy vấn lồng nhau

Bảng ảo (View)

NỘI DUNG

1

2

3

4

4

Page 5: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

3.1. CẤU TRÚC TRUY VẤN CƠ BẢN

5

3.1.1. Câu lệnh SELECT

3.1.2. Mệnh đề WHERE

3.1.3. Một số hàm thường dùng

3.1.4. Truy vấn thống kê với GROUP BY và HAVING

3.1.5. Sắp xếp với ORDER BY

Page 6: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

3.1. CẤU TRÚC TRUY VẤN CƠ BẢN

6

• Ngôn ngữ vấn tin có cấu trúc(SQL) là một ngôn ngữ rất phổ dụng trong lĩnh vực cơ sở

dữ liệu.

• Microsoft xây dựng Transact-SQL dựa trên ngôn ngữ vấn tin có cấu trúc chuẩn (ANSI-

SQL: là ngôn ngữ vấn tin có cấu trúc do học viện quốc gia Hoa Kỳ đưa ra), ANSI-SQL

thường được gọi là SQL, ngôn ngữ này là cách thức chuẩn để giao tiếp với cơ sở dữ liệu.

• Câu lệnh SELECT dùng để rút trích dữ liệu từ cơ sở dữ liệu, lệnh này cho phép chúng

ta rút trích một hàng hoặc nhiều hàng, một hoặc nhiều cộtCú pháp:

Với,<Table_Name> là tên của bảng dữ liệu

<Column_name(s)> là tên của cột hoặc danh sách cột cần lấy dữ liệu .

• Câu lệnh SELECT mở rộng đi kèm với mệnh đề WHERE, GROUP BY, ORDER BY …

SELECT <Column_name(s)> FROM <Table_name>

Page 7: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

3.2. TRUY VẤN DỮ LIỆU TỪ NHIỀU BẢNG

7

3.2.1. Inner Join

3.2.2. Left Outer Join

3.2.3. Right Outer Join

3.2.4. Full Outer Join

3.2.5. Cross Join

3.2.6. Self Join

3.2.7. Non-Equal Join

3.2.8. Union

Page 8: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

3.2. TRUY VẤN DỮ LIỆU TỪ NHIỀU BẢNG

8

• Truy vấn dữ liệu từ nhiều bảng được xác định theo quan hệ giữa các cột của các bảng

với nhau. Có thể truy vấn thông qua điều kiện liên kết trong mệnh đề WHERE hoặc từ

khóa JOIN.

• Sử dụng điều kiện liên kết theo cột giữa các bảng, thông tin cần truy vấn được đặt ở

nhiều bảng khác nhau, để truy vấn được các thông tin như trên phải xác định điều kiện

liên kết giữa các bảng.

• SQL Server cung cấp câu lệnh JOIN thay thế các phép toán liên kết.

SELECT P.ProductID,S.SupplierID,S.CompanyNameFROM Suppliers AS S, Products AS PWHERE S.SupplierID = P.SupplierIDAND P.UnitPrice > $10AND S.CompanyName LIKE N'F%'

SELECT *FROM authors AS a INNER JOIN publishers AS pON a.city = p.cityORDER BY a.au_lname DESC

Page 9: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

3.3. TRUY VẤN LỒNG NHAU (SUBQUERY)

9

3.3.1. Nested Scalar SubQuery

3.3.2. Correlated SubQuery

Page 10: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

3.3. TRUY VẤN LỒNG NHAU (SUBQUERY)

10

• Trong câu lệnh truy vấn Select có câu lệnh truy vấn Select khác trong điều

kiện xác định của lệnh Select ngoài.

• Thông thường các câu lệnh dạng này đi cùng các từ lhóa IN, NOT IN,

EXITST, NOT EXIST, ANY, ALL.

SELECT distinct pub_nameFROM publishersWHERE pub_id IN(SELECT pub_idFROM titlesWHERE type = 'business')

SELECT DISTINCT pub_nameFROM publishersWHERE EXISTS(SELECT *FROM titlesWHERE pub_id = publishers.pub_idAND type = 'business')

Page 11: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

3.4. BẢNG ẢO (VIEW)

11

3.4.1. Định nghĩa View

3.4.2 Sửa và Xóa View

Page 12: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

3.4. BẢNG ẢO (VIEW)

12

• View hay bảng ảo là bảng được tạo thành bởi các cột lấy từ một hay nhiều

bảng khác.

• Bảng ảo có thể được tạo nên nhờ câu lệnh SELECT

CREATE VIEW titles_viewASSELECT title, type, price, pubdateFROM titles

Page 13: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

13

CÂU HỎI TRẮC NGHIỆM

1. Đâu là trật tự đúng của các từ khóa sau trong câu truy SQL?a. SELECT, FROM, ORDER BY b. FROM, SELECT, ORDER BYc. ORDER BY, FROM, SELECT d. SELECT, ORDER BY, FROM

2. Những tham số nào sau đây không thể đứng trong mệnh đề SELECT trong câu GROUPBY theo ProductID

a. ProductID b. SUM(Quantity)c. ProductName d. COUNT(ProductID)

3. Liên kết hai bảng cho trước theo cách nào để được số bản ghi nhỏ nhất?a. INNER JOIN b. LEFT OUTER JOINc. RIGHT OUTER JOIN d. Cả ba cách đều cho số bản ghi bằng nhau

4. Từ khóa nào sau đây không được sử dụng trong truy vấn lồng nhau?a. ANY b. NOT EXISTc. SOME d. INNER JOIN

5. Có thể thực hiện truy vấn nào trên bảng ảo?a. SELECT b. INSERTc. UPDATE d. Cả ba cách

Page 14: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

14

ĐÁP ÁN TRẮC NGHIỆM

1. Đâu là trật tự đúng của các từ khóa sau trong câu truy SQL?a. SELECT, FROM, ORDER BY b. FROM, SELECT, ORDER BYc. ORDER BY, FROM, SELECT d. SELECT, ORDER BY, FROM

2. Những tham số nào sau đây không thể đứng trong mệnh đề SELECT trong câu GROUPBY theo ProductID

a. ProductID b. SUM(Quantity)c. ProductName d. COUNT(ProductID)

3. Liên kết hai bảng cho trước theo cách nào để được số bản ghi nhỏ nhất?a. INNER JOIN b. LEFT OUTER JOINc. RIGHT OUTER JOIN d. Cả ba cách đều cho số bản ghi bằng nhau

4. Từ khóa nào sau đây không được sử dụng trong truy vấn lồng nhau?a. ANY b. NOT EXISTc. SOME d. INNER JOIN

5. Có thể thực hiện truy vấn nào trên bảng ảo?a. SELECT b. INSERTc. UPDATE d. Cả ba cách

Page 15: TRUY VẤN DỮ LIỆU VÀ BẢ

B1_2011.11.26

TÓM LƯỢC CUỐI BÀI

Sau khi học xong Bài 3. Truy vấn dữ liệu và bảng ảo, học viên :

• Đã viết được được các câu lệnh truy ván theo yêu cầu

• Truy vấn được dữ liệu từ nhiều bảng với các hình thức kết nối bảng khác nhau

• Thực hiện được thao tác truy vấn lồng

• Tạo và sử dụng được View

15