02_01 TSQL

02_01 TSQL

  

Please download the sample code here. Sample Code
================================
【 TSQL扎實打底 】 課程編號: e48417fc-9db5-4e99-822c-706c5ccef6cc 想朝 .NET Developer 前進,必先學會"資料庫"的大小事。資料庫技術的功夫深淺,也將決定您未來職場上的實力。 第一魔王: Join,本課程介紹各種 Join,解析 Cross Apply, Outer Apply 等多種用法和比較,帶您寫出更進階的 query。 第二魔王: Concurrent Transactions,討論了2個Process同時編輯相同資料的情況下。尋找 blocking process 並且解決 Dead Lock。 第三魔王: 各種資料型別的特殊用法,包括 String Function、DateTime、Math Function,Sequence Object, Guid。 第三魔王: Dynamic T-SQL雖然可以透過Reuse Cache Plan的方式提高效率,但是,如果不夠熟悉、寫得不夠嚴謹。非常有可能會對入侵者開啟 SQL Injection 的後門。影響你的資料庫的的安全性。 #IT工具人折價眷官網 http://ithandyguytutorial.obior.cc/ #IT工具人講義部落格 https://ithandyguytutorial.blogspot.com.au #IT工具人Youtube頻道 https://www.youtube.com/user/lpmplpmp/playlists #IT工具人課程課後輔導討論版 https://www.facebook.com/groups/934567793358849/ #IT工具人臉書頁 https://www.facebook.com/Ithandyguytutorial-2353578301334227/ 此講義目錄Table of Content: https://ithandyguytutorial.blogspot.com.au/p/sql-foundation.html 此YouTube PlayList: https://www.youtube.com/playlist?list=PLXstZ12GxF9zcAQfy3KXpeS7Nb4mvxCKa ------------------------------------ 如果喜歡我的課程,以下都是鼓勵我繼續寫課程的動力唷。 1. 請訂閱我的Youtube頻道追蹤我的最新消息。私人影片的部分為付費影片,如欲購買,請來「IT工具人折價眷官網」 2. 請「盡量」用 「IT工具人折價眷官網」提供的折價眷,來購買我的課程唷,讓我可以分潤多一點點。 3. 購買課程並且上完課後,如果覺得不錯,請不吝留下您的好評價。
================================

.NET Framework學習之路.

此為.NET Framework學程中的其中一門課。

Sample

Please download the sample code here.  SampleCode

Tools

Tools installation and settings instruction.
Please install SQL Server for this tutorial.

本課程

T00B_01_WhatToLearn_TSQL
T00B_01: 課程導讀_TSQL學什麼

Create Database and Tables (DDL)


T001_PK_FK_DefaultConstraint_CheckConstraint_IdentityColumn
T001_01_PK_FK_DefaultConstraint_CheckConstraint_IdentityColumn
T001_02_PK_FK_DefaultConstraint_CheckConstraint_IdentityColumn
----------------------
Tutorial 01講義: 初步認識PK、FK、DefaultConstraint、CheckConstraint、IdentityColumn
Tutorial 01-01: 初步認識PK、FK、DefaultConstraint、CheckConstraint、IdentityColumn
Tutorial 01-02: 初步認識PK、FK、DefaultConstraint、CheckConstraint、IdentityColumn


T002_DataType_DDL_DML
----------------------
Tutorial 02講義: 初步認識DataTyp, DDL, DML
Tutorial 02: 初步認識DataTyp, DDL, DML


T003_IdentityColumn
----------------------
Tutorial 03講義: 深入理解Identity Column
Tutorial 03: 深入理解Identity Column

Select...From ... Group By ... (DML)

T004_Select_Aggregations_GroupBy_Count_Sum_Avg_Min_Max
----------------------
Tutorial 04講義: 使用Select搭配Aggregation包括GroupBy, Count, Sum, Avg, Min, Max
Tutorial 04: 使用Select搭配Aggregation包括GroupBy, Count, Sum, Avg, Min, Max


