1. Trang chủ
  2. » Giáo án - Bài giảng

Truy tìm dữ liệu trong 1CSDL Data retrieval

71 482 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Truy tìm dữ liệu trong 1CSDL Data Retrieval
Trường học University of Information Technology and Communications
Chuyên ngành Database Systems
Thể loại Lecture notes
Năm xuất bản N/A
Thành phố Hà Nội
Định dạng
Số trang 71
Dung lượng 2,25 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hàm tập hợp - Aggregate functionsĐược dùng để tổng kết các giá trị của 1 cột hay 1 nhóm cột bên trong 1 bảng và cho kết quả là 1 giá trị đơn... Nhóm dữ liệu trong bảng kết quảNhững m

Trang 1

Truy tìm dữ liệu trong 1CSDL

Data retrieval

Trang 2

Biết cách dùng lệnh SELECT để tổ chức và nhóm dữ liệu.

Trang 3

Truy vấn là gì? - Query

Truy vấn là 1 yêu cầu của người dùng để:

 Truy tìm và khôi phục dữ liệu từ CSDL (Data retrieval)

 Chỉnh sửa dữ liệu (Data modification)

 Xoá dữ liệu (Data deletion)

Để tạo truy vấn:

 Query analyzer: gõ lệnh trực tiếp

 Enterprise Manager: nhấp phải chuột tại bảng cần xem, chọn lệnh open\Query-> cửa

sổ trợ giúp xây dựng truy vấn

Trang 4

Query Analyzer

Trang 5

Enterprise Manager queries

Trang 6

Cửa số xây dựng truy vấn Query Builder

Trang 8

Lệnh SELECT

 Cú pháp chung:

SELECT [ALL|DISTINCT] select_list

[ TOP n [ PERCENT ] [ WITH TIES ] ]

[INTO[[database.]owner.]table_name] FROM[[[database.]owner.]table_name|

view_name|UDF]

[WHERE search_conditions]

[GROUP BY aggregate_free_expression] [HAVING search_conditions]

[ORDER BY table_or_view_and_column] [COMPUTE row_aggregate(column_name)] [BY column_name]]

Trang 9

column_alias: là tên gọi khác thay thế cho tên cột trong bảng kết quả.

Trang 12

FROM aliases

Sử dụng alias thay cho tên bảng hay tên

view để tránh phải gõ nhiều và tránh nhầm lẫn

Ví dụ:

SELECT a.OrderID, a.OrderDate,

b CompanyName FROM Orders a, Customers b

WHERE a.CustomerID= b.CustomerID

Trang 13

TOP n [PERCENT] [WITH TIES]

hay n% của các hàng của bảng kết quả được xuất ra ngoài

vào bảng kết quả gốc nếu các hàng này có cùng giá trị trong cột ORDER BY với hàng cuối cùng của n hàng đầu tiên được xác định

Ví dụ: liệt kê 3 hoá đơn có cước phí cao nhất

SELECT top 3 with ties OrderID, Freight from Orders order by Freight DESC

Nếu hàng thứ tư có cùng cước phí (freight) với hàng thứ ba trong bảng kết quả thì sao???

Trang 14

Thứ tự ưu tiên : NOT, AND, OR

Các toán tử số học có độ ưu tiên cao hơn

toán tử luận lý

Các toán tử được bao trong cặp ngoặc đơn

sẽ có độ ưu tiên cao hơn tất cả các toán tử khác

Ví dụ: 3+10/5 + 8 % 3*16-10/2 ???

Trang 15

WHERE (Type ='mod_cook' OR

Type='business') AND Price>$10

Trang 16

Các toán tử so sánh (Comparison operators)

!< Not less than

>= Greater than or equal to

<= Less than or equal to

Trang 17

Toán tử miền - Range

Operators

value BETWEEN value1 AND value2

 Toán tử miền BETWEEN AND được dùng để đánh giá xem value có nằm trong miền giá trị

từ value1 đến value2 hay không?

 Ví dụ 1:

SELECT Title from Titles

WHERE price BETWEEN 2000 AND 5000

 Ví dụ 2:

SELECT Title from Titles

