Cỏc hàm thư viện

Một phần của tài liệu Tài liệu học tập Cơ sở dữ liệu (Trang 81)

o Hàm Count()

Hàm Count() trả về số lượng mẩu tin trong cõu truy vấn trờn bảng. Cỳ phỏp:

Select Count(tờn_cột) From tờn_bảng…. Vớ dụ :

Company SUM(Amount)

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

Lưu ý:

- Khi sử dụng Count(*) sẽ trả về số bản ghi của bảng

- Cần phõn biệt Cout( tờn_cột) với Count(*) : Về cơ bản chỳng giống nhau tuy nhiờn hàm Count(*) đếm cả những bản ghi cú giỏ trị NULL, Count(tờn_cột) thỡ khụng.

Vớ dụ:

Trong bảng Employees cú 107 bản ghi, thuộc tớnh Commission_PCT cú vị trớ chứa giỏ trị NULL.

Khi sử dụng hàm Count(*) và hàm Count(Commisson_pct) ta cú :

Để trỏnh đếm những giỏ trị trựng lặp ta cú thể dựng thờm từ khúa DISTINCT.

Vớ dụ:

o Hàm Sum()

Hàm trả về tổng cỏc giỏ trị của trường, cột trong cõu truy vấn Vớ dụ:

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

o Hàm Min, Max

Hàm min, max trả về giỏ trị nhở nhất, giỏ trị lớn nhất của cột hay trường trong cõu truy vấn.

Cỳ phỏp : Select Min [Max] (tờn_cột) From tờn_bảng [Where điều_kiện] Vớ dụ:

o Hàm tớnh trung bỡnh cộng

Trả về giỏ trị bỡnh quõn của cột hay trường trong cõu truy vấn. Cỳ phỏp : Select AVG (tờn_cột) From tờn_bảng [Where điều_kiện] Vớ dụ:

2.2.6.5. Khung nhỡn (View)

Trong SQL, View là một bảng ảo được tạo ra dựa trờn kết quả của một cõu lệnh truy vấn SQL. Một view chứa cỏc dũng và cỏc cột, nú chỉ giống như một bảng, mỗi trường của view là một thuộc tớnh từ một hoặc nhiều bảng thực ( real table) trong cơ sở

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

dữ liệu. Với view cú thể sử dụng cỏc hàm truy vấn SQL, mệnh đề Where và cỏc cõu lệnh Join để xem và hiển thỡ dữ liệu giống như truy vấn từ một bảng đơn bỡnh thường.

Cỳ phỏp:

CREATE VIEW tờn_view (danh_sỏch_tờn_cột) AS mệnh_đề_select

Khi tạo View cần chỳ ý một số điểm sau:

• Tờn view phải tuõn theo quy tắc về định danh và phải duy nhất đối với người sử dụng.

• Khụng thể ràng buộc cỏc mặc định, cỏc quy tắc cho view.

• Trong cõu lệnh Create view khụng nhất thiết phải chỉ định tờn cột. Tờn của cỏc cột cũng như kiểu dữ liệu của chỳng sẽ tương ứng với cỏc cột trong danh sỏch chọn của cõu lệnh Select.

• Bạn phải xỏc định tờn cột trong cõu lệnh Create view trong cỏc trường hợp sau:  Mỗi cột của view được phỏt sinh từ một biểu thức số học, một hàm cài sẵn

hay một hằng.

 Hay nhiều cột của view cú trựng tờn.

 Bạn muốn thay đổi tờn cột trong view khỏc với tờn cột của bảng cơ sở.

Vớ dụ 1:Cho database Quanlysinhvien

Y/c: Tạo view Thongtin_sv (masv, hoten, tuoi, tenlop)

Create view thongtin_sv (masv, hoten, tuoi, tenlop) As

Select masv, hoten, datediff(year, ngaysinh, getdate()), tenlop From sinhvien, lop

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

Vớ dụ 2:

2.2.7 Giới thiệu về ngụn ngữ lập trỡnh T-SQL trong SQL Server 2.2.7.1 Biến cục bộ (Local variable) 2.2.7.1 Biến cục bộ (Local variable)

- Được khai bỏo trong phần thõn của một bú lệnh hoặc một thủ tục.

- Phạm vi hoạt động của biến bắt đầu từ điểm mà nú được khai bỏo cho đến khi kết thỳc một lụ (batch) hoặc stored procedure hoặc Function mà nú được khai bỏo. - Tờn của biến bắt đầu @