T005_01_Joins_UNION_ISNULL_CaseWhen_COALESCE
T005_02_Joins_UNION_ISNULL_CaseWhen_COALESCE
----------------------
Tutorial 05講義: 使用Join, UNION,比較ISNULL、CaseWhen、COALESCE
Tutorial 05-01: 使用Join, UNION,比較ISNULL、CaseWhen、COALESCE
Tutorial 05-02: 使用Join, UNION,比較ISNULL、CaseWhen、COALESCE

Stored Procedure

T006_StoredProcedures_WebSearchInASPNET
T006_01_StoredProcedures_WebSearchInASPNET
T006_02_StoredProcedures_WebSearchInASPNET
T006_03_StoredProcedures_WebSearchInASPNET
----------------------
Tutorial 06講義: 使用Stored Procedures搭配ASP.NET Web Form Application的Search Bar
Tutorial 06-01: 使用Stored Procedures搭配ASP.NET Web Form Application的Search Bar
Tutorial 06-02: 使用Stored Procedures搭配ASP.NET Web Form Application的Search Bar
Tutorial 06-03: 使用Stored Procedures搭配ASP.NET Web Form Application的Search Bar

String Function

T007_StringFunction
----------------------
Tutorial 07講義: 認識String Function
Tutorial 07: 認識String Function

DateTime

T008_DateTimeFunction_RandomDateTime
----------------------
Tutorial 08講義: 討論DateTime Function,實作Random DateTime
Tutorial 08: 討論DateTime Function,實作Random DateTime


----------------------
Tutorial 09講義: 討論DateTime2,SmallDateTime,比較語法EoMonth、DateFromParts、DateTime2FromParts

Tutorial 09: 討論DateTime2,SmallDateTime,比較語法EoMonth、DateFromParts、DateTime2FromParts

Cast V.S. Convert V.S. Parse

T010_Cast_Cast_Parse_Convert_GetDateTime
----------------------
Tutorial 10講義: 差異和比較Cast、Convert、Parse,介紹GetDateTime
Tutorial 10: 差異和比較Cast、Convert、Parse,介紹GetDateTime

Math Function

T011_MathFunction_ABS_CEILING_FLOOR_POWER_RAND_SQUARE_SQRT_ROUND
----------------------
Tutorial 11講義: 深入討論Math Function包括ABS、CEILING、FLOOR、POWER、RAND、SQUARE、SQRT、ROUND
Tutorial 11: 深入討論Math Function包括ABS、CEILING、FLOOR、POWER、RAND、SQUARE、SQRT、ROUND

User Define Function

T012_UserDefinedFunction
----------------------
Tutorial 12講義: 使用自訂的User Defined Function
Tutorial 12: 使用自訂的User Defined Function

Temp Table

T013_LocalTemporaryTable_GlobalTemporaryTable
----------------------
Tutorial 13講義: 深入理解Local Temp Table和Global Temp Table
Tutorial 13: 深入理解Local Temp Table和Global Temp Table

Index

T014_Index
----------------------
Tutorial 14講義: 初步介紹Index
Tutorial 14: 初步介紹Index

View

----------------------
Tutorial 15講義: 深入理解View
Tutorial 15-01: 深入理解View

Tutorial 15-02: 深入理解View

DML Trigger

----------------------
Tutorial 16講義: 深入理解Data Manipulation Language (DML) Trigger
Tutorial 16-01: 深入理解Data Manipulation Language (DML) Trigger
Tutorial 16-02: 深入理解Data Manipulation Language (DML) Trigger

Tutorial 16-03: 深入理解Data Manipulation Language (DML) Trigger

CommonTableExpressions(CTE)

T017_01_CommonTableExpressions(CTE)
T017_02_CommonTableExpressions(CTE)
----------------------
Tutorial 17講義: 使用Common Table Expressions (CTE)
Tutorial 17-01: 使用Common Table Expressions (CTE)
Tutorial 17-02: 使用Common Table Expressions (CTE)

Pivot and Unpivot

T018_01_Pivot_Unpivot
T018_02_Pivot_Unpivot
T018_03_Pivot_Unpivot
----------------------
Tutorial 18講義: 深入理解Pivot和Unpivot的用法
Tutorial 18-01: 深入理解Pivot和Unpivot的用法
Tutorial 18-02: 深入理解Pivot和Unpivot的用法
Tutorial 18-03: 深入理解Pivot和Unpivot的用法

