SQL Server之 (一) 數據庫簡介 SQL Server環境配置 數據庫基礎知識


     前言

      這個是我工作兩年多后,再次從最基礎的SQL入門開始,認真的學一遍SQL Server,撿漏和鞏固都有;因為自己剛開始學的時候,總是心煩氣躁,最近換工作,發現1到2年經驗,問到基礎性的東西還是很多,這個時候需要的是扎實的基礎功夫,所以一系列打擊+反省后,自己節假日在家從最基礎重新認識一下SQL Server,繼續沉淀一下.哪里有不對或需深入探討,請直接留言或者小窗我;歡迎~

自己學習筆記,轉載請注明出處,謝謝!---酸菜

(一) 數據庫簡介   SQL Server環境配置   數據庫基礎知識

1.什么是數據庫,數據庫有哪些特點,為什么要用數據庫?

    數據庫是一種數據庫管理軟件,需要安裝在電腦的操作系統上的;

    數據管理系統(DBMS):DataBaseManagementSystem

    數據庫具有特點:

                       ① 海量存儲數據;

                       ②查詢速度快;

                       ③控制並發性訪問;

                       ④安全性;

                       ⑤數據的完整性;

2.不同的數據庫,不同的特點

    mySql:功能簡單,速度很快,數據不夠嚴謹;

    MSSQL Server:只能運行在Windows平台上,與.net有很好的結合,比mySql功能多,但是對大數據量處理不是特別好;

    Oracle:

    SQLLite:

    Access:文件級數據庫;

3.數據庫概念知識

    數據庫(DataBase):不同類的數據放到不同的數據庫中;便於對數據的類別個性化管理;安全性高;避免命名沖突;

    表(Table):關系型數據庫的關系指的是表;

    列(Column)/字段(Field)/行(Row)元祖;

    主鍵(Primary Key):數據行中唯一標識,一個表中只能有一個主鍵;分為:邏輯主鍵和業務主鍵;

    邏輯主鍵:沒有任何業務意義的字段,完全是給程序看的字段;

    業務主鍵:使用對業務有意義的字段,比如身份號/學號...;

    主鍵須有的特點: 

                            ①不允許空的列為主鍵;

                            ②沒有重復數據的列;

                            ③沒有實際業務邏輯的列;(邏輯主鍵)

                            ④穩定的列;(列中的數據不會經常變化的)

                            ⑤選擇單列為主鍵;(當需要多列來共同唯一標識一個表中的一條記錄時,可選擇多列組成一個主鍵,此時可以稱為:組合主鍵/復合主鍵/聯合主鍵)一般 不推薦使用組合主鍵;

    數據冗余的問題:

    造成了存儲空間的浪費;

    更新/刪除 數據異常;

    為了處理數據冗余的問題,需要將這樣的表拆分為兩個或者多個表來儲存,這個時候需要用主外鍵將幾個表的數據聯合起來.

    外鍵(Foreign Key),如何利用主外鍵將表中的數據聯合起來?

    當數據拆分為兩個表來儲存的時候, 每張表有它自己的主鍵.其中一張表除了它的主鍵還有一個列,這個列用來引用另一張表中的主鍵,這一列就是這張表的"外鍵列",有外鍵列的表叫做"外鍵表",主鍵被引用的表叫做"主鍵表".

    因為外鍵列的數據引用的是另一張表的主鍵列數據,所以外鍵列的數據不可以隨便填寫,必須是另一張表的主鍵已經存在的數據.

4.SQL Server的安裝和環境配置

    安裝過程網上有對應版本的圖解教程,這里我就先不寫了;

    安裝完后,需要啟動SQL Server服務:

    開始→運行→services.msc  然后找到對應的需要啟動的服務;

    查看數據庫版本語句:Print @@Version;

5.SQL Server安裝失敗,如何干凈的卸載掉;

    ①在程序卸載目錄中,卸載掉所有帶有SQL Server字樣的程序;

    ②刪除所有安裝目錄;

    ③刪除注冊表:開始→運行→regedit;在CURRENT_USER和LOCAL_MACHINE下的SoftWare下的微軟項目中的帶有SQL Server的都刪除掉;