Khai bỏo:

DECLARE @var_name var_type trong đú:

@var_name: Tờn của biến được đặt theo qui tắc định danh.

var_type: Kiểu dữ liệu của biến.

string_expr: Một biểu thức trả về giỏ trị chuỗi.

Vớ dụ:

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

DECLARE @mNHD DATETIME

Gỏn giỏ trị cho biến:

Nếu biến vừa khai bỏo xong thỡ biến mặc nhiờn được gỏn giỏ trị là NULL. Để gỏn biến ta dựng lệnh SET hoặc dựng cõu lệnh SELECT

SET @var_name = expression

SELECT { @var_name = expression } [,...n ]

Vớ dụ: gỏn giỏ trị là ngày 25/03/2014 vào biến mNHD DECLARE @mNHD DATETIME

SET @mNHD='2014-03-25'

In giỏ trị của biến cục bộ:

PRINT msg_str | @local_variable | string_expr

Trong đú:

msg_str: Hằng chuỗi;

@local_variable: Biến cục bộ;

Vớ dụ : Tỡm số lượng bỏn được lớn nhất của sản phẩm mó S1 DECLARE @mSL INT

SELECT @mSL=MAX(SL) FROM CTHD

WHERE MaSP='S1' PRINT @mSL

Chỳ ý: Khi cú kết hợp với chuỗi, phải đổi kiểu dữ liệu sang kiểu chuỗi bằng hàm CAST hay CONVERT

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

CONVERT(kiểu_DL,Tờn_biến)

Vớ dụ : Tỡm số lượng bỏn được lớn nhất của sản phẩm mó S1 declare @msl int

select @msl=max(sl) from cthd

where masp='s1'

print 'max s1 = '+cast(@msl as char(10)) Hoặc

declare @msl int select @msl=max(sl) from cthd

where masp='s1'

print 'max s1 = '+convert(char(10), @msl)

2.2.7.2 Biến hệ thống.

Global variable trong SQL Server gọi là System Function: Từ SQL Server 7.0 biến Global được định nghĩa như là hàm hệ thống. Mỗi kết nối sẽ tạo ra một session, SQL Server tạo ra sẳn một số biến cú sẳn rất tiện ớch trong việc lập trỡnh và quản trị hệ thống. Cỏc biến này khụng cú kiểu, tờn bắt đầu @@.

Cỏc biến í nghĩa

@@VERSION Phiờn bản của SQL Server và hệ điều hành @@TRANCOUNT Xem coi cú bao nhiờu transaction đang mơ

@@ROWCOUNT Trả về số dũng bị ảnh hưởng đối với lệnh thực thi gần nhất

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

@@ERROR Trả về lỗi số (STT lỗi) của lệnh sau cựng mà SQL thực thi, là 0 cú nghĩa là cõu lệnh thực thi hoàn thành.

@@FETCH_STATUS Trả về trạng thỏi của lệnh Fetch của biến con trỏ cú thành cụng hay khụng (0: Thành cụng, -1: bị lỗi hoặc vượt quỏ phạm vi; -2: Thất bại)

@@LANGUAGE Tờn của ngụn ngữ đang được sử dụng @@MAX_CONNECTIONS Số kết nối tối đó cú thể

@@SERVERNAME Tờn của mỏy chủ

@@SERVICENAME Tờn của dịch vụ SQL trờn mỏy chủ

@@TIMETICKS Số milliseconds trong một tick trờn mỏy chủ

2.2.7.3 Cỏc toỏn tử.

Toỏn tử số học :

Toỏn tử số học được phộp sử dụng trong việc tớnh toỏn cỏc phộp tớnh : cộng, trừ, nhõn, chia và chia lấy phần dư. Cỏc biểu thức, giỏ trị tớnh toỏn phải cú kiểu dữ liệu là số khi thực hiện cỏc toỏn tử này. Thứ tự ưu tiờn của cỏc toỏn tử số học là : nhõn, chia và chia lấy phần dư trước sau đú đến cộng và trừ. Tuy nhiờn bạn nờn chỉ định tường minh thứ tự thực hiện cỏc toỏn tử số học bằng cỏch đưa vào cỏc dấu ngoặc đơn trong một biểu thức tớnh toỏn.

Vớ dụ :