WHERE (price >= 2000) AND (price <=5000)

Trang 18

Toán tử liệt kê - List

Operators

Value IN (value1, value2, value3,…)

Toán tử IN dùng để xác định xem value có

phải là 1 trong các giá trị nằm trong danh sách các giá trị value1, value2, value3,…

Trang 19

Ký hiệu đại diện -

Trang 20

Ký hiệu đại diện - Wildcards

Trang 21

where country = 'USA'

order by city, region

Trang 22

Hàm tập hợp - Aggregate functions

Được dùng để tổng kết các giá trị của

1 cột hay 1 nhóm cột bên trong 1 bảng

và cho kết quả là 1 giá trị đơn.

Trang 23

Hàm tập hợp - Aggregate functions

Trang 25

Chuyển đổi kiểu dữ liệu

Data type conversions

Việc đổi kiểu dữ liệu là cần thiết khi:

 Cần chuyển dữ liệu từ nơi này sang nơi khác

mà nguồn và đích không cùng kiểu nhau.

 So sánh dữ liệu khác loại nhau

Các kiểu chuyển đổi:

1 Chuyển đổi ngầm định (Implicit conversions)

2 Chuyển đổi tường minh (Explicit conversions)

Trang 26

Chuyển đổi kiểu dữ liệu

Data type conversions

Chuyển đổi ngầm định - xảy ra tự động Hầu hết việc chuyển đổi dữ liệu này xảy ra mà

không cần sự can thiệp của người dùng

Chuyển đổi tường minh - yêu cầu phải có

lệnh chuyển đổi

Không cho phép chuyển đổi - một số kiểu dữ liệu không cho phép chuyển đổi giữa chúng

Trang 27

Lệnh CAST và CONVERT

CAST và CONVERT được dùng để chuyển đổi tường minh từ 1 kiểu dữ liệu này sang kiểu dữ liệu khác Chúng được dùng khi chuyển đổi ngầm định không được hỗ trợ

Lệnh CAST có cú pháp dễ dùng nhất nhưng cũng có nhiều hạn chế hơn

Lệnh CONVERT thì linh hoạt hợn nhưng

không tích hợp với SQL-92

Trang 28

Lệnh CAST và CONVERT

CAST (expression AS data_type)

CONVERT(data_type[(length)], expression [,style])

◦ Data_type : kiểu dữ liệu đích

◦ Expression : biểu thức cần chuyển đổi kiểu

◦ Style: tham số tuỳ chọn dùng để xác định các định dạng khác nhau khi dữ liệu datetime hay smalldatetime được chuyển đổi thành dạng ký tự.

Trang 29

Một số giá trị của style

Khi chuyển đổi từ datetime/smalldatetime thành kiểu character

Năm có 2 chữ

số Two-digit

year

Năm có 4 chữ số Four-digit year

Trang 30

V í dụ

Dùng lệnh CAST

USE pubs

SELECT * FROM titles WHERE

CAST(ytd_sales AS char(20)) LIKE '3%'

Use CONVERT

USE pubs

SELECT * FROM titles WHERE

CONVERT(char(20), ytd_sales) LIKE '3%'

Trang 31

Ví dụ chuyển đổi ngày giờ

Trang 32

Date and time functions

DATEDIFF (datepart, date1,

date2) Tính hiệu giữa 2 thành phần ngày

DATENAME (datepart, date) Trả về 1 thành phần của

ngày dưới dạng chuỗi

DATEPART (datepart, date) Trả về 1 thành phần của

ngày dưới dạng số nguyên GETDATE () Trả về ngày giờ hiện hành

Trang 33

Thành phần ngày (Datepart) và các ký hiệu

Trang 34

Ví dụ các hàm ngày giờ

SELECT OrderID,DATEDIFF (yy, Ord_Date,

getdate()) FROM Sales

Liệt kê các hoá đơn và cho biết hoá đơn đó đã bán được bao nhiêu năm

SELECT Title_Id, Month = DATENAME (mm,

PubDate), Year =DATENAME (yy,PubDate)

FROM Titles

