CHƯƠng 1: TỔng quan về sql server và csdl quan hệ i-giới thiệu sql server


III-TRUY XUẤT DỮ LIỆU : (DATA QUERY LANGUAGE)



tải về 457.4 Kb.
trang4/12
Chuyển đổi dữ liệu27.07.2016
Kích457.4 Kb.
#7139
1   2   3   4   5   6   7   8   9   ...   12

III-TRUY XUẤT DỮ LIỆU : (DATA QUERY LANGUAGE) :


SELECT

[INTO new_table ]

[FROM ]



[WHERE <điều kiện chọn dòng> ]

[GROUP BY ]

[HAVING <điều kiện chọn nhóm> ]

[ORDER BY [ASC | DESC ]]

Cú pháp đầy đủ của phát biểu Select khá phức tạp. Chúng ta sẽ lần lượt làm rõ từng phần của phát biểu này.


-1FROM CLAUSE :


Chỉ định nguồn dữ liệu. Để truy vấn thông tin từ nhiều bảng, Sử dụng phép kết giữa các bảng trong mệnh đề FROM: (theo ANSI)

ON

: Gồm các phép kết :

INNER JOIN, LEFT [OUTER] JOIN; RIGHT [OUTER] JOIN;

FULL [OUTER] JOIN : kết hợp Left Join và Right Join

CROSS JOIN : không có mệnh đề ON và là phép tích Cartesian.



: chỉ định điều kiện liên kết giữa 2 bảng.

-2SELECT CLAUSE :


SELECT [DISTINCT] [TOP n [PERCENT] [ WITH TIES] ]
[FROM ]


    • DISTINCT : Chỉ hiện những dòng có dữ liệu phân biệt.Mặc định các dòng trùng dữ liệu đều được xuất hiện trong kết quả.

    • TOP n [PERCENT] : chỉ hiện n dòng hoặc n% dòng đầu tiên. n là số nguyên tứ 0 đến 100.

    • WITH TIES: hiện luôn những dòng có cùng giá trị của những cột khóa sắp xếp trong mệnh đề ORDER BY.

    • ::= { * | { table_name | view_name | table_alias }.*

| column_name [ [AS] column_alias ]

| expression [ [AS] column_alias ]

| column_alias = expression } [,...n]


    • Dấu * : hiển thị tất cả các cột của các table

    • { TableName | ViewName | TableAlias }.* : Hiện tất cả các cột của bảng chỉ định.

    • ColumnName [AS] ColunmAlias : Đổi tên cột trên bảng nguồn. Nếu bí danh có dấu cách hoặc trùng với từ khoá của SS, bạn phải ghi bí danh trong dấu nháy đơn hoặc dấu ngoặc vuông ([…])

    • column_alias = expression hoặc expression [AS] column_alias: Tạo cột tính toán. Nếu không chỉ định Column Alias thì cột không có tên.

expression là dãy các toán hạng (Operand) nối với nhau bởi các phép toán (Operator):

-aCác phép toán có thể là:


Các phép toán số học: * (nhân), / (chia), % (phần dư); + (cộng), - (trừ). Thứ tự ưu tiên cao nhất theo 3 cụm từ trái qua phải.

Phép nối chuỗi : ( + )


-bToán hạng có thể là:


Tên thuộc tính (có thể kèm theo tên bảng và dấu chấm đứng trước).

Hàm (function).

Trực hằng (Literals): bao gồm hằng số (Number - Ví dụ. 1234.56 1234.56), hằng văn bản (Text) và ngày giờ trong cặp dấu nháy đơn (Ví dụ. ‘Nguyễn Hồng Anh’ ) và hằng lôgic (True hay False); Giá trị NULL.

Tên biến (Variable)

-cCác hàm toán học:


ABS(x) : Trị tuyệt đối của x

SQRT(x) : Căn bậc hai của x

SQUARE( x)  : x2

POWER( y, x )  : yx

LOG(x) : Logarit tự nhiên của x

EXP(x) : Hàm mũ cơ số e của x: ex.

SIGN(x) : Lấy dấu của số x (-1: x<0, 0: x=0, +1: x>0)

ROUND(x,n) : Làm tròn tới n số lẻ.

CEILING( x) : Số nguyên nhỏ nhất nhưng lớn hơn x

FLOOR(X) : Số nguyên lớn nhất nhưng nhỏ hơn x

... và các hàm lượng giác: SIN, COS, TAN, ASIN, ACOS, ATAN ...

-dCác hàm xử lý chuỗi ký tự:


ACSII( ch ) : Mã ASCII của ký tự ch