Hai cõu lệnh bờn dưới sẽ trả về kết quả như nhau : SELECT 10 +15*70/100

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

Tuy nhiờn với cõu lệnh thứ hai, bạn thấy rừ ràng hơn bởi vỡ phộp nhõn bờn trong cựng của dấu ngoặc đơn sẽ thực hiện trước sau đú là tới phộp chia và cuối cựng mới là phộp cộng.

Toỏn tử số học được phộp sử dụng cho cỏc kiểu dữ liệu số như : int, bigint, smallint, tinyint, numeric, decimal, float, real, money và smallmoney. Tuy nhiờn đối với phộp tớnh chia lấy phần dư chỉ được sử dụng cho cỏc kiểu dữ liệu số nguyờn như : int, bigint, smallint và tinyint.

Vớ dụ :

Thể hiện phộp chia lấy phần dư của hai số nguyờn 15 và 6. Bạn sử dụng cõu lệnh như sau :

SELECT 15%6 Kết quả trả về là 3.

Toỏn tử nối chuỗi :

Toỏn tử nối chuỗi được phộp sử dụng trong việc kết nối cỏc chuỗi rời rạc thành một chuỗi liờn tục. Cỏc biểu thức, giỏ trị khi nối chuỗi phải cú kiểu dữ liệu là chuỗi hoặc

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

phải được chuyển đổi thành kiểu dữ liệu chuỗi trước khi thực hiện toỏn tử này. Ký hiệu của toỏn tử nối cỏc chuỗi lại với nhau là dấu cộng (+).

Vớ dụ :

Để nối hai chuỗi "Hello" và "The World !" lại thành chuỗi "Hello The World !", bạn sử dụng cõu lệnh sau :

SELECT “Hello”+ “ ” + “The World”

Vớ dụ :

Cho biết ngày đặt hàng của đơn đặt hàng số D007 là bao nhiờu, bạn sử dụng cõu lệnh sau :

SELECT “Ngày đặt hàng D007 là: “ +CASE(NGAYDH AS CHAR(11)) FROM DONDH

WHERE SODH = “D007”

Trong vớ dụ trờn bắt buộc phải chuyển đổi giỏ trị dữ liệu của cột ngày đặt hàng trong bảng DONDH từ kiểu dữ liệu ngày sang kiểu dữ liệu chuỗi trước khi thực hiện toỏn tử nối chuỗi.

Toỏn tử so sỏnh :

Toỏn tử so sỏnh được phộp sử dụng để thực hiện cỏc phộp so sỏnh như : bằng, khỏc, lớn hơn, nhỏ hơn, … cho cỏc biểu thức cần được so sỏnh. Giỏ trị trả về của việc so sỏnh sẽ là đỳng hoặc sai tựy thuộc vào biểu thức điều kiện mà bạn đưa ra để so sỏnh.

Cỏc toỏn tử so sỏnh cú thể được sử dụng trờn nhiều kiểu dữ liệu khỏc nhau như : kiểu số, kiểu chuỗi hoặc kiểu ngày. Thụng thường cỏc biểu thức so sỏnh sẽ được lồng vào cỏc mệnh đề WHERE hoặc HAVING của cỏc cõu lệnh truy vấn.

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

Vớ dụ :

Sử dụng toỏn tử so sỏnh bằng để lọc ra cỏc vật tư hiện đang cú trong bảng VATTU với đơn vị tớnh là "Bộ", bạn sử dụng cõu lệnh sau :

SELECT * FROM VATTU

WHERE DVTINH = “Bộ”

Trong vớ dụ trờn, toỏn tử so sỏnh bằng được thực hiện trờn kiểu dữ liệu chuỗi và kết hợp trong mệnh đề WHERE.

Vớ dụ :

Sử dụng toỏn tử so sỏnh lớn hơn để lọc ra cỏc phiếu xuất hàng cú tổng trị giỏ lớn hơn 3,000,000 vnđ. Bạn sử dụng cõu lệnh sau :

SELECT SOPX, SUM(SLXUAT*DONGIA) AS TONGTG FROM CTXUAT

GROUP BY SOPX

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

Trong vớ dụ trờn, toỏn tử so sỏnh lớn hơn được thực hiện trờn kiểu dữ liệu số và kết hợp trong mệnh đề HAVING.

Toỏn tử luận lý :