Liệt kê mã sách cùng với tháng, năm đã xuất bản sách đó

Trang 35

Ví dụ các hàm ngày giờ

SELECT cCollegeCode,

RecruitmentStartDate, 'Proposed Deadline' =

DATEADD(dd, 10,

dRecruitmentStartDate) FROM CampusRecruitment

Danh sách mã các trường cao đẳng đang được xét tuyển dụng cùng với

Trang 36

Mathematical functions

CEILING

Trang 37

Mathematical functions

Trang 39

String functions

Trang 40

String functions

Trang 41

String functions

Trang 42

String functions

Trang 43

SELECT STR

(123.45,6,2)

Returns '123.45‘.It converts numeric data to character data where the length is the total length, including the decimal point, the sign, the digits, and the paces and the decimal is the number of places to the right of the decimal point.

Trang 44

Ví dụ về chuỗi

Dùng các hàm về chuỗi tách ‘Nguyễn Văn Hai’ thành họ, họ lót và tên

 SELECT LEFT(‘Nguyễn Văn Hai’,5)  ‘Nguyễn’

 SELECT SUBSTRING(‘Nguyễn Văn Hai’,8,3) 

‘Văn’

 SELECT RIGHT(‘Nguyễn Văn Hai’,3)  ‘Hai’

Trang 46

System functions

Trang 47

System functions

Trang 50

Ví dụ các hàm gộp trong lệnh select

SELECT sum(Freight) from dbo.Orders

 Tính tổng cước phí chuyên chở của tất cả hoá đơn

SELECT count(OrderID) from dbo.Orders

 Đếm số hoá đơn

SELECT

SUM(UnitPrice*Quantity*(1-Discount)) FROM dbo.[Order Details]

 Tính doanh số bán hàng

Trang 51

Nhóm dữ liệu trong bảng kết quả

Những mệnh đề dùng để nhóm dữ trong bảng kết quả:

GROUP BY: tổng hợp bảng kết quả theo nhóm bằng cách dùng các hàm gộp

COMPUTECOMPUTE BY: mệnh đề COMPUTE trong lệnh SELECT được dùng để phát ra các hàng tổng hợp bằng cách dùng hàm gộp Mệnh đề COMPUTE BY được dùng

để tổng hợp thêm các hàng kết quả theo cột

Trang 52

Mệnh đề Group by

[ GROUP BY [ ALL ] group_by_expression [ , n

] [ WITH { CUBE | ROLLUP } ] ]

ALL: bảng kết quả sẽ chứa tất cả các nhóm kể

cả những nhóm không thỏa mãn điều kiện lọc trong trong mệnh đề WHERE, những nhóm

không thoả điều kiện sẽ có giá trị null Không thể dùng ALL với các toán tử CUBE hay

ROLLUP

group_by_expression: biểu thức dùng để xác

định cột được nhóm

Trang 53

Ví dụ

 SELECT Type, Advance = SUM (Advance) FROM Titles WHERE Type IN ('business', 'mod_cook', 'trad_cook') GROUP BY Type

Trang 54

Ví dụ

 SELECT Type, Advance = SUM (Advance) FROM Titles WHERE Type IN ('business', 'mod_cook', 'trad_cook') GROUP BY ALL Type

Trang 55

Ví dụ

SELECT Type,'Publisher ID' = Pub_Id,

Average = AVG(Price)

FROM Titles

GROUP BY Type, Pub_Id

Trang 56

Toán tử CUBE

 Toán tử cube được dùng để phân tích theo nhiều chiều Mỗi cột trong mệnh đề GROUP BY được

xem là 1 chiều (dimension), bảng kết qủa sẽ

chứa tất cả các tổ hợp giá trị có thể có theo

nhiều chiều.

 Mệnh đề SELECT nên chứa tất cả các cột có

trong biểu thức GROUP BY

Trang 57

Ví dụ với toán tử cube

Type Publisher ID Average

Trang 58

Toán tử ROLLUP

Ngoài những hàng thông thường được cung

