詳解 SQL Server數據庫學習的9大領域
SQL Server數據庫目前是社會當中使用比較廣泛的一款數據庫,那么SQLServer數據庫學習應該關注那些方面呢?中培偉業《SQLServer2014數據庫管理與性能調優》培訓專家臧老師在此進行了詳細介紹。 1. SQL基礎 SQL Server2000安裝、配置,服務器啟動、停止,企業管理器、查詢分析器。第一代數據庫--網狀數據庫和層次數據庫;第二代數據庫--關系數據庫。數據庫(DB);數據庫管理系統(DBMS);數據庫系統(DBS) 。SQL Server 2000 提供了不同版本:企業版、標準版、個人版、開發版 。SQL Server中的數據類型:整數:int,smallint,tinyint,bigint;浮點數:real,float,decimal;二進制:binary,varbinary;邏輯:bit;字符:char,nchar,varchar,nvarchar;文本和圖形:text,ntext,image;日期和時間:datetime,smalldatetime;貨幣:money,smallmoney 。數據庫的創建和刪除;數據庫表的創建、修改和刪除 。 數據完整性:實體完整性:Primary Key,Unique Key,Unique Index,Identity Column;域完整性:Default,Check,Foreign Key,Data type,Rule;參照完整性:Foreign Key,Check,Triggers,Procedure;用戶定義完整性:Rule,Triggers,Procedure;Create Table中得全部列級和表級約束 。SQL Server中有5種約束:主鍵約束(Primary Key Constraint)、默認約束(Default Constraint)、檢查約束(Check Constraint)、唯一性約束(Unique Constraint)、外鍵約束(Foreign Key Constraint)。 關系圖 數據庫設計的步驟:需求分析、概念結構設計、邏輯結構設計、數據庫物理設計、數據庫實施、數據庫運行和維護 。 兩個實體之間的聯系:一對一(1:1)、一對多(1:n)、多對多(m:n) 實體關系模型 -- E-R圖 。 數據庫規范化:將數據庫的結構精簡為最簡單的形式;從表中刪除冗余列;標識所有依賴于其他數據庫的數據。 數據庫三范式:第一范式就是無重復的列;第二范式就是非主屬性非部分依賴于主關鍵字;第三范式就是屬性不依賴于其他非主屬性 。 2. SQL語句 SQL全稱是“結構化查詢語言(Structured Query Language)” SQL的4個部分: 數據定義語言DDL(Data Definition Language)用來定義數據的結構:create、alter、drop。 數據控制語言DCL(Data Control Language)用來控制數據庫組件的存取許可、存取權限等得命令:grant、revoke。 數據操縱語言DML(Data Manipulation Language)用來操縱數據庫中得數據的命令:insert、update、delete。 數據查詢語言DQL(Data Query Language)用來查詢數據庫中得數據的命令:select。 SQL中得運算符:算術運算符、位運算符、比較運算符、邏輯運算符、通配運算符、字符串連接符、賦值運算符 。 3.查詢 簡單查詢,使用TOP子句 。查詢結果排序order by 。帶條件的查詢where,使用算術表達式,使用邏輯表達式,使用between關鍵字,使用in關鍵字 。模糊查詢like 。在查詢中使用聚合函數:sum(x),avg(x),min(x),max(x),count(x),count(*) 。使用分組查詢group by,having子句 。 簡單子查詢:嵌套子查詢、相關子查詢;子查詢的select語句中不能使用order by子句,roder by子句只能對最終查詢結果排序。 嵌套子查詢:執行過程,先執行子查詢,子查詢得到的結果不被顯示,而是傳給外層查詢,作為外層查詢的條件,然后執行外層查詢,并顯示結果。 嵌套子查詢的執行不依賴于外層查詢,子查詢只執行一次。 帶有比較運算符的子查詢,帶有in和not in的子查詢,帶有any或all的子查詢 。相關子查詢:子查詢為外層查詢的每一行執行一次,外層查詢將子查詢引用的列的值傳給了子查詢。 相關子查詢的執行依賴于外層查詢,子查詢需要重復的執行。 帶有exists和not exists的相關子查詢。 多表聯接查詢:內聯接(inner join)、外聯接((left、right、full)outer join)、自聯接(self join)和交叉聯接(cross join) 。 在查詢上創建新表:select into語句首先創建一個新表,然后用查詢的結果填充新表。 4.視圖、索引和事務 視圖是由一個或多個數據表(基本表)導出的虛擬表或者查詢表,是關系數據庫系統提供給用戶以多種角度觀察數據庫中數據的重要機制。 視圖的好處:能夠簡化用戶的操作;視圖能夠對機密數據提供安全保護。 創建視圖時,視圖的名稱存在sysobjects表中。有關視圖中所定義列的信息添加到syscolumns表中,而有關視圖相關性的信息添加到sysdepends表中。另外,create view語句的文本添加到syscomments表中。 在通過視圖向表中插入數據時,如果insert語句列表中包含有視圖中沒有選擇的列和不允許為空值的列,這種操作是不允許的。 5. Transact—SQL編程 全局變量:由系統定義和維護,其名稱以@@字符開頭 。局部變量:由用戶定義和賦值,其名稱以@字符開頭 。輸出語句:print 。邏輯控制語句:begin...end ;break ;case ;continue ; goto ; if...else ;return ; while 。常用函數:行集函數,聚合函數,標量函數 。轉換函數:convert(dt,e,s),cast() 。數學函數:絕對值abs(n),向上取整ceiling(n),向下取整floor(n),指定次冪power(n,y)。 6.游標 游標是一種能從包含多條數據記錄的結果集中每次提取一條記錄的機制。將批操作變成行操作,對結果集中得某行進行操作。 7.存儲過程 存儲過程(stored procedure)類似c語言中的函數,是一組為了完成特定功能的SQL語句集,經編譯后存儲在數據庫中。用戶通過指定存儲過程的名字餅給出參數來執行它。 8.觸發器 觸發器是一種特殊類型的存儲過程,主要是通過實踐進行觸發而被執行。 觸發器的主要作用就是能夠實現由主鍵和外鍵所不能保證的復雜的參照完整性和數據的一致性。其他功能:強化約束,跟蹤變化,級聯運行,存儲過程調用。 SQL Server 2000支持兩種類型觸發器: after觸發器:要求只有執行某一操作之后,觸發器才被執行,且只能在表上定義。 instead of觸發器:表示并不執行其所定義的操作,而僅是執行觸發器本身。既可以在表上定義,也可以在視圖上定義,但對同一操作只能定義一個instead of觸發器。 工作原理: 當觸發insert觸發器時,新的數據行就會被插入到觸發器表和inserted表中。觸發器通過檢查inserted表來確定是否執行觸發器動作或如何執行。 當在定義有觸發器的表上執行update語句時,原始行被移入到deleted表,更新行被移入inserted表。觸發器檢查deleted表和inserted表以及被更新的表,來確定是否更新了多行以及如何執行觸發器動作。 9.數據庫高級管理 SQL Server安全體系結構,4個等級:客戶機操作系統的安全性,SQL Server的登錄安全性,數據庫的使用安全性,數據對象的使用安全性 。 SQL Server驗證模式:windows身份驗證模式和混合模式(windows身份驗證和SQL Server身份驗證) 登錄賬戶:用戶登錄(連接)SQL Server服務器的賬戶和密碼。 角色管理:服務器角色(負責管理和維護SQL Server的組);數據庫角色(是對某個數據庫具有相同訪問權限的用戶賬戶和組的集合) 數據庫用戶:對于每個要求訪問數據庫的登錄賬戶,必須在要訪問的數據庫中建立該數據庫的訪問賬戶,且與其登錄賬戶鏈接關聯,才可進入該數據庫訪問。 權限管理:是指用戶是否能進行訪問數據庫資源的相應操作。權限包括:語句權限、對象權限和暗示權限。 備份和恢復: 數據庫備份設備,在進行數據庫備份之前,首先要創建備份設備。包括:磁盤、磁帶和命名管道 。 SQL Server 備份策略:只備份數據庫、備份數據庫和事務日志、差異備份。 導入導出: DTS(Data Transformation Service)是SQL Server提供的數據傳輸服務。使用戶可以將來自完全不同數據源的數據析取、轉換并合并到單個或多個目的。 分離與附加:創建可移動的數據庫。