Transaction and TryCatch

T019_01_ErrorHandling_Transaction_@@Error_TryCatch
T019_02_ErrorHandling_Transaction_@@Error_TryCatch
----------------------
Tutorial 19講義: 使用Transaction和@@Error以及Try Catch處理Error Handling
Tutorial 19-01: 使用Transaction和@@Error以及Try Catch處理Error Handling
Tutorial 19-02: 使用Transaction和@@Error以及Try Catch處理Error Handling

Cursor, Create Large Sample Data, Check if object exist, Merge

T020_CreateLargeData_SubQuery_Join_Performance
----------------------
Tutorial 20講義: 討論Performance,介紹製造大量Sample Data,理解Sub-Query和Join
Tutorial 20: 討論Performance,介紹製造大量Sample Data,理解Sub-Query和Join


T021_01_Cursor
T021_02_Cursor
----------------------
Tutorial 21講義: 深入討論Cursor
Tutorial 21-01: 深入討論Cursor
Tutorial 21-02: 深入討論Cursor


T022_01_CheckIfObjectExist
T022_02_CheckIfObjectExist
----------------------
Tutorial 22講義: Check If Object Exist檢查如果object存在
Tutorial 22-01: Check If Object Exist檢查如果object存在
Tutorial 22-02: Check If Object Exist檢查如果object存在
----------------------
Recreate Table Value Type, Please see
T031_Stored Procedure with TableValueType Parameter in AspNet


T023_Merge
----------------------
Tutorial 23講義: 介紹合併Merge
Tutorial 23-01: 介紹合併Merge

Concurrent Transactions, Dead Lock, Find the blocking process



T024_01_ConcurrentTransactions
T024_02_ConcurrentTransactions
T024_03_ConcurrentTransactions
T024_04_ConcurrentTransactions
----------------------
Tutorial 24講義: 處理同時進行的Concurrent Transactions
Tutorial 24-01: 處理同時進行的Concurrent Transactions
Tutorial 24-02: 處理同時進行的Concurrent Transactions
Tutorial 24-03: 處理同時進行的Concurrent Transactions
Tutorial 24-04: 處理同時進行的Concurrent Transactions



T025_01_DeadLock
T025_02_DeadLock
T025_03_DeadLock
T025_04_DeadLock
----------------------
Tutorial 25講義: 處理DeadLock
Tutorial 25-01: 處理DeadLock
Tutorial 25-02: 處理DeadLock
Tutorial 25-03: 處理DeadLock
Tutorial 25-04: 處理DeadLock



T026_FindingBlockingProcess
----------------------
Tutorial 26講義: 尋找Blocking Process
Tutorial 26: 尋找Blocking Process



Joins, Cross Apply, Outer Apply

T027_Except, NOT IN, INTERSECT, UNION, UNION ALL | INNER JOIN, DISTINCT INNER JOIN
----------------------
Tutorial 27講義: 深入理解Join中的Except, NOT IN, INTERSECT, UNION, UNION ALL,並且比較差異INNER JOIN和DISTINCT INNER JOIN
Tutorial 27: 深入理解Join中的Except, NOT IN, INTERSECT, UNION, UNION ALL,並且比較差異INNER JOIN和DISTINCT INNER JOIN


T028_CrossApply_OuterApply
----------------------
Tutorial 28講義: 深入理解Cross Apply和Outer Apply
Tutorial 28: 深入理解Cross Apply和Outer Apply


DDL Triggers, Login Triggers, Select Into

T029_01_DDLTriggers_AllServerScope_LoginTrigger
T029_02_DDLTriggers_AllServerScope_LoginTrigger
T029_03_DDLTriggers_AllServerScope_LoginTrigger
----------------------
Tutorial 29講義: 介紹DDL Trigger搭配AllServerScope,Login Trigger
Tutorial 29-01: 介紹DDL Trigger搭配AllServerScope,Login Trigger
Tutorial 29-02: 介紹DDL Trigger搭配AllServerScope,Login Trigger
Tutorial 29-03: 介紹DDL Trigger搭配AllServerScope,Login Trigger


