Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
2,12 MB
Nội dung
Bài 3: LÀMVIỆCVỚIKIỂUDỮLIỆUVÀMÃKỊCHBẢN Các nội dung đã học trong bài trước Kiểudữliệu Tạo CSDL quan hệ Làm quen với T-SQL Hệ thống bài cũ Làmviệcvớikiểudữliệuvàmãkịchbản 2 Mục tiêu bài học 1. Làmviệcvới các kiểudữliệuLàmviệcvớikiểudữliệuvàmãkịchbản3 2. MãkịchbảnLàmviệcvớikiểudữliệuvàmãkịchbản 4 Khi làmviệcvới các biểu thức chứa nhiều kiểudữliệu khác nhau, phải thực hiện chuyển đổi giữa các kiểudữ liệu. Hai loại chuyển đổi dữliệu Chuyển đổi ngầm (do SQL server tự thực hiện) Chuyển đổi tường minh (sử dụng các hàm thư viện) Chuyển đổi dữliệu Khi làmviệcvới các biểu thức chứa nhiều kiểudữliệu khác nhau, phải thực hiện chuyển đổi giữa các kiểudữ liệu. Hai loại chuyển đổi dữliệu Chuyển đổi ngầm (do SQL server tự thực hiện) Chuyển đổi tường minh (sử dụng các hàm thư viện) Làmviệcvớikiểudữliệuvàmãkịchbản 5 Các trường hợp xảy ra chuyển đổi ngầm Gán giá trị cho một cột có kiểudữliệu khác với giá trị được gán. Biểu thức tính toán có sự tham gia của nhiều loại dữliệu khác nhau. Trong trường hợp này: SQL Server chuyển đổi giá trị kiểudữliệu có độ ưu tiên thấp hơn sang kiểudữliệu có độ ưu tiên cao hơn. Lập trình viên cần hiểu về chuyển đổi ngầm dữliệu để tránh thu được kết quả không mong muốn khi viết câu lệnh SQL. Chuyển đổi ngầm Các trường hợp xảy ra chuyển đổi ngầm Gán giá trị cho một cột có kiểudữliệu khác với giá trị được gán. Biểu thức tính toán có sự tham gia của nhiều loại dữliệu khác nhau. Trong trường hợp này: SQL Server chuyển đổi giá trị kiểudữliệu có độ ưu tiên thấp hơn sang kiểudữliệu có độ ưu tiên cao hơn. Lập trình viên cần hiểu về chuyển đổi ngầm dữliệu để tránh thu được kết quả không mong muốn khi viết câu lệnh SQL. Làmviệcvớikiểudữliệuvàmãkịchbản 6 Biểu thức tính toán có sự tham gia của nhiều kiểudữliệu khác nhau Ví dụ Chuyển đổi dữliệu ngầm InvoiceTotal * .0775 InvoiceTotal (kiểu money) bị chuyển đổi ngầm sang kiểu decimal PaymentTotal – 100 Giá trị số 100 bị chuyển đổi ngầm sang kiểu money Làmviệcvớikiểudữliệuvàmãkịchbản 7 PaymentDate = '2008-08-05' Giá trị ngày có định dạng chữ '2008-08-05' bị chuyển đổi ngầm sang giá trị smalldatetime Gán giá trị có kiểudữliệu khác vớikiểudữliệu của cột Độ ưu tiên Nhóm Kiểudữliệu Cao nhất Ngày/Giờ datetime smalldatetime Số float real decimal money smallmoney int smallint tinyint bit Chuyển đổi ngầm Thứ tự ưu tiên của các kiểudữliệu phổ biến trong SQL Server float real decimal money smallmoney int smallint tinyint bit Thấp nhất Chuỗi nvarchar nchar varchar char Làmviệcvớikiểudữliệuvàmãkịchbản 8 Không phải tất cả kiểudữliệu đều có thể thực hiện chuyển đổi ngầm sang toàn bộ kiểudữliệu khác. Sinh viên tham khảo phần Chuyển đổi không thể thực hiện ngầm trong sách giáo khoa Chuyển đổi ngầm Không phải tất cả kiểudữliệu đều có thể thực hiện chuyển đổi ngầm sang toàn bộ kiểudữliệu khác. Sinh viên tham khảo phần Chuyển đổi không thể thực hiện ngầm trong sách giáo khoa Làmviệcvớikiểudữliệuvàmãkịchbản 9 Khi thực hiện các chuyển đổi: Không thể hoàn thành với chuyển đổi ngầm định Chuyển dữliệu có kiểudữliệuvới độ ưu tiên cao hơn về kiểudữliệu có độ ưu tiên thấp hơn ta sử dụng hàm CAST hoặc CONVERT để thực hiện phép chuyển đổi tường minh. Chuyển đổi tường minh Khi thực hiện các chuyển đổi: Không thể hoàn thành với chuyển đổi ngầm định Chuyển dữliệu có kiểudữliệuvới độ ưu tiên cao hơn về kiểudữliệu có độ ưu tiên thấp hơn ta sử dụng hàm CAST hoặc CONVERT để thực hiện phép chuyển đổi tường minh. Làmviệcvớikiểudữliệuvàmãkịchbản 10 [...]... truyền dữliệu ngày/giờ theo định dạng tháng/ngày/năm Khi truy vấn dữ liệu, để lấy về giá trị có định dạng ngày/tháng/năm có thể sử dụng hàm CONVERT vớimã định dạng 3 hoặc 1 03Làmviệcvớikiểudữliệuvàmãkịchbản 31 Làmviệcvớikiểudữliệu số Sinh viên tự tìm hiểu cách làmviệcvớidữliệukiểu số trong SGK phần Hướng dẫn làmviệcvớidữliệu số Làmviệcvới kiểu dữliệuvàmãkịchbản 32 Làm việc. .. vớikiểudữliệuvàmãkịchbản 33 MãkịchbảnMãkịchbản Nhóm câu lệnh 1 Các câu lệnh SQL riêng lẻ Gom nhóm thành các nhóm câu lệnh (Batch ) … Nhóm câu lệnh n Mỗi nhóm câu lệnh được biên dịch như là một kế hoạch thực thi đơn Làmviệcvớikiểudữliệuvàmãkịchbản 34 Mãkịchbản Lưu ý: Tất cả các ví dụbạn đã học ở bài hai đều là các mãkịch bản, gồm một nhóm câu lệnh Làmviệcvớikiểudữliệu và. .. DATEPART(quarter, '2008-09 -30 11 :35 :00') 3 DATEPART(dayofyear, '2008-09 -30 11 :35 :00') 2 73 DATEPART(week, '2008-09 -30 11 :35 :00') 40 DATEPART(weekday, '2008-09 -30 11 :35 :00') 7 DATEPART(millisecond, '11 :35 :00.1 234 567') 1 23 DATEPART(microsecond, '11 :35 :00.1 234 567') 1 234 56 DATEPART(nanosecond, '11 :35 :00.1 234 567') 1 234 56700 DATEPART(tzoffset, '11 :35 :00.1 234 567 -07:00') -420 Làmviệcvớikiểudữliệuvàmãkịchbản 24 Demo... ISDATE('2008-09 -31 ') 0 ISDATE(' 23: 59:59') 1 ISDATE(' 23: 99:99') 0 Làm việcvới kiểu dữliệuvàmãkịchbản 23 Demo sử dụng hàm DATEPART Hàm Kết quả DATEPART(day, '2008-09 -30 11 :35 :00') DATEPART(month, '2008-09 -30 11 :35 :00') 30 9 DATEPART(year, '2008-09 -30 11 :35 :00') 2008 DATEPART(hour, '2008-09 -30 11 :35 :00') 11 DATEPART(minute, '2008-09 -30 11 :35 :00') 35 DATEPART(second, '2008-09 -30 11 :35 :00') 0 DATEPART(quarter,... FROM Invoices Làm việcvới kiểu dữliệuvàmãkịchbản AS varcharDate, AS varcharDate_1, AS varcharDate_107, AS varcharTotal, AS varcharTotal_1 14 Tham số định dạng Sinh viên tham khảo các mã tham số định dạng cho câu lệnh CONVERT trong Book Online hoặc trên Website sau http://msdn.microsoft.com/en-us/library/ms187928.aspx Làm việcvới kiểu dữliệuvàmãkịchbản 15 Làm việcvới kiểu dữliệu chuỗi Hàm... đổi dữliệu khi thực hiện phép chia số nguyên Thao tác Kết quả 50/100 0 50/CAST(100 AS decimal (3) ) 500000 (Kiểu decimal) Làmviệcvớikiểudữliệuvàmãkịchbản (Kiểu int) 12 Sử dụng hàm chuyển đổi dữliệu Hàm CONVERT Cú pháp hàm CONVERT CONVERT( [(length)], [, ]) Trường hợp sử dụng Sử dụng hàm CONVERT để chuyển đổi tường minh một biểu thức từ kiểudữ liệu. ..Sử dụng hàm chuyển đổi dữliệu Hàm CAST Cú pháp hàm CAST CAST( AS [(length)]) Trường hợp sử dụng: Hàm CAST dùng để chuyển đổi tường minh, hay ép kiểu, một biểu thức từ kiểudữliệu này sang kiểudữliệu khác Làmviệcvớikiểudữliệuvàmãkịchbản 11 Demo sử dụng hàm CAST Câu lệnh SELECT sử dụng hàm CAST SELECT InvoiceDate,... Ms Mcs tz Làmviệcvớikiểudữliệuvàmãkịchbản 22 Demo sử dụng các hàm ngày/giờ Hàm Kết quả GETDATE() GETUTCDATE() SYSDATETIME() 2008-08-06 14:10: 13. 8 13 2008-08-06 21:10: 13. 8 13 2008-08-06 14:10: 13. 8160822 SYSUTCDATETIME() 2008-08-06 21:10: 13. 8160822 SYSDATETIMEOFFSET() 2008-08-06 14:10: 13. 8160822-07.00 MONTH('2008-09 -30 ') DAY('2008-09 -30 ') 9 30 YEAR('2008-09 -30 ') 2008 ISDATE('2008-09 -30 ') 1 ISDATE('2008-09 -31 ')... hai đều là các mãkịch bản, gồm một nhóm câu lệnh Làmviệcvớikiểudữliệuvàmãkịchbản 35 Ví dụ về mãkịchbản gồm nhiều nhóm câu lệnh Lệnh Go đánh dấu điểm kết thúc của một nhóm câu lệnh Mãkịchbản tạo ba bảng “Members”, “Committees”, “CommiteeAssignment” trong CSDL “ClubRoater” Làmviệcvớikiểudữliệuvàmãkịchbản 36 ... '11 :35 :00') 289 DATEDIFF(second, '06:46:45', '11 :35 :00') 17295 DATEDIFF(quarter, '2007-12-01', '2008-09 -30 ') 3 DATEDIFF(week, '2007-12-01', '2008-09 -30 ') 44 DATEDIFF(day, '2008-09 -30 ', '2007-12-01') -30 3Làmviệcvớikiểudữliệuvàmãkịchbản 25 Hướng dẫn thực hiện tìm kiếm theo thành phần ngày Giá trị thời gian thường chứa cả thành phần ngày và giờ Do đó việc tìm kiếm theo riêng thành phần ngày và . tiêu bài học 1. Làm việc với các kiểu dữ liệu Làm việc với kiểu dữ liệu và mã kịch bản 3 2. Mã kịch bản Làm việc với kiểu dữ liệu và mã kịch bản 4 Khi làm việc với các biểu thức chứa nhiều kiểu dữ. Bài 3: LÀM VIỆC VỚI KIỂU DỮ LIỆU VÀ MÃ KỊCH BẢN Các nội dung đã học trong bài trước Kiểu dữ liệu Tạo CSDL quan hệ Làm quen với T-SQL Hệ thống bài cũ Làm việc với kiểu dữ liệu và mã kịch bản 2 Mục. tường minh, hay ép kiểu, một biểu thức từ kiểu dữ liệu này sang kiểu dữ liệu khác. Làm việc với kiểu dữ liệu và mã kịch bản 11 Câu lệnh SELECT sử dụng hàm CAST Chuyển đổi dữ liệu khi thực hiện