intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Chương 5: Lập trình T-SQL - Nguyễn Đức Cương

Chia sẻ: Lavie Lavie | Ngày: | Loại File: PDF | Số trang:72

74
lượt xem
7
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Chương 5: Lập trình T-SQL do Nguyễn Đức Cương biên soạn nêu lên tổng quan; biến; cấu trúc điều khiển; thủ tục; hàm trong lập trình T-SQL. Mời các bạn tham khảo bài giảng để bổ sung thêm kiến thức về lĩnh vực này. Với các bạ chuyên ngành Công nghệ thông tin thì đây là tài liệu hữu ích.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Chương 5: Lập trình T-SQL - Nguyễn Đức Cương

  1. Chương 5 - LẬP TRÌNH T-SQL Lecturer: Nguyễn Đức Cương - FIT Email: cuongnguyenduc@gmail.com Website: http://www.nguyenduccuong.com
  2. Nội dung  Tổng quan  Biến  Cấu trúc điều khiển  Thủ tục (store procedures)  Hàm(function) Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 2
  3. TỔNG QUAN 1. Sử dụng T-SQL để lập trình các script và sp thực hiện các tác vụ đặc thù trên server. Chương trình bao gồm lệnh sql, biến, cấu trúc điều khiển . 2. Các khái niệm cơ bản: a. Định danh (identifiers): tên các đối tượng trong CSDL  Quy tắc:  Tối đa 128 ký tự  Bắt đầu từ ký tự a  z, hoặc các ký tự @, #  Các định danh có khoảng trắng phải đặt trong [] Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 3
  4. TỔNG QUAN  Kiểu dữ liệu: có 2 loại  System- supplied data type  User – defined data type  Batch: tập các câu lệnh T-SQL liên tiếp kết thúc bằng lệnh GO  Script: tập của 1 hoặc nhiều các bó lệnh được lưu thành một tập tin .SQL Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 4
  5. BIẾN (Variable) Biến: có 2 loại biến: biến cục bộ và biến toàn cục 1. Biến cục bộ (Local variable): – Được khai báo bên trong một sp , một batch – Phạm vi hoạt động từ vị trí khai báo đến khi kết thúc sp, batch – Tên bắt đầu bằng ký tự @  Khai báo biến: DECLARE @ VariableName var_type Ví dụ: DECLARE @vEmpID int Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 5
  6. BIẾN (Variable)  Gán giá trị cho biến: SET @VariableName = expression Hoặc: SELECT{@VariableName=expression} [,…n] Ví dụ 1: DECLARE @temp_name varchar(20) SELECT @temp_name = companyname FROM customers WHERE customerid = ‘adsff’ Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 6
  7. BIẾN (Variable) Ví dụ 2: DECLARE @temp_city varchar(10) SET @temp_city = ‘london’ SELECT * FROM Customers WHERE city = @temp_city Ví dụ 3: DECLARE @temp_CustID Char(5), @temp_name varchar(50) SET @temp_CustID = ‘ALFKI’ SELECT @temp_name = CompanyName FROM Customers Where CustomerID = @temp_CustID PRINT ‘CustomerID is ‘ + @temp_CustID + ‘ and Name is ‘+ @temp_name Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 7
  8. BIẾN (Variable) 2. Biến toàn cục (Global Variables): Thực chất là các hàm có sẵn trong SQL Server. – Không thể gán giá trị cho biến – Biến toàn cục không có kiểu – Tên biến bắt đầu bằng @@  @@VERSION:  Ví dụ: Select @@ version Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 8
  9. BIẾN (Variable)  @@SERVERNAME: tên sever Ví dụ: select @@SERVERNAME  @@ROWCOUNT: trả về số dòng bị ảnh hưởng bởi lệnh thực thi gần nhất Ví dụ: Update Employees set LastName = ‘Brooke’ Where LastName =‘Brook’ If(@@rowcount=0) begin print ‘Không dòng nào được cập nhật’ return end Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 9
  10. BIẾN (Variable)  @@ERROR: trả về số thứ tự lỗi của lệnh thực thi sau cùng, nếu trả về 0 thì câu lệnh hoàn thành  @@IDENTITY: trả về số IDENTITY phát sinh sau cùng Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 10
  11. Cấu trúc điều khiển CASE Function: Có 2 dạng a) Simple CASE function: CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ELSE else_result_expression ] END b) Searched CASE function: CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 11
  12. Cấu trúc điều khiển Ví dụ 1: SELECT Category = CASE type WHEN 'popular_comp' THEN 'Popular Computing' WHEN 'mod_cook' THEN 'Modern Cooking' WHEN 'business' THEN 'Business' WHEN 'psychology' THEN 'Psychology' WHEN 'trad_cook' THEN 'Traditional Cooking ELSE 'Not yet categorized‘ END CAST(title AS varchar(25)) AS 'Shortened Title', price AS Price FROM titles WHERE price IS NOT NULL ORDER BY type, price COMPUTE AVG(price) BY type Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 12
  13. Cấu trúc điều khiển Ví dụ 2: SELECT ProductID, Quantity, UnitPrice, [discount%]= CASE WHEN Quantity
  14. Cấu trúc điều khiển  IF … ELSE: IF boolean_expression {sql_statement | statement_block} [ELSE boolean_expression {sql_statement | statement_block}]  BEGIN …END: Khối lệnh BEGIN {sql_statement | statement_ block} END Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 14
  15. Cấu trúc điều khiển Ví dụ: IF ( SELECT COUNT(*) FROM authors WHERE contract =0) >0 BEGIN PRINT 'These authors do not have contracts on file: ' SELECT au_lname, au_fname, au_id FROM authors WHERE contract=0 END ELSE BEGIN PRINT 'All authors have contracts on file.' END Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 15
  16. Cấu trúc điều khiển  WHILE: WHILE boolean_expression {sql_statement | statement_block} [BREAK] {sql_statement | statement_block} [CONTINUE] Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 16
  17. Cấu trúc điều khiển Ví dụ 1: DECLARE @Counter INT SET @counter=0 WHILE (@counter
  18. Cấu trúc điều khiển Ví dụ 2 WHILE (SELECT AVG(price) FROM titles) < $30 BEGIN UPDATE titles SET price = price * 2 IF (SELECT MAX(price) FROM titles) > $50 BREAK ELSE CONTINUE END Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 18
  19. Cấu trúc điều khiển  PRINT: In thông tin ra màn hình kết quả của SQL PRINT ‘any ACII Text’|@local_variable|@@FUNTION| String_expr  RETURN: RETURN [integer_expression]  WAITFOR: SQL tạm dừng WAITFOR { DELAY 'time' | TIME 'time' } Ví dụ: BEGIN WAITFOR TIME '22:20' EXECUTE update_all_stats END Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 19
  20. Cấu trúc điều khiển  RAISERROR: Gửi lỗi đến người dùng như một lỗi hệ thống RAISERROR({msg_id | msg_str} { , severity , state } [ , argument [ ,...n ] ] ) [ WITH option [ ,...n ] ] – Msg_id: mã thông báo, được lưu trong bảng sysmessage mã thông báo của người dùng được bắt đầu trên 50000 – Msg_str: Nội dung thông báo, tối đa 400 ký tự Để truyền tham số vào trong thông báo dùng dạng % Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2