T030_SelectInto
----------------------
Tutorial 30講義: 深入理解Select Into
Tutorial 30: 深入理解Select Into


T031_Stored Procedure with TableValueType Parameter in AspNet
----------------------
Tutorial 31講義: 深入理解Stored Procedure搭配TableValueType Parameter,實作在Asp.Net Web Form
Tutorial 31: 深入理解Stored Procedure搭配TableValueType Parameter,實作在Asp.Net Web Form

Debug Tools,  Grouping, Over Clause

T032_01_GroupingSet_Rollup_Cube_GroupingFunction_Grouping_IDFunction
T032_02_GroupingSet_Rollup_Cube_GroupingFunction_Grouping_IDFunction
T032_03_GroupingSet_Rollup_Cube_GroupingFunction_Grouping_IDFunction
T032_04_GroupingSet_Rollup_Cube_GroupingFunction_Grouping_IDFunction
----------------------
Tutorial 32講義: 深入理解GroupingSet、Rollup、Cube的差異和比較。比較Grouping Function、Grouping、IDFunction
Tutorial 32-01: 深入理解GroupingSet、Rollup、Cube的差異和比較。比較Grouping Function、Grouping、IDFunction
Tutorial 32-02: 深入理解GroupingSet、Rollup、Cube的差異和比較。比較Grouping Function、Grouping、IDFunction
Tutorial 32-03: 深入理解GroupingSet、Rollup、Cube的差異和比較。比較Grouping Function、Grouping、IDFunction
Tutorial 32-04: 深入理解GroupingSet、Rollup、Cube的差異和比較。比較Grouping Function、Grouping、IDFunction



T033_DebuggingTools
----------------------
Tutorial 33講義: 介紹Debugging Tools
Tutorial 33: 介紹Debugging Tools



T034_01_Over_RowNumber_Rank_DenseRnk_RunningTotal_NTile
T034_02_Over_RowNumber_Rank_DenseRnk_RunningTotal_NTile
T034_03_Over_RowNumber_Rank_DenseRnk_RunningTotal_NTile
T034_04_Over_RowNumber_Rank_DenseRnk_RunningTotal_NTile
T034_05_Over_RowNumber_Rank_DenseRnk_RunningTotal_NTile
----------------------
Tutorial 34講義: 使用Over,RowNumber,比較Rank和DenseRnk的差異,介紹Running和Total_NTile
Tutorial 34-01: 使用Over,RowNumber,比較Rank和DenseRnk的差異,介紹Running和Total_NTile
Tutorial 34-02: 使用Over,RowNumber,比較Rank和DenseRnk的差異,介紹Running和Total_NTile
Tutorial 34-03: 使用Over,RowNumber,比較Rank和DenseRnk的差異,介紹Running和Total_NTile
Tutorial 34-04: 使用Over,RowNumber,比較Rank和DenseRnk的差異,介紹Running和Total_NTile
Tutorial 34-05: 使用Over,RowNumber,比較Rank和DenseRnk的差異,介紹Running和Total_NTile


IFF, Offset PageNumber, Sequence Object, Guid

T035_IIFFunction
----------------------
Tutorial 35講義: 認識IIF Function
Tutorial 35: 認識IIF Function



T036_PageNumber_OffsetN1RowsFetchNextN2RowsOnly
----------------------
Tutorial 36講義: 討論Pagging,使用Offset N1 Rows Fetch Next N2 RowsOnly來實現
Tutorial 36: 討論Pagging,使用Offset N1 Rows Fetch Next N2 RowsOnly來實現



T037_Dependency
----------------------
Tutorial 37講義: 討論Dependency
Tutorial 37: 討論Dependency



T038_01_SequenceObject_IdentityProperty
T038_02_SequenceObject_IdentityProperty
----------------------
Tutorial 38講義: 使用Sequence Object搭配Identity Property
Tutorial 38-01:使用Sequence Object搭配Identity Property
Tutorial 38-02: 使用Sequence Object搭配Identity Property



T039_Guid
----------------------
Tutorial 39講義: 使用Guid型別
Tutorial 39: 使用Guid型別


