Bài giảng Hệ quản trị cơ sở dữ liệu SQL Server - Bài 2: Các kiểu dữ liệu và hàm trong SQL Server - Lê Thị Tú Kiên
SQL Server data type categories
(Các kiểu dữ liệu trong SQL Server được chia ra làm 4 nhóm chính)
String (Xâu kí tự)
Numeric (Số)
Temporal (date/time)
Other (Một số kiểu khác)
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Hệ quản trị cơ sở dữ liệu SQL Server - Bài 2: Các kiểu dữ liệu và hàm trong SQL Server - Lê Thị Tú Kiên", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Hệ quản trị cơ sở dữ liệu SQL Server - Bài 2: Các kiểu dữ liệu và hàm trong SQL Server - Lê Thị Tú Kiên
e[,months]) DATEFROMPARTS(year,month,day) ISDATE(expression) Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 42 Date part values and abbreviations Argument Abbreviations year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww weekday dw Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 43 Date part values and abbreviations (continued) Argument Abbreviations hour hh minute mi, n second ss, s millisecond ms microsecond mcs nanosecond ns tzoffset tz Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 44 Examples that use date/time functions Function Result GETDATE() 2012-09-30 14:10:13.813 GETUTCDATE() 2012-09-30 21:10:13.813 SYSDATETIME() 2012-09-30 14:10:13.8160822 SYSUTCDATETIME() 2012-09-30 21:10:13.8160822 SYSDATETIMEOFFSET() 2012-09-30 14:10:13.8160822 -07.00 MONTH('2012-09-30') 9 DATEPART(month,'2012-09-30') 9 DATENAME(month,'2012-09-30') September DATENAME(m,'2012-09-30') September Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 45 Examples that use date/time functions (continued) Function Result EOMONTH('2012-02-01') 2012-02-29 EOMONTH('2012-02-01',2) 2012-04-30 DATEFROMPARTS(2012,4,3) 2012-04-03 ISDATE('2012-09-30') 1 ISDATE('2012-09-31') 0 ISDATE('23:59:59') 1 ISDATE('23:99:99') 0 Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 46 Examples that use the DAY, MONTH, and YEAR functions Function Result DAY('2012-09-30') 30 MONTH('2012-09-30') 9 YEAR('2012-09-30') 2012 Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 47 Examples that use the DATEPART function Function Result DATEPART(day, '2012-09-30 11:35:00') 30 DATEPART(month, '2012-09-30 11:35:00') 9 DATEPART(year, '2012-09-30 11:35:00') 2012 DATEPART(hour, '2012-09-30 11:35:00') 11 DATEPART(minute, '2012-09-30 11:35:00') 35 DATEPART(second, '2012-09-30 11:35:00') 0 DATEPART(quarter, '2012-09-30 11:35:00') 3 DATEPART(dayofyear, '2012-09-30 11:35:00') 273 DATEPART(week, '2012-09-30 11:35:00') 40 DATEPART(weekday, '2012-09-30 11:35:00') 1 DATEPART(millisecond, '11:35:00.1234567') 123 DATEPART(microsecond, '11:35:00.1234567') 123456 DATEPART(nanosecond, '11:35:00.1234567') 123456700 DATEPART(tzoffset, '11:35:00.1234567 -07:00') -420 Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 48 Examples that use the DATENAME function Function Result DATENAME(day, '2012-09-30 11:35:00') 30 DATENAME(month, '2012-09-30 11:35:00') September DATENAME(year, '2012-09-30 11:35:00') 2012 DATENAME(hour, '2012-09-30 11:35:00') 11 DATENAME(minute, '2012-09-30 11:35:00') 35 DATENAME(second, '2012-09-30 11:35:00') 0 DATENAME(quarter, '2012-09-30 11:35:00') 3 DATENAME(dayofyear, '2012-09-30 11:35:00') 274 DATENAME(week, '2012-09-30 11:35:00') 40 DATENAME(weekday, '2012-09-30 11:35:00') Sunday DATENAME(millisecond, '11:35:00.1234567') 123 DATENAME(microsecond, '11:35:00.1234567') 123456 DATENAME(nanosecond, '11:35:00.1234567') 123456700 DATENAME(tzoffset, '11:35:00.1234567 -07:00') -07:00 Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 49 Examples that use the DATEADD function Function Result DATEADD(day, 1, '2012-09-30 11:35:00') 2012-10-01 11:35:00.000 DATEADD(month, 1, '2012-09-30 11:35:00') 2012-10-30 11:35:00.000 DATEADD(year, 1, '2012-09-30 11:35:00') 2013-09-30 11:35:00.000 DATEADD(hour, 1, '2012-09-30 11:35:00') 2012-09-30 12:35:00.000 DATEADD(minute, 1, '2012-09-30 11:35:00') 2012-09-30 11:36:00.000 DATEADD(second, 1, '2012-09-30 11:35:00') 2012-09-30 11:35:01.000 DATEADD(quarter, 1, '2012-09-30 11:35:00') 2012-12-30 11:35:00.000 DATEADD(week, 1, '2012-09-30 11:35:00') 2012-10-07 11:35:00.000 DATEADD(month, -1, '2012-09-30 11:35:00') 2012-08-30 11:35:00.000 DATEADD(year, 1.5, '2012-09-30 11:35:00') 2013-09-30 11:35:00.000 Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 50 Examples that use the DATEDIFF function Function Result DATEDIFF(day, '2011-12-01', '2012-09-30') 304 DATEDIFF(month, '2011-12-01', '2012-09-30') 9 DATEDIFF(year, '2011-12-01', '2012-09-30') 1 DATEDIFF(hour, '06:46:45', '11:35:00') 5 DATEDIFF(minute, '06:46:45', '11:35:00') 289 DATEDIFF(second, '06:46:45', '11:35:00') 17295 DATEDIFF(quarter, '2011-12-01', '2012-09-30') 3 DATEDIFF(week, '2011-12-01', '2012-09-30') 44 DATEDIFF(day, '2012-09-30', '2011-12-01') -304 Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 51 Examples that use the addition and subtraction operators Operation Result CAST('2012-09-30 11:35:00' AS smalldatetime) + 1 2012-10-01 11:35:00 CAST('2012-09-30 11:35:00' AS smalldatetime) – 1 2012-09-29 11:35:00 CAST(CAST('2012-09-30' AS datetime) - CAST('2011-12-01' AS datetime) AS int) 304 Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 52 The contents of the DateSample table A search condition that fails to return a row SELECT * FROM DateSample WHERE StartDate = '2011-10-28'; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 53 SELECT statements that ignore time values Use the date type to remove time values (SQL Server 2008 or later) SELECT * FROM DateSample WHERE CONVERT(date, StartDate) = '2011-10-28'; Search for a range of dates SELECT * FROM DateSample WHERE StartDate >= '2011-10-28' AND StartDate < '2011-10-29'; Search for month, day, and year components SELECT * FROM DateSample WHERE MONTH(StartDate) = 10 AND DAY(StartDate) = 28 AND YEAR(StartDate) = 2011; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 54 SELECT statements that ignore time values (continued) Use the CAST function to remove time values SELECT * FROM DateSample WHERE CAST(CAST(StartDate AS char(11)) AS datetime) = '2011-10-28'; Use the CONVERT function to remove time values SELECT * FROM DateSample WHERE CONVERT(datetime, CONVERT(char(10), StartDate, 110)) = '2011-10-28'; The result set Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 55 The contents of the DateSample table Two search conditions that fail to return a row SELECT * FROM DateSample WHERE StartDate = CAST('10:00:00' AS datetime); SELECT * FROM DateSample WHERE StartDate >= '09:00:00' AND StartDate < '12:59:59:999'; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 56 Two SELECT statements that ignore date values Use the time type to remove date values (SQL Server 2008 or later) SELECT * FROM DateSample WHERE CONVERT(time, StartDate) >= '09:00:00' AND CONVERT(time, StartDate) < '12:59:59:999'; Use the CONVERT function to remove date values (prior to SQL Server 2008) SELECT * FROM DateSample WHERE CONVERT(datetime, CONVERT(char(12), StartDate, 8)) >= '09:00:00' AND CONVERT(datetime, CONVERT(char(12), StartDate, 8)) < '12:59:59:999'; The result set Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 57 The syntax of the simple CASE function CASE input_expression WHEN when_expression_1 THEN result_expression_1 [WHEN when_expression_2 THEN result_expression_2]... [ELSE else_result_expression] END A SELECT statement with a simple CASE function SELECT InvoiceNumber, TermsID, CASE TermsID WHEN 1 THEN 'Net due 10 days' WHEN 2 THEN 'Net due 20 days' WHEN 3 THEN 'Net due 30 days' WHEN 4 THEN 'Net due 60 days' WHEN 5 THEN 'Net due 90 days' END AS Terms FROM Invoices; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 58 The syntax of the searched CASE function CASE WHEN conditional_expression_1 THEN result_expression_1 [WHEN conditional_expression_2 THEN result_expression_2]... [ELSE else_result_expression] END A SELECT statement with a searched CASE function SELECT InvoiceNumber, InvoiceTotal, InvoiceDate, InvoiceDueDate, CASE WHEN DATEDIFF(day, InvoiceDueDate, GETDATE()) > 30 THEN 'Over 30 days past due' WHEN DATEDIFF(day, InvoiceDueDate, GETDATE()) > 0 THEN '1 to 30 days past due' ELSE 'Current' END AS Status FROM Invoices WHERE InvoiceTotal - PaymentTotal - CreditTotal > 0; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 59 The result set Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 60 The syntax of the IIF function IIF(conditional_expression, true_value, false_value) A SELECT statement with an IIF function SELECT VendorID, SUM(InvoiceTotal) AS SumInvoices, IIF(SUM(InvoiceTotal) < 1000, 'Low', 'High') AS InvoiceRange FROM Invoices GROUP BY VendorID; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 61 The syntax of the CHOOSE function CHOOSE(index, value1, value2 [,value3]...) A SELECT statement with a CHOOSE function SELECT InvoiceNumber, InvoiceDate, InvoiceTotal, CHOOSE(TermsID, '10 days', '20 days', '30 days', '60 days', '90 days') AS NetDue FROM Invoices WHERE InvoiceTotal - PaymentTotal - CreditTotal > 0; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 62 The syntax of the COALESCE function COALESCE(expression_1 [, expression_2]...) The syntax of the ISNULL function ISNULL(check_expression, replacement_value) A SELECT statement with a COALESCE function SELECT PaymentDate, COALESCE(PaymentDate, '1900-01-01') AS NewDate FROM Invoices; The same statement with an ISNULL function SELECT PaymentDate, ISNULL(PaymentDate, '1900-01-01') AS NewDate FROM Invoices; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 63 The result set Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 64 A SELECT statement that substitutes a different data type SELECT VendorName, COALESCE(CAST(InvoiceTotal AS varchar), 'No invoices') AS InvoiceTotal FROM Vendors LEFT JOIN Invoices ON Vendors.VendorID = Invoices.VendorID ORDER BY VendorName; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 65 The syntax of the GROUPING function GROUPING(column_name) A summary query with a GROUPING function SELECT CASE WHEN GROUPING(VendorState) = 1 THEN 'All' ELSE VendorState END AS VendorState, CASE WHEN GROUPING(VendorCity) = 1 THEN 'All' ELSE VendorCity END AS VendorCity, COUNT(*) AS QtyVendors FROM Vendors WHERE VendorState IN ('IA', 'NJ') GROUP BY VendorState, VendorCity WITH ROLLUP ORDER BY VendorState DESC, VendorCity DESC; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 66 The result set Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 67 The syntax for the four ranking functions ROW_NUMBER() OVER ([partition_by_clause] order_by_clause) RANK() OVER ([partition_by_clause] order_by_clause) DENSE_RANK() OVER ([partition_by_clause] order_by_clause) NTILE(integer_expression) OVER ([partition_by_clause] order_by_clause) Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 68 A query with a ROW_NUMBER function SELECT ROW_NUMBER() OVER(ORDER BY VendorName) AS RowNumber, VendorName FROM Vendors; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 69 A query that uses the PARTITION BY clause SELECT ROW_NUMBER() OVER(PARTITION BY VendorState ORDER BY VendorName) As RowNumber, VendorName, VendorState FROM Vendors; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 70 A query with RANK and DENSE_RANK functions SELECT RANK() OVER (ORDER BY InvoiceTotal) As Rank, DENSE_RANK() OVER (ORDER BY InvoiceTotal) As DenseRank, InvoiceTotal, InvoiceNumber FROM Invoices; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 71 A query that uses the NTILE function SELECT TermsDescription, NTILE(2) OVER (ORDER BY TermsID) AS Tile2, NTILE(3) OVER (ORDER BY TermsID) AS Tile3, NTILE(4) OVER (ORDER BY TermsID) AS Tile4 FROM Terms; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 72 The syntax of the analytic functions {FIRST_VALUE|LAST_VALUE}(scalar_expression) OVER ([partition_by_clause] order_by_clause [rows_range_clause]) {LEAD|LAG}(scalar_expression [, offset [, default]]) OVER ([partition_by_clause] order_by_clause) {PERCENT_RANK()|CUME_DIST} OVER ([partition_by_clause] order_by_clause) {PERCENTILE_CONT|PERCENTILE_DISC}(numeric_literal) WITHIN GROUP (ORDER BY expression [ASC|DESC]) OVER (partition_by_clause) Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 73 The columns in the SalesReps table Column name Data type RepID int RepFirstName varchar(50) RepLastName varchar(50) The columns in the SalesTotals table Column name Data type RepID int SalesYear char(4) SalesTotal money Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 74 A query that uses the FIRST_VALUE and LAST_VALUE functions SELECT SalesYear, RepFirstName + ' ' + RepLastName AS RepName, SalesTotal, FIRST_VALUE(RepFirstName + ' ' + RepLastName) OVER (PARTITION BY SalesYear ORDER BY SalesTotal DESC) AS HighestSales, LAST_VALUE(RepFirstName + ' ' + RepLastName) OVER (PARTITION BY SalesYear ORDER BY SalesTotal DESC RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS LowestSales FROM SalesTotals JOIN SalesReps ON SalesTotals.RepID = SalesReps.RepID; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 75 The result set Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 76 A query that uses the LAG function SELECT RepID, SalesYear, SalesTotal AS CurrentSales, LAG(SalesTotal, 1, 0) OVER (PARTITION BY RepID ORDER BY SalesYear) AS LastSales, SalesTotal - LAG(SalesTotal, 1, 0) OVER (PARTITION BY REPID ORDER BY SalesYear) AS Change FROM SalesTotals; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 77 A query that uses four more functions SELECT SalesYear, RepID, SalesTotal, PERCENT_RANK() OVER (PARTITION BY SalesYear ORDER BY SalesTotal) AS PctRank, CUME_DIST() OVER (PARTITION BY SalesYear ORDER BY SalesTotal) AS CumeDist, PERCENTILE_CONT(.5) WITHIN GROUP (ORDER BY SalesTotal) OVER (PARTITION BY SalesYear) AS PercentileCont, PERCENTILE_DISC(.5) WITHIN GROUP (ORDER BY SalesTotal) OVER (PARTITION BY SalesYear) AS PercentileDisc FROM SalesTotals; Murach's SQL Server 2012, C8 Lê Thị Tú Kiên - HQT SQL Server Slide 78 Terms Logical functions Ranking functions Analytic functions Murach's SQL Server 2012, C8
File đính kèm:
- bai_giang_he_quan_tri_co_so_du_lieu_sql_server_bai_2_cac_kie.pdf