CHAR( n ) : Ký tự có mã ASCII là n

LOWER( str ) : Trả về chuỗi chữ thường

UPPER(str) : Trả về chuỗi chữ hoa

LTRIM(str) : Trả về chuỗi không có dấu cách bên trái

RTRIM(str) : Trả về chuỗi không có dấu cách bên phải

LEFT(str,n): Lấy n ký tự phía trái của dãy str.

RIGHT(str,n): Lấy n ký tự phía phải của dãy str.

SUBSTRING(str, start, n): Lấy n ký tự của dãy str kể từ vị trí start trong dãy.

REPLACE(str1, str2, str3): thay thế tất cả str2 trong str1 bằng str3.

STUFF(str1, start, n, str2 ): Thay thế n ký tự trong str1 từ vị trí start bằng chuỗi str2.

STR( x, len [, Dec]): Chuyển số x thành chuỗi.


-eCác hàm xử lý ngày tháng và thời gian:


GETDATE(): Cho ngày tháng năm hiện tại (Oracle: SYSDATE)

DAY(dd): Cho số thứ tự ngày trong tháng của biểu thức ngày dd.

MONTH(dd): Cho số thứ tự tháng trong năm của biểu thức ngày dd.

YEAR(dd): Cho năm của biểu thức ngày dd.



DATEPART(datepart, date)

DATEADD(datepart,number, date)

DATEDIFF(datepart, date1, date2)


Datepart

Abbreviations

Year

yy, yyyy

Quarter

qq, q

Month

mm, m

Day of year

dy, y

Day of Month

dd, d

Week of year

wk, ww

Weekday

dw

Hour

hh

Minute

mi, n

Second

ss, s

Millisecond

Ms

-fCác hàm chuyển đổi kiểu giá trị:


CAST(expression AS data_type[(length)])

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

Style : Dạng thức kiểu ngày mà bạn muốn khi chuyển đổi dữ liệu kiểu datetime hoặc smalldatetime tới kiểu ký tự (nchar, nvarchar, char, varchar, nchar, or nvarchar), Hoặc dạng chuỗi mà bạn muốn khi chuyển dữ liệu kiểu số (float, real, money, or smallmoney) sang kiểu ký tự(nchar, nvarchar, char, varchar, nchar, or nvarchar).

Trong bảng, 2 cột bên trái biểu diễn dạng giá trị datetime hoặc smalldatetime chuyển sang character. Cộng thêm 100 cho giá trị style để được dạng năm 4 chữ số.

Without
century (yy)


With century
(yyyy)


Standard

Input/Output**

-

0 or 100 (*)

Default

mon dd yyyy hh:miAM (or PM)

1

101

USA

mm/dd/yy

2

102

ANSI

yy.mm.dd

3

103

British/French

dd/mm/yy

4

104

German

dd.mm.yy

5

105

Italian

dd-mm-yy

6

106

-

dd mon yy

7

107

-

mon dd, yy

8

108

-

hh:mm:ss

-

9 or 109 (*)

Default+milliseconds

mon dd yyyy hh:mi:ss:mmmAM (or PM)

10

110

USA

mm-dd-yy

Ví dụ: Select Conver(Char(8), GetDate(), 2) -- kết quả : 04.09.16

Giá trị Style để chuyển kiểu float hay real sang kiểu ký tự.

0 (the default): Tối đa 6 chữ số, dùng trong ký hiệu khoa học.

1 luôn luôn 8 chữ số. Luôn dùng trong ký hiệu khoa học.

2 luôn luôn 16 chữ số. Luôn dùng trong ký hiệu khoa học..

In the following table, the column on the left represents the style value for money or smallmoney conversion to character data.

0 (the default) Không dấu phẩy phân cách hàng ngàn; có 2 chữ số thập phân.

Ví dụ: 4235.98.

1 Có dấu phân cách hàng ngàn và 2 chữ số thập phân;

Ví dụ: 3,510.92.

2 Không dấu phẩy phân cách hàng ngàn, ; có 4 chữ số thập phân.

Ví dụ: 4235.9819.


-gMột số hàm hệ thống:


ISDATE(variable | column name): Kiểm tra dạng ngày hợp lệ. Trả về 1 nếu hợp lệ và 0 nếu không hợp lệ.

ISNUMERIC(variable | column name): Kiểm tra dạng số hợp lệ. Trả về 1 nếu hợp lệ và 0 nếu không hợp lệ.

ISNULL(expression, value) : Trả về giá trị value nếu expression có giá trị NULL, ngược lại trả về giá trị của expression. Giá trị trả về cùng kiểu với exoression.