6.通過設計器創建數據庫和表;

    ①每個數據庫都有且只有一個主數據文件(.mdf),日志文件(_log.ldf);任意多個次要數據文件(.ndf),多個事務日志文件;

    ②文件組:可將多個數據文件邏輯分到一組,方便日后管理維護(備份/將表建立在對應文件組上等);

    ③分離:對要分離的數據庫,右擊,分離,刪除鏈接;

    ④附加:右擊數據庫,選擇附加,找到目錄下的數據庫文件;

    ⑤脫機:暫時不用這個數據庫,右擊脫機,還在原來的目錄,需要恢復,右擊聯機;

    ⑥生成兼容腳本移動數據庫:右擊數據庫→任務→生成腳本,可選生成向下版本,可選項根據需求;

       注:<1>附加和分離是在數據庫版本是一樣的情況下進行的,不同版本是會出錯;

           <2>報錯:"不允許保存更改.您所做的更改要求刪除並重新創建以下表.您對無法重新創建的表進行了更改或者啟用了"阻止保存要求重新創建表的更改"選項";解決方法:工具→選項→Designer/設計→ 勾去  阻止保存要求重新創建表的更改;

           <3>報錯:附加數據庫時報錯"..拒絕訪問..";權限問題,設置數據庫文件安全為:Everyone;

           <4>低版本向高版本是兼容的,高版本向低版本是不兼容的;

7.數據庫的數據類型;

    ①image:用來存儲 byte[]類型;

    ②字符串類型:char,nchar,varchar,nvarchar,text,ntext,varchar(max),nvarchar(max)都屬於字符串類型,下面是對應的區別;

        <1>帶n和不帶n的區別:

               char: char(2),表示可以存儲2個字節,比如:ab,12,趙;

               nchar:nchar(2),表示可以存儲兩個字符,每個字符占用2個字節,比如:貂蟬,ab,12;

               總結:

               不帶n:存儲中文占用2個字節;存儲數字/英文等占用1個字節;

               帶n:無論存儲中文/英文/數字,每個字符都占用2個字節;

               帶n的數據類型最長4000,nchar(4000)/nvarchar(4000);

               不帶n的數據類型最長是8000,char(8000)/varchar(8000);

        <2>帶var和不帶var的區別:

               char(10):  1                  ;

                                1111111111;

               varchar(10): 1;

                                   1111111111;

               總結:

               不帶var:固定長度,存儲1個字符,也要占用10個字節,會自動補9個空格,占滿10個字節;

               帶var:可變長度,會根據實際存儲的字符大小動態重新分配存儲空間,相對節省存儲空間;

               10,表示存儲最大10個字節,無論是固定長度還是可變長度,超過后都會報錯;

        <3>大字符串存儲時:

               SQL 2005前用:text和ntext;

               SQL 2005后用:varchar(max)/nvarchar(max);max表示4GB內存;

         注:①對於雙字節字符,用nvarchar解決;

    ③bit類型:在程序中和查詢語句中bit的類型的值都是1(true)和0(false),但是在設計器中必須輸入true/false;

       注:詳細的數據類型文檔,在  幫助→索引中搜索"數據類型 [SQL Server]"都會有詳細的解釋文檔;

8.數據庫的5個系統數據庫

    ①master:記錄SQL Server系統的所有系統級信息.例如:登錄賬戶信息,鏈接服務器和系統配置設置,記錄其他所有數據庫的存在,數據文件的位置,SQL Server的初始化信息等,如果master不存在,無法啟動SQL Server;

    ②msdb:用於SQL Server代理計划警報和作業,數據庫定時執行某些操作,數據庫郵件等;

    ③model:用作於SQL Server實例上創建的所有數據庫的模板.對model數據庫的修改(數據庫大小/排序規則/恢復模式/其他數據庫選項)將應用於以后創建的所有的數據庫.在model中創建一張表,以后創建其他數據庫都默認有一張同樣的表;

    ④tempdb:一個工作空間,用於保存臨時對象或中間集.一個全局資源,可供鏈接到SQL Server的所有實例用戶使用.每次啟動SQL Server時都會重新創建tempdb;

    ⑤Resource:一個只讀數據庫.包含SQL Server包括的系統對象.系統對象在物理上保留在Resource數據庫中, 但在邏輯上顯示在每個數據庫的sys架構中.

 

    

    

                          

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM