1 / 17

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU. SQL SERVER. NỘI DUNG. BÓ, TRANSACTION BIẾN CÁC CÂU LỆNH ĐIỀU KHIỂN CURSOR. BÓ (BATCH).

marcus
Download Presentation

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQL SERVER

  2. NỘI DUNG • BÓ, TRANSACTION • BIẾN • CÁC CÂU LỆNH ĐIỀU KHIỂN • CURSOR

  3. BÓ (BATCH) • Bólàmộttậpcáccâulệnh T_SQL đượcbiêndịchđồngthờibởi SQL Server (chú ý đượcbiêndịchđồngthời, nếumộtlệnhcólỗicúphápthìcảbókhôngbiêndịchđược, khácvới transaction!) • Cáccâulệnhđượcgửiđồngthờiđến server. • Câulệnh GO đánhdấukếtthúcmộtbó (hoặcdùngchuộtlựa chon tậplệnhtrong Query Analyzer). • Vídụ.

  4. BÓ (BATCH) • Mộtsốquytắcvoi GO: • Nếubócóbấtkỳmộtlỗinào  toànbóbịkhôngđượcbiêndịch • Cácphátbiểu CREATE ( CREATE DATABASE, CREATE TABLE, CREATE INDEX, CREATE VIEW, …) thườngphảinằmriêngtrongmộtbó. • Khôngthểthayđổicấutrúcbảngvàsửdụngluôncộtmớibêntrongmộtbó

  5. TRANSACTION • Transaction: nhómcáclệnh SQL thànhmộtđơnvịthựchiện. Nếumộttrongcáclệnhcủanhómkhôngthựchiệnthànhcôngthìkếtquảthựchiệncủatấtcảcáclệnhtrongnhómđềuhủy. • Transaction: BEGIN TRAN <Nhómcáclệnhcủa Transaction> COMMIT TRAN

  6. TRANSACTION • Vídụ: BEGIN TRAN INSERT INTO nhanvien (Manv,Hoten,Gioitinh, Ngaysinh,Luong,Maphong,SDT) VALUES ('QT001', N'Nguyễn Văn A','Nam','1980-09-23',150000,‘QTA','0123456789'); INSERT INTO TDNN VALUES ('QT001', 1,'C'); INSERT INTO TDNN VALUES ('QT001', 4,'A'); COMMIT TRAN

  7. BIẾN • Vídụ2: USE qlnv; GO • DECLARE @sonvINT; • SELECT @sonv=COUNT(*) • FROM nhanvien; • PRINT N'Sốnhânviên:' + • CAST(@sonv AS CHAR(10)); • Vídụ1: USE qlnv; GO DECLARE @ma CHAR(5); SET @ma='KD004'; SELECT * FROM nhanvien WHERE manv=@ma;

  8. BIẾN • Khaibáobiến: DECLARE @<TenBien> <Kiểu> [(<kíchthước>)] • Biếnlàcụcbộtrongmộtbóhoặcmộthàm/thủtục • Gángiátrịchobiếnbằng 2 lệnh: SET @<TenBien> =<giá_trị>; SELECT @<TenBien> =<giá_trị>; SELECT @<TenBien> = <hàm> FROM <TenBang> … • Biếnhệthống (do SQL server quảnlý) cótênbắtđầu @@, làbiếntoàncục. Vídụ: PRINT @@SERVERNAME; SELECT @@MAX_CONNECTIONS AS 'Max Connections‘;

  9. CÁCCÂUĐIỀUKHIỂN • Khối BEGIN…END: nhómmộtsốcâulệnhđượcthựcthivớinhautrongcáccấutrucđiềukhiển. • IF <biểuthứcđiềukiện> {<câulệnh SQL>|<khốicâulệnh>} [ELSE [<biểuthứcđiềukiện>] {<câulệnh SQL>|<khốicâulệnh>}] • Nếucâulệnh SELECT sau IF trảranhiềuhơnmộtgiátrịthìcóthểdùngthêmlượngtừ EXISTS sau IF.

  10. CÁCCÂUĐIỀUKHIỂN • Vídụ (câulệnh IF ELSE): DECLARE @macb CHAR(5); SET @macb='QT001'; DECLARE @luongcbINT; SELECT @luongcb=luong FROM nhanvien WHERE manv=@macb; IF @luongcb <2500000 PRINT N'Thunhậpthấp'; ELSE PRINT N'Thunhậpcao';

  11. CÁCCÂUĐIỀUKHIỂN • CASE (Kođứngđộclập) • Dạng 1: CASE <Biểuthứckiểmtra> WHEN <biểuthức1> THEN <giátrị1> … WHEN <biểuthứcn> THEN <giátrị n> ELSE <giátrịn+1> END • Dạng 2: CASE WHEN <Điềukiện1> THEN <giátrị1> … • WHEN <Điềukiện1n> THEN <giátrị n> ELSE <giátrịn+1> END

  12. CÁCCÂUĐIỀUKHIỂN • CASE (Vídụ) • Dạng 1: SELECT Hoten, Tennn, TrinhDo= CASE TDo WHEN 'A' THEN N'Yếu' WHEN 'B' THEN N'Tạmđược' WHEN 'C' THEN N'Thànhthạo' WHEN 'D' THEN N'Rấttốt' END FROM Nhanvien, DMNN, TDNN WHERE Nhanvien.manv=TDNN.manv and TDNN.mann=DMNN.mann • Dạng 2: • SELECT Hoten, Phanloai= • CASE • WHEN Year(getdate()) – Year(Ngaysinh) <30 THEN N'Trẻ' • WHEN Year(getdate()) - Year(Ngaysinh)> 30 and Year(getdate()) – Year(Ngaysinh)<40 THEN N'Trungniên' • ELSE N'Già' • END • FROM Nhanvien

  13. CÁCCÂUĐIỀUKHIỂN • WHILE: WHILE <biểuthứclôgic> [BEGIN <(các) câulệnh> [BREAK] <(các) câulệnh> [CONTINUE] END]

  14. CÁCCÂUĐIỀUKHIỂN • WHILE: (Vídụ) USE qlnv GO WHILE (SELECT AVG(luong) FROM nhanvien) < 4000000 BEGIN UPDATE nhanvien SET luong = luong * 2; SELECT MAX(luong) FROM nhanvien; IF (SELECT MAX(luong) FROM nhanvien) > 7000000 BREAK ELSE CONTINUE END

  15. BIẾN CURSOR DECLARE nhanvien_cursor CURSOR FOR SELECT Manv, Hoten, Ngaysinh FROM Nhanvien; DECLARE @macb CHAR(5); DECLARE @tencbNCHAR(40); DECLARE @ngaysinhcbdatetime; OPEN nhanvien_cursor; FETCH NEXT FROM nhanvien_cursor INTO @macb, @tencb, @ngaysinhcb; WHILE @@FETCH_STATUS = 0 BEGIN PRINT @macb + @tencb + CAST (@ngaysinhcb as CHAR(10)); FETCH NEXT FROM nhanvien_cursor INTO @macb, @tencb, @ngaysinhcb; END CLOSE nhanvien_cursor; DEALLOCATEnhanvien_cursor

  16. BIẾN CURSOR • Dùngxửlýđếntừngbảnghicủatậpdữliệu • Khaibáo: DECLARE cursor_name CURSOR FOR <Câulệnh Select> • Mở / đặt con trỏlênbảnghiđầu: OPEN cursor_name • Lấybảnghi: FETCH [ [ NEXT | PRIOR | FIRST | LAST | ABSOLUTE {n | @nvar} | RELATIVE {n | @nvar} ] FROM ] { { [GLOBAL] cursor_name } | @cursor_variable_name} [INTO @variable_name[,...n] ] • CLOSE cursor_name; • DEALLOCATE cursor_name;

More Related