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

71 481 0
Tài liệu đã được kiểm tra trùng lặp
Truy tìm dữ liệu trong 1CSDL Data retrieval

Đ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

Trang 1

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

Trang 2

Mục tiêu

Biết cách sử dụng các mệnh đề của lệnh SELECT để xem và tìm dữ liệu trong 1

Biết cách dùng các hàm hệ thống (T-SQL functions) để xem và khôi phục thông tin từ CSDL.

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 ] ]

[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

Mệnh đề select_list

< select_list > ::= {    *

| { table_name | view_name |

table_alias }.*

| { column_name | expression} [ [ AS ] column_alias ]

  | column_alias = expression  }    [ , n ]

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)

=Equal to

<>Not equal to!=Not equal to>Greater than

!>Not greater than<Less than

!<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 - Wildcards

% 1 chuỗi với số ký tự tuỳ ý

[] 1 ký tự được xác định nằm trong []

[^]Bất kỳ ký tự nào ngoại trừ các ký tự nằm trong [^]

Trang 20

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

Phone link

‘212%’Tất cả số phone có mã vùng là 212Name like

‘_an’Tên có 3 ký tự với tận cùng là an như Jan, Nan, hay Tan Name like

‘[BC]one’Tên chỉ có thể là Bone hay Cone Phone like

‘[^2]12%’Tất cả các số phone với mã vùng có 3 chữ số, chữ số đầu tiên khác 2, 2 chữ số còn lại phải là 12

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

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ờ thành chuỗi

Xem thông tin các hoá đơn với ngày theo dạng dd/mm/yyyy

SELECT OrderID, CONVERT(char,OrderDate,103) FROM dbo.Order

Xem thông tin các hoá đơn với ngày theo dạng mm/dd,yy

SELECT OrderID, CONVERT(char,OrderDate,1) FROM dbo.Order

Trang 32

Date and time functions

DATEADD(datepart, number, date).

Cộng 1 số vào 1 thành phần của ngày

DATEDIFF(datepart, date1,

date2)Tính hiệu giữa 2 thành phần ngàyDATENAME(datepart, date)Trả về 1 thành phần của

ngày dưới dạng chuỗiDATEPART(datepart, date)Trả về 1 thành phần của

ngày dưới dạng số nguyênGETDATE()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

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

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 45

System functions

Các hàm hệ thống cung cấp cách để truy vấn các bảng hệ thống của SQL Server

Các hàm hệ thống cho phép biến đổi nhanh các thông tin hệ thống mà không cần viết lệnh truy vấn

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 Discount)) FROM dbo.[Order Details]

SUM(UnitPrice*Quantity*(1- 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

Type Advance

- business 25125.0000

-mod_cook 15000.0000trad_cook 19000.0000

Trang 54

Ví dụ

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

Type Advance - -

business 25125.0000mod_cook 15000.0000popular_comp NULL

psychology NULL

trad_cook 19000.0000UNDECIDED NULL

(6 row(s) affected)

Trang 55

Ví dụ

SELECT Type,'Publisher ID' = Pub_Id,Average = AVG(Price)

FROM Titles

GROUP BY Type, Pub_Id

Trang 56

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 - - -

business 0736 2.9900business 1389 17.3100

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 đề

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à compute by

Cho phép nhiều hơn 1 cột hay biểu thức có thể được dùng cho mệnh đề COMPUTE BY.

Thứ tự của các cột hay biểu thức được dùng trong mệnh đề COMPUTE BY phải phù hợp với thứ tự của các cột hay biểu thức được dùng trong mệnh đề ORDER BY.

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 lệ :

COMPUTE AVG(Advance), AVG(Price) BY Type, Price, Advance

COMPUTE AVG(Advance), AVG(Price) BY Type, Price

COMPUTE AVG(Advance), AVG(Price) 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

◦Mệnh đề WHERE được áp dụng trước cho các

hàng trong bảng được truy vấn Chỉ những hàng nào thoả mãn điều kiện của mệnh đề WHERE mới được nhóm dữ liệu.

◦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

Mục lục

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

  • Truy vấn là gì? - Query

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

  • Mệnh đề select_list

  • Từ khoá [ALL|DISTINCT]

  • TOP n [PERCENT] [WITH TIES]

  • Các toán tử (T-SQL operators)

  • Một số ví dụ

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

  • Toán tử miền - Range Operators

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

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

  • Mệnh đề ORDER BY

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

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

  • Chuyển đổi kiểu dữ liệu Data type conversions

  • Lệnh CAST và CONVERT

  • Lệnh CAST và CONVERT

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

  • Ví dụ chuyển đổi ngày giờ thành chuỗi

Tài liệu cùng người dùng

Tài liệu liên quan