DynamicSQL, SQLInjection, SearchWebPage_AspNet, QueryPlanCache, QuoteName(), DynamicTableName, DynamicOutputParameter, DynamicTempTable

 
T040_01_DynamicSQL_SQLInjection_SearchWebPage_AspNet
T040_02_DynamicSQL_SQLInjection_SearchWebPage_AspNet
T040_03_DynamicSQL_SQLInjection_SearchWebPage_AspNet
----------------------
Tutorial 40講義: 初步認識Dynamic SQL,使用ASP.NET Web Form做一個Search Bar來認識SQL Injection。
Tutorial 40-01: 初步認識Dynamic SQL,使用ASP.NET Web Form做一個Search Bar來認識SQL Injection。
Tutorial 40-02: 初步認識Dynamic SQL,使用ASP.NET Web Form做一個Search Bar來認識SQL Injection。
Tutorial 40-03: 初步認識Dynamic SQL,使用ASP.NET Web Form做一個Search Bar來認識SQL Injection。



T041_01_QueryPlanCache_SqlInjection_CrossApply_OuterApply_Exec_sp_Executesql
T041_02_QueryPlanCache_SqlInjection_CrossApply_OuterApply_Exec_sp_Executesql
T041_03_QueryPlanCache_SqlInjection_CrossApply_OuterApply_Exec_sp_Executesql
----------------------
Tutorial 41講義: 認識Query Plan Cache對效率的幫助,再次認識SQL Injection。使用CrossApply和OuterApply以及Exec、sp_Executesql
Tutorial 41-01: 認識Query Plan Cache對效率的幫助,再次認識SQL Injection。使用CrossApply和OuterApply以及Exec、sp_Executesql
Tutorial 41-02: 認識Query Plan Cache對效率的幫助,再次認識SQL Injection。使用CrossApply和OuterApply以及Exec、sp_Executesql
Tutorial 41-03: 認識Query Plan Cache對效率的幫助,再次認識SQL Injection。使用CrossApply和OuterApply以及Exec、sp_Executesql



T042_DynamicTableName_SqlInjection_QuotenameFunction
----------------------
Tutorial 42講義: 如何使用Dynamic TableName,再次深入SQL Injection。使用QuoteName Function
Tutorial 42: 如何使用Dynamic TableName,再次深入SQL Injection。使用QuoteName Function



T043_DynamicOutputParameter
----------------------
Tutorial 43講義: 使用Dynamic Output Parameter
Tutorial 43: 使用Dynamic Output Parameter



T044_DynamicTempTables
----------------------
Tutorial 44講義: 使用Dynamic Temp Tables
Tutorial 44: 使用Dynamic Temp Tables



T045_DatabaseNormalization
----------------------
Tutorial 45講義: 介紹Database Normalization
Tutorial 45: 介紹Database Normalization


師資介紹

Kevin Lin

精通.NET相關應用開發、多種前後端框架與工具、版控系統,
對於.NET領域的各式開發方式與技術,皆有深入的研究。
畢業於多個大學,其中在QIBT是,全校第1名畢業。
甚至在中央昆士蘭大學CQU是全High Distinction滿分畢業。
現任HiSKIO線上課程合約講師。
以扎實打底系列的學程幫助許多想成為.NET Developer的朋友們,繞過彎路,快速學習。

2013 Certificate I in Hospitality (Provide Responsible Service of Alcohol) QHA QLD,酒精飲料服務責任執照, 昆士蘭餐飲協會。
2011 Graduate Diploma in IT Management CQU QLD,IT管理研究生文憑, 中央昆士蘭大學,該屆全校第1名畢業。
2010 Certificate IV in Property (Real Estate) Professional Real Estate Training QLD,專業昆士蘭房地產培訓4級證書。
2010 Master of Information System Griffith QLD,信息系統碩士,格里菲斯大學。
2008 Bachelor of IT Software Architecture QUT QLD,IT軟件架構學士,昆士蘭科技大學。
2005 Diploma in Information Technology QIBT QLD,IT專業文憑證書,昆士蘭商業技術學院,該屆全校第1名畢業。




留言

這個網誌中的熱門文章

T000_011_Install Visual Studio 2019 Offline

T020_CreateLargeData_SubQuery_Join_Performance

IT工具人學院