Toỏn tử luận lý được phộp sử dụng để thực hiện việc kết hợp nhiều biểu thức so sỏnh đơn lẻ thành một biểu thức so sỏnh chung. Cú ba toỏn tử luận lý rất quan trọng thường dựng : AND, OR và NOT. Khi sử dụng toỏn tử luận lý bạn nờn thờm vào cỏc dấu ngoặc đơn cần thiết để giỳp cho người đọc dễ hiểu bởi vỡ nú làm cho cõu lệnh rừ ràng hơn.

Vớ dụ :

Hiển thị danh sỏch cỏc vật tư trong bảng VATTU thỏa điều kiện như sau : - Đơn vị tớnh là "Bộ" và phần trăm lớn hơn 10.

- Hoặc đơn vị tớnh là "Cỏi" và phần trăm lớn hơn 20.

Bạn sử dụng cõu lệnh như sau: SELECT * FROM VATTU

WHERE (DVTINH=”Bộ” AND PHANTRAM>10)

OR (DVTINH=”Cỏi” AND PHANTRAM>20)

Trong vớ dụ trờn, cả hai toỏn tử AND và OR được sử dụng kết hợp trong cỏc biểu thức so sỏnh.

2.2.8.Cỏc lệnh cơ bản của T-SQL a. Cỏc lệnh truy vấn

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

FROM danh_sỏch_tờn_bảng| tờn_cỏc_view

[WHERE biểu_thức_điều_kiện]

[GROUP BY danh_sỏch_tờn_cột] [HAVING biểu_thức_điều_kiện]

[ORDER BY danh_sỏch_cụt [ASC|DESC]]

b. Cỏc lệnh điều khiển

Cũng giống như một số ngụn ngữ lập trỡnh khỏc, T-SQL cung cấp một số cấu trỳc điều khiển cơ bản cho phộp thực thi một khối lệnh dựa trờn kết quả của một phộp so sỏnh.

BEGIN … END

BEGIN .. END được dựng để nhúm cỏc lệnh đơn thành một khối lệnh. BEGIN .. END được sử dụng trong bất kỳ một cấu trỳc điều khiển nào khi cần thực thi một khối lệnh hoặc nhiều hơn hai lệnh SQL.

Cỳ phỏp: BEGIN { sql_statement | statement_block } END PRINT

Dựng để in thụng tin ra màn hỡnh kết quả của cõu lệnh SQL. Cỳ phỏp:

PRINT 'any ASCII text' | @local_variable | @@FUNCTION | string_expr

Vớ dụ:

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

PRINT N'Chào bạn'

PRINT @@VERSION

IF … ELSE

Là một cấu trỳc điều khiển cho phộp thực thi một hoặc nhiều phỏt biểu tựy thuộc vào một điều kiện nào đú.

Cỳ phỏp: IF condition {statements} [ ELSE [Condition 1] {statements}] Trong đú:

 Statements: Một lệnh đơn hoặc một khối lệnh SQL

Condition: là một biểu thức logic, cú giỏ trị True hoặc False. Tựy thuộc vào

condition, một trong hai khối lệnh sẽ được thực thi.

Vớ dụ: Kiểm tra xem trong bảng SP cú thụng tin bỏn hàng của S1 hay khụng. Nếu cú thỡ in ra cỏc dũng thụng tin chi tiết.