NULLIF(exp1, exp2) : Trả về giá trị NULL nếu exp1 = exp2.

COALESCE(exp1, exp2, .., expN) : trả về biểu thức khác NULL đầu tiên.

@@ROWCOUNT: Trả về số dòng (kiểu integer) trả về bởi phát biểu cuối cùng.

Ví dụ: cập nhật dữ liệu với UPDATE và dùng @@ROWCOUNT để xác định số dòng đã được thay đổi.

UPDATE authors SET au_lname = 'Jones'

WHERE au_id = '999-888-7777'

IF @@ROWCOUNT = 0

print 'Warning: No rows were updated'

@@ERROR : Trả về mã lỗi (integer) nếu có của phát biểu T-SQL cuối cùng. Trả về số 0 nếu không có lỗi.

Ví dụ: Dùng @@ERROR để kiểm tra vi phạm ràng buộc (error #547) trong phát biều cập nhật.

USE pubs

GO

UPDATE authors SET au_id = '172 32 1176'



WHERE au_id = "172-32-1176"

IF @@ERROR = 547

print "Vi phạm ràng buộc"

-3WHERE CLAUSE:


Chọn lựa những mẫu tin theo điều kiện.

Syntax: WHERE |

::= column_name { *= | =* } column_name

3.1 Các phép toán so sánh: <, <=, !<, >, >=, !>, =, <> hay !=.

Kết quả phép so sánh là giá trị lôgíc (True hoặc False).

3.2 Các phép toán lôgic: NOT, AND (conjunction), OR (disjunction).

Kết quả các phép toán lôgíc là một giá trị lôgíc.

3.3 Các phép toán phạm vi:

IS [NOT] NULL

[NOT] IN ()

[NOT] BETWEEN AND

[NOT] LIKE ‘Mẫu v.bản’ --Dùng ký hiệu thay thế là dấu % và dấu (_ )

[NOT] EXISTS(SubQuery) : Trả về True nếu tồn tại ít nhất 1 mẫu tin.

3.4 <phép so sánh> [<lượng từ>] (SubQuery):




  • có thể là các phép so sánh số học (>, >=, <, <=, <>, =) hoặc phép toán tập hợp IN, LIKE hoặc NOT LIKE.

  • <Lượng từ> có thể là ALL, ANY (hoặc SOME). Phép so sánh = ANY có thể được thay tương đương bằng phép toán IN; phép so sánh <> ALL có thể thay tương đương bằng phép toán NOT IN.

3.5 Phép kết ngoài (outer join): column_name { *= | =* } column_name

Trong đó, phép toán (*= ) Left outer join và phép toán (=*) Right outer join.



Chú ý: Để định lại thứ tự các phần của kiểu ngày phù hợp với hằng kiểu ngày trong biểu thức điều kiện. Sử dụng lệnh : SET DATEFORMAT mdy | dmy | ymd | ydm | myd | dym

-4ORDER BY CLAUSE:


Mệnh đề ORDER BY dùng sắp xếp kết quả tìm được. Cú pháp mệnh đề này là:

ORDER BY | [ASC | DESC], | [ASC | DESC], ...


-5Tổng hợp dữ liệu:


5.1 Các hàm tổng hợp:

AVG( [Distinct] Column_name)

Count( * )

Count([Distinct] Column_name)

Max(Column_name)

Min(Column_name)

Sum([Distinct] Column_name)

Ví dụ: Cho biết số mặt hàng đã bán trong ngày cuối cùng:

SELECT COUNT( DISTINCT MaMH) FROM HoaDon, CTHD

WHERE HoaDon.NgayHD IN (SELECT MAX(NgayHD) FROM HoaDon)

AND HoaDon.MaHD = CTHD.MaHD



5.2 GROUP BY CLAUSE:

Cú pháp: GROUP BY [ALL]

Phân nhóm mẫu tin theo giá trị của các cột làm chuẩn phân nhóm, Mỗi nhóm dữ liệu trả về một dòng tổng hợp.

Mệnh đề GROUP BY ALL trả về tất cả các nhóm, kể cả những nhóm không thỏa mãn điều kiện của mệnh đề WHERE.

Chú ý: Mệnh đề GROUP BY phải chứa tất cả các cột không tổng hợp có trong mệnh đề SELECT.

5.3 HAVING CLAUSE:

Cú pháp: HAVING <điều kiện chọn nhóm>

Dùng chỉ định những dòng tổng hợp xuất hiện phải thỏa mãn điều kiện chỉ định.


tải về 457.4 Kb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6   7   8   9   ...   12




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương