SQLServer複習(自己的筆記,想在這裡做個記錄,新手噢)
資料庫概述
-
資料庫的概念和作用
資料庫是指長期存儲在計算機内,有組織的、可共享的資料集合。
資料庫的特點:資料獨立性、資料共享、減少資料備援度、資料的集中控制、維護了資料的完整性、提高了資料的可恢複性。
-
資料庫類型
資料庫的類型是根據資料模型來劃分的,而任何一個資料庫管理系統也是根據資料模型有針對性的設計出來的。
層次模型資料庫、網狀模型資料庫、關系模型資料庫。
-
資料模型
資料模型主要是确定系統中資料的定義和格式。
資料模型的類型:概念資料模型、邏輯資料模型、實體資料模型。
它的三要素:描述系統的資料結構(靜态)、資料操作(動态)、完整性限制條件。
-
資料庫管理系統
資料庫管理系統可以建立、使用和維護資料庫。對資料定義,增删改查,對資料進行組織等等。
常見的關系模型資料庫:Oracle、DB2、SQL Server.
-
資料庫系統
資料庫系統的構成:硬體、軟體、資料庫、使用者。
硬體:主機、存儲器、顯示器等等。
軟體:應用程式、作業系統、資料庫管理系統。
使用者:終端使用者、程式開發人員、資料庫管理者。
結構化查詢語言 資料定義語句:DDL \ 資料操作語句:DML \ 資料控制語句:DCL
資料庫的建立指令:CREATE DATABASE 資料庫名;
資料庫的删除指令:DROP DATABASE 資料庫名;
資料庫的切換(目前使用的資料庫)指令:USE 資料庫名;
向表中添加資料:insert into 表名 values 檢視表中的資料:select * from 表名;
給表添加一個字段:alter table 表名 add 字段名 資料類型;
修改字段的資料類型:alter table 表名 modify 字段名 資料類型;
更新指定字段的值: update 表名 set 字段名=值; 更新某條記錄(指定一個滿足條件的範圍,并更新該記錄): update 表名 set 字段字=值 where 條件表達式;
主鍵限制(primary key)
非空限制(not null)
唯一限制(unique)
檢查限制(check)
預設限制(default)
外鍵限制(foreign key)
内連接配接用inner join 關鍵字指定 文法:select * from 表1 inner join 表2 on 條件表達式;
外連接配接,是連接配接查詢的擴充,可以處理缺失資訊,又分為左外連接配接,右外連接配接,全外連接配接三種。
資料庫概念設計(ER模組化)
- 實體集用矩形框來,屬性用橢圓,碼(在實體集中例如學号,就叫做碼),聯系用菱形來表達。
- 畫圖時在每個實體的主碼上加上下劃線。
- 它們之間的聯系:1:1(一對一),1:n(一對多),m:n(多對多)。
資料庫邏輯設計
- ER圖轉化關系模式要說明主碼和外碼。多對多之間的聯系需要單獨定義(菱形框)。
- m:n聯系轉成關系模式,主碼和外碼都是聯系中的主碼(例如學号,課程号)。
- 1:n轉換成關系模式,一端并入到多端中,說明外碼即可,不必定義聯系。
- 1:1的任意端可以并入到任意端中去。
資料庫實體設計
- 索引設計:有序索引and散列索引。
三級常考填空
- UML的定義是由語義和表示法組成
- 語義是定義在一個四層模組化概念架構中,這四層分别是:元元模型層,,元模型層,模型層,使用者模型層。
- 活動圖:主要用于描述系統、用例和程式子產品中邏輯流程的先後執行次序,并行次序。
- 用例模型是把滿足使用者需求的所有功能表示出來的工具。
- 用例模型由:用例、角色、系統三部分組成。
- 用例之間的關系包括擴充、使用、組合。
- 順序圖主要用于描述系統内對象之間的消息發送和接收序列。順序圖有兩個坐标軸:縱向表示時間的持續過程,橫向表示對象,每個對象用矩形框表示,縱向的虛線表示對象在序列中的執行情況,稱為對象的“生命線”。
- 協作圖:用于描述對象在空間中如何互動,即除了動态互動,它也直接描述了對象是如何連結在一起的。
- 部署圖:描述系統中硬體和軟體的實體配置情況和系統體系結構。
SQL進階資料查詢
- Top n:取查詢結果前的n行資料。
- Top n precent:去查詢結果的前%行資料。
- With Ties:表示包括最後一行取值并列的結果。
- 注意:在使用top時,應該與ORDER BY子句一起使用,這樣前幾名才有意義。Desc表示降序,Asc表示降序。
簡單case函數:可以在查詢語句中使用case函數,達到分情況顯示不同類型的資料。相當于C語言中的swich().
- CASE WHEN 簡單表達式1 THEN 結果表達式1
- WHEN 簡單表達式2 THEN 結果表達式2
- Else 結果表達式 END
- 搜尋case函數:差別在于WHEN子句的表達式可以使用比較和邏輯運算符。其格式跟簡單函數一樣。
- Case WHEN 簡單表達式1 THEN 結果表達式1 Else 結果表達式 End
- 将查詢結果永久儲存在一個表中:通過在select語句中使用into子句實作。
- Select 查詢清單序列 INTO 新表名
- 局部臨時表的表名前+ #,全局臨時表的表名前+ ##,永久表不加。
查詢結果的并、交、差運算
-
并運算:關鍵字為UNION,并為一個結果集 格式:Select 語句1 UNION select 語句2.
交運算:各列的相同的值,構成的結果集。關鍵字:intersect 其格式同上。
差運算:在第一個集合中有但第二個集合中沒有的資料。關鍵字:EXCEPT
相關子查詢
- 子查詢的語句通常為一下三種:
- Where 表達式 IN/NOT IN
- 将它們和外查詢進行等于或者不同于的比較 例:select address IN(select address from tabo where came=’洪可’)
- Where 表達式 比較運算符(子查詢),比較運算符==、>、<。
- where 表達式 EXISTS (子查詢)
- EXISTS:當子查詢中有滿足條件的資料時傳回真值,否則假值。
-
Not exists:當子查詢中有滿足條件的資料時傳回假值,否則真值。
替代表達式的子查詢
派生表:由子查詢産生的新表叫派生表,也就是在子查詢的括号外面as 新表名。
注意:這裡into是儲存整個查詢結果的表,可以分為永久表和臨時表。而as是臨時表,是對于子查詢的派生表。在生成派生表後,其操作和普通表一樣。
Sql server資料庫的組成
- 資料檔案分為:主要資料檔案.mdf,次要資料庫檔案.ndf
- 事務日志檔案:.ldf
- 資料庫檔案組: 分為使用者自定義和主檔案組,主檔案組是系統定義好的,使用者自定義使用關鍵字filegroup指定任何的檔案組。
- 定義架構: 就是定義了一個命名空間,在這個空間可以定義該架構的資料庫對象,比如表,視圖等。
- 格式: create schema 架構名 authorization 使用者名
- 删除架構: drop schema 架構名
資料庫背景程式設計技術
- 使用T-SQL語言編寫代碼時,可以用兩種方法存儲和執行代碼:一種時在用戶端存儲,第二種是以子程式的形式将程式子產品存儲在資料庫中。
- 存儲過程:就是以子程式的形式将程式存在資料庫中。
定義存儲過程: Create PROC 存儲過程名 如果有參數在此行聲明(@...) AS … 執行存儲過程: EXEC 存儲過程名 參數 删除存儲過程:drop proc 存儲名
- 使用者自定義函數:标量函數和表值函數。
- 标量函數:傳回單個資料。表值函數:傳回一個表 定義标量函數:
Create function 函數名 RETURN 傳回值類型 <mark>除了timeestamp以外所有類型都可以</mark> AS Begin Return 參數 End Begin-end是函數體 調用标量函數: 函數名(); 例如: select name_hongke(參數)
- 觸發器:是一種特殊的存儲過程,其特殊性在于它不需要使用者直接調用,而是在對表中的資料進行update、insert、delect操作時自動觸發執行的。
CREATE trigger 觸發器名稱 ON 表名 FOR|AFTER|INSTEAD OF (觸發操作INSERT) AS BEGIN END
- Deleted将更改前的資料儲存到deleted表中。
- Inserted将更改後的資料儲存到deleted表中, 這兩個表駐留在記憶體中。
- 删除觸發器:drop trigger 觸發器名稱
- 遊标的定義 : declare 名稱 cursor for
- 打開遊标: open 名字
- Close 關閉遊标
- Deallocate 名 釋放遊标
- @@fetch_ATATUS=0 這句的意思時傳回遊标的最終值