if (select count(*) from sp where s#='S1')>0 begin

print N'Thống kờ cỏc lần bỏn hàng của S1'

select * from sp where s#='S1' end

else

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

Biểu thức CASE.

Biểu thức CASE là một biểu thức điều kiện được ỏp dụng bờn trong một phỏt biểu khỏc. Case trả về cỏc giỏ trị khỏc nhau tuỳ thuộc vào điều kiện hoặc một điều khiển nào đú.

Dạng 1:

CASE input_expression

WHEN when_expression THEN result_expression [ ...n ]

[ELSE else_result_expression] END

Dạng 2: CASE

WHEN Boolean_expression THEN result_expression [ ...n ]

[ELSE else_result_expression] END

Vớ dụ 1: Cho 2 số a và b, so sỏnh 2 số đú, số nào lớn hơn số nào? DECLARE @a As int, @b As int,

@ketqua as nvarchar(30) SET @a=3

SET @b=5

SET @ketqua = CASE

WHEN @a<@b THEN N'A nhỏ hơn B'

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

WHEN @a<@b THEN N'A lớn hơn B' ELSE

N'A bằng B'

END -- END của CASE

PRINT @ketqua

Vớ dụ 2: So sỏnh giỏ trung bỡnh cỏc mặt hàng của HTC với cỏc mặt hàng của HP.

declare @gia_htc as int, @gia_hp as int, @ketqua as nvarchar(30)

select @gia_htc=avg(price) from p where pname like 'HTC%'

select @gia_hp = avg(price) from p where pname like 'HP%'

set @ketqua = case

when @gia_htc < @gia_hp

then N'Giỏ của HTC nhỏ hơn HP'

when @gia_htc > @gia_hp

then N'Giỏ của HTC lớn hơn HP'

when @gia_htc = @gia_hp

then N'Giỏ của HTC bằng HP'

end

print @ketqua

Vớ dụ 3: Đưa ra mó mặt hàng, tổng số lượng đó bỏn và đỏnh giỏ trong đú nếu tổng số lượng đó bỏn lớn hơn 10 thỡ đỏnh giỏ là Bỏn tốt, nếu khụng thỡ bỏ trống.

select p#, TổngSL=sum(qty),

Ghichỳ = case

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

else N' ' end

from sp group by p#

Cấu trỳc WHILE

Là phỏt biểu điều khiển vũng lặp. Vũng lặp sẽ thực hiện cho đến khi biểu thức điều kiện (Boolean_expression) trong While mang giỏ trị False. Biểu thức điều kiện cú thể là một cõu SELECT. Cỳ phỏp: WHILE Boolean_expression { sql_statement | statement_block } [ BREAK ] { sql_statement | statement_block } [ CONTINUE ] Trong đú:

[ BREAK ] : Dựng để kết thỳc vũng lặp khi gặp một trường hợp cụ thể nào đú.

[ CONTINUE ] : Quay lại đầu vũng lặp.

Vớ dụ: Giảm giỏ liờn tục cỏc mặt hàng của HTC-VAIO xuống 5% cho đến khi giỏ trung bỡnh của cỏc mặt hàng này khụng vượt quỏ 16 triệu.

while (select avg(price) from p

where pname like 'HTC-VAIO%')>16000000 update p set price = 0.95*price

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

RETURN

RETURN [ integer_expression ]

Phỏt biểu Return dựng để thoỏt ra khỏi một đoạn lệnh hay thủ tục. Cỏc phỏt biểu sau Return sẽ khụng được biờn dịch.

WAITFOR

Là một chỉ thị cho SQL Server tạm dừng một thời gian trước khi xử lý tiếp cỏc phỏt biểu sau đú.

WAITFOR { DELAY 'time' | TIME 'time' }

Trong đú:

 DEPLAY ‘Time’: Hệ thống tạm dừng trong khoảng thời gian ‘Time’.

 TIME ‘Time’: Hệ thống được tạm dừng đến thời gian ‘Time’ chỉ ra. ‘Time’: được viết theo dạng hh:mm:ss, tối đa là 24 giờ.

Vớ dụ:

WAITFOR ’02:10’

2.2.9 Thủ tục

 Tập hợp biờn dịch cỏc cõu lệnh T-SQL được lưu trữ với một tờn xỏc định  Sử dụng để thực hiện cỏc nhiệm vụ quản trị, hoặc ỏp dụng cỏc luật giao dịch

phức tạp

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

 Thủ tục lưu hệ thống đề cập đến phương phỏp quản trị dữ liệu và cập nhật thụng tin vào cỏc bảng (thường bắt đầu bằng sp_).

 Thủ tục lưu trữ do người dựng định nghĩa.

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

Vớ dụ về hệ thống thủ tục lưu trữ hệ thống:

2.2.9.2 Thủ tục người dựng

- Tạo thủ tục bằng lệnh Create proceduce

CREATE PROC[EDURE] <tờn thủ tục> (<DSỏch tham số>) [ WITH RECOMPILE|ENCRYPTION

|RECOMPILE, ENCRYPTION] AS DECLARE <biến cục bộ>

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

Vớ dụ:

Create Proc test (@MaSV nchar(3)) As

Begin

Select * From SinhVien Where MaSV=@MaSV

Một phần của tài liệu Tài liệu học tập Cơ sở dữ liệu (Trang 81)

Tải bản đầy đủ (PDF)

(200 trang)