cấp bởi GROUP BY, các hàng tổng hợp sẽ được đưa vào bộ kết quả Các nhóm được tổng hợp theo thứ tự phân cấp, từ mức thấp nhất đến mức cao nhất Phân cấp nhóm được xác định theo thứ tự các cột được xác định trong mệnh

đề GROUP BY

Ví dụ: SELECT Type,Pub_id, 'Sum' =

sum(Ytd_Sales) FROM Titles

GROUP BY Type,Pub_id with rollup

Trang 61

Mệnh đề COMPUTE

Mệnh đề COMPUTE để phát ra các hàng tổng hợp

[BY column_name [, column_name] ]

Trang 62

COMPUTE & COMPUTE BY

Khi COMPUTE BY được dùng: có 2 bộ kết quả cho mỗi nhóm

◦ Tập hợp các hàng chi tiết cho mỗi nhóm

◦ Một hàng chứa tổng con (subtotal) cho

mỗinhóm

Khi COMPUTE được dùng, có 2 bộ kết quả:

◦ Bộ kết quả chứa các hàng chi tiết của mỗi nhóm

◦ Bộ kết quả thứ hai chỉ có 1 hàng chứa giá trị tổng (total) của hàm tổng hợp.

Trang 63

Ví dụ

USE pubs

SELECT type, price, advance

FROM titles ORDER BY type

COMPUTE SUM(price), SUM(advance)

SELECT type, price, advance

FROM titles ORDER BY type

COMPUTE SUM(price), avg(price),

SUM(advance) by type

Trang 64

Một số quy luật khi dùng Compute và

compute by

Tất cả các cột được dùng trong mệnh đề

COMPUTE phải có mặt trong mệnh đề

SELECT

Khi mệnh đề COMPUTE BY được dùng thì

ORDER BY cũng phải được dùng tên cột hay biểu thức

Các hàm tổng hợp khác nhau có thể được dùng cho cùng một cột trong mệnh đề

COMPUTE BY

Trang 65

Một số quy luật khi dùng Compute và

Trang 66

Một số quy luật khi dùng Compute và

compute by

Ví dụ: khi dùng Mệnh đề ORDER BY

ORDER BY Type, Price, Advance

Thì các mệnh đề COMPUTE BY sau đều hợp

Trang 67

Ví dụ của mệnh đề Compute

SELECT Type, Advance

FROM TitlesORDER BY TypeCOMPUTE AVG (advance) BY Type

Trang 68

So sánh COMPUTE và GROUP BY

Mệnh đề GROUP BY tạo ra chỉ một hàng cho mỗi nhóm Mệnh đề SELECT chỉ chứa các cột dùng để nhóm và các hàm tổng hợp

Mệnh đề COMPUTE tạo ra nhiều bộ kết quả:

◦ Một dạng của bộ kết quả chứa tất cả các hàng của mỗi nhóm

◦ Một dạng khác chứa giá trị tổng hợp cho mỗi nhóm hay tổng chung cho cả lệnh.

◦ Mệnh đề Select chỉ chứa các biểu thức thay vì các cột dùng để nhóm hay các hàm tổng hợp

Trang 69

GROUP BY và HAVING

 Có thể hạn chế các nhóm trong bảng kết quả bằng mệnh đề HAVING

 Chỉ sau khi dữ liệu đã được nhóm và tổng hợp , điều kiện trong mệnh đề HAVING mới được

áp dụng Chỉ các nhóm thoả mãn điều kiện mới xuất hiện trong bảng kết quả.

 Không thể dùng 1 cột mà nó không tham gia vào hàm gộp của mệnh đề SELECT hay của mệnh mệnh đề GROUP BY

Trang 70

◦ Sau đó mệnh đề HAVING sẽ được áp dụng cho các nhóm Chỉ những nhóm thoả mãn điều kiện HAVING mới được xuất ra bảng kết quả

Trang 71

Sử dụng mệnh đề HAVING và WHERE

SELECT titles.pub_id, AVG(titles.price) FROM titles INNER JOIN publishers

ON titles.pub_id = publishers.pub_id WHERE publishers.state = 'CA'

GROUP BY titles.pub_id

HAVING AVG(price) > 10

Ngày đăng: 12/05/2014, 12:08

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w