C#和數(shù)據(jù)庫技術(shù)基礎(chǔ)_第1頁
C#和數(shù)據(jù)庫技術(shù)基礎(chǔ)_第2頁
C#和數(shù)據(jù)庫技術(shù)基礎(chǔ)_第3頁
C#和數(shù)據(jù)庫技術(shù)基礎(chǔ)_第4頁
C#和數(shù)據(jù)庫技術(shù)基礎(chǔ)_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

C#語言和數(shù)據(jù)庫技術(shù)基礎(chǔ)猛禽第1章第一個(gè)C#程序.NET概述與C#應(yīng)用.NET是Microsoft.NET的簡稱,是基于Windows平臺(tái)的一種技術(shù)。它包含能在.NETFramework平臺(tái)運(yùn)行的所以編程語言。C#是微軟將C,C++,Java等多種語言優(yōu)點(diǎn)集于一身,專為.NET開發(fā)而設(shè)計(jì)的一種完全面向?qū)ο蟮木幊陶Z言。IDE環(huán)境VisualStudio,它集成了.NETFramework,是目前最流行的.NET平臺(tái)開發(fā)環(huán)境。第1章第一個(gè)C#程序新建程序啟動(dòng)VisualStudio2010新建項(xiàng)目生產(chǎn)可執(zhí)行文件開始運(yùn)行經(jīng)驗(yàn)運(yùn)行的快捷鍵:F5:啟動(dòng)。運(yùn)行的快捷鍵:Ctrl+F5:開始執(zhí)行不調(diào)試第1章第一個(gè)C#程序認(rèn)識(shí)控制臺(tái)應(yīng)用程序文件夾的結(jié)構(gòu)Program.cs:該文件是項(xiàng)目的啟動(dòng)文件,在該文件中定義項(xiàng)目的啟動(dòng)入口,即Main()方法。HelloWorld.exe:這個(gè)文件位于bin\Debug目錄下,是項(xiàng)目編譯后生成的可執(zhí)行文件,可以直接運(yùn)行。認(rèn)識(shí)C#程序namespace命名空間相當(dāng)于Java中的packageusing用來引用其他命名空間,相當(dāng)于Java中的importclass和Java一樣表示類。Main()方法staticvoidMain(string[]args){}staticvoidMain(){}staticintMain(string[]args){}staticintMain(){}關(guān)鍵代碼Console.WriteLine();//從控制臺(tái)輸出內(nèi)容Console.ReadLine();//從控制臺(tái)輸入內(nèi)容

第1章第一個(gè)C#程序C#中的數(shù)據(jù)類型C#中布爾類型為bool,字符串類型關(guān)鍵字為小寫(string)。C#中的變量語法>>數(shù)據(jù)類型變量名稱;命名規(guī)則組成:52個(gè)英文字母(A~Z,a~z)、10個(gè)數(shù)字(0~9)、下劃線(_),除此之外不能含有其他的字符。開頭:只能以字母或下劃線開頭。不能使用的:不能是C#中的關(guān)鍵字。變量名稱要語義化。當(dāng)多個(gè)單詞組成變量名時(shí),應(yīng)該使用駱駝(Camel)命名法。第1章第一個(gè)C#程序常量定義:常量就是在程序運(yùn)行過程中保持不變的值。語法>>const數(shù)據(jù)類型常量名稱=值;命名規(guī)范常量名稱必須具有一定的實(shí)際意義。常量名稱最好以大寫字母來命名,中間可以根據(jù)意義的連接性用下劃線做連接,每個(gè)常量定義的右側(cè)最好有一簡單的注釋,說明其作用。常量名稱最好不要超過25個(gè)字符,否則可讀性差。第1章第一個(gè)C#程序Console類C#向控制臺(tái)輸出(三種方式)Console.WriteLine();Console.WriteLine(要輸出的值);Console.WriteLIne(“格式字符串”,變量列表);C#向控制臺(tái)讀入Console.ReadLine();intage=int.Parse(Console.ReadLine());第1章第一個(gè)C#程序自定義方法語法>>訪問修飾符返回類型方法名(參數(shù)列表){ //方法主體}方法命名規(guī)范方法名要有實(shí)際的含義,最好是動(dòng)賓短語。用Pascal命名法第1章第一個(gè)C#程序類和對(duì)象語法>>

訪問修飾符class類名

{ //類的主體

}注釋C#中行注釋和塊注釋與Java是完全相同的,分別使用//和/*…*/。文檔注釋每一行都以”///”開頭。折疊把方法代碼寫在#region和#endregion之間。

第1章第一個(gè)C#程序調(diào)試程序的步驟如下:設(shè)置斷點(diǎn):按F9快捷鍵。啟動(dòng)調(diào)試:按F5快捷鍵。在監(jiān)視窗口中查看變量的當(dāng)前值。第2章C#語法快速熱身if條件結(jié)構(gòu)簡單if結(jié)構(gòu)if(條件表達(dá)式){ //代碼塊}if-else結(jié)構(gòu)if(條件表達(dá)式){ //代碼塊1}else{ //代碼塊2}開始條件表達(dá)式代碼塊結(jié)束假真簡單if結(jié)構(gòu)的流程圖開始條件表達(dá)式代碼塊1結(jié)束假真代碼塊2If-else結(jié)構(gòu)的流程圖第2章C#語法快速熱身多重if結(jié)構(gòu)if(條件表達(dá)式1){

代碼塊1}elseif(條件表達(dá)式2){

代碼塊2}elseif(條件表達(dá)式3){

代碼塊3}else{

代碼塊4}If-else結(jié)構(gòu)的流程圖開始條件表達(dá)式1代碼塊1結(jié)束假真代碼塊2條件表達(dá)式2代碼塊3條件表達(dá)式3代碼塊4假假真真第2章C#語法快速熱身

嵌套if結(jié)構(gòu)

if(條件表達(dá)式1){ if(條件表達(dá)式2) {

代碼塊1 } else {

代碼塊2 }}else{

代碼塊3 }

開始條件表達(dá)式1代碼塊1結(jié)束假真代碼塊2條件表達(dá)式2代碼塊3真假嵌套if流程圖第2章C#語法快速熱身if結(jié)構(gòu)書寫規(guī)范為了使if結(jié)構(gòu)更加清晰,應(yīng)該把每個(gè)if或else包含的語句都用大括號(hào)括起來。相匹配的一對(duì)if和else應(yīng)該左對(duì)齊內(nèi)層的if結(jié)構(gòu)相對(duì)于外層的if結(jié)構(gòu)要有一定的縮進(jìn)。大括號(hào)按規(guī)范寫法:C#中大括號(hào)“{”和“}”分別各占據(jù)新的一行。而Jave中左大括號(hào)“{”緊跟if結(jié)構(gòu)的條件后面,右大括號(hào)“}”則需要另起新的一行。switch結(jié)構(gòu)switch結(jié)構(gòu)中case字句的擺放是沒有順序的,可以把default字句放在最前面,但要注意任何兩個(gè)case語句不能具有相同的值。case中的值可以是int,char,和string類型,但必須是常量表達(dá)式,不允許使用變量。每個(gè)case和default語句中必須要有break語句。但如果case字句不包含其他語句,就不需要break語句。第2章C#語法快速熱身一維數(shù)組改錯(cuò):

intarray[]=newint[5]{0,1};循環(huán)while循環(huán)語法>>while(條件表達(dá)式){

代碼塊

}

do-while循環(huán)語法>>do{

代碼塊

}while(條件表達(dá)式);

開始條件表達(dá)式代碼塊結(jié)束假真while循環(huán)的執(zhí)行過程開始條件表達(dá)式代碼塊結(jié)束假真do-while循環(huán)的執(zhí)行過程第2章C#語法快速熱身for循環(huán)語法>>for(表達(dá)式1,表達(dá)式2,表達(dá)式3){

代碼塊

}開始代碼塊結(jié)束假真for循環(huán)的執(zhí)行過程條件表達(dá)式2條件表達(dá)式3條件表達(dá)式1第2章C#語法快速熱身foreach循環(huán)語法>>foreach(類型元素in集合或者組合){

代碼塊

}

語法中的“元素”是一個(gè)只讀變量第2章C#語法快速熱身循環(huán)應(yīng)用的區(qū)別如下while循環(huán)是先判斷條件表達(dá)式是否成立。若成立則執(zhí)行循環(huán)體;否則結(jié)束循環(huán)。do-while循環(huán)先執(zhí)行一次循環(huán)體再判斷條件表達(dá)式是否成立。若成立則繼續(xù)循環(huán);否則結(jié)束循環(huán)。for循環(huán)必須使用整形變量做循環(huán)計(jì)算器,通過條件表達(dá)式限定計(jì)數(shù)器變量值來控制循環(huán)。foreach()自動(dòng)遍歷給定集合的所有值。第2章C#語法快速熱身break語句可以用在switch,for循環(huán),foreach循環(huán),while循環(huán),do-while循環(huán)中continue語句必須出現(xiàn)在for循環(huán),foreach循環(huán),do-while循環(huán),while循環(huán)中。二重循環(huán)【代碼演示】冒泡排序外層循環(huán)n-1,內(nèi)層循環(huán)n-1-I,【代碼演示】C#中的訪問修飾符this關(guān)鍵字

this關(guān)鍵字代表的是當(dāng)前的對(duì)象。在類的內(nèi)部,可以用this關(guān)鍵字訪問它的成員。第3章使用屬性升級(jí)MyBank訪問修飾符訪問權(quán)限訪問級(jí)別public不受任何限制最高private只有類的內(nèi)部可以使用最低第3章使用屬性升級(jí)MyBankC#的屬性這種結(jié)合了字段和方法的實(shí)現(xiàn)方式我們稱為屬性(propert)。語法

privatestring_name;publicstringName{ get{return_name;} set{_name=value;} }屬性的數(shù)據(jù)類型屬性的數(shù)據(jù)類型可以是一個(gè)類或一個(gè)數(shù)組。屬性的訪問類型只讀屬性,只包含get訪問器只寫屬性,只包含set訪問器讀寫屬性,包含get和set訪問器封裝字段快捷鍵Ctrl+R+E。第3章使用屬性升級(jí)MyBankC#中,一般為類的私有字段和屬性的命名會(huì)采用不同的命名法。在為類的私有字段命名時(shí),要以下劃線“_”開頭,隨后出現(xiàn)的英文字母采用Camel命名法。在為類的屬性命名時(shí),采用Pascal命名法。C#中,字段和屬性的區(qū)別:通常將字段指定為private,在類內(nèi)部使用。將屬性指定為public,對(duì)外部公開,通過get和set訪問器對(duì)字段提供安全,有效范圍的保護(hù)。C#中,屬性和方法的區(qū)別:C#中屬性get訪問器和set訪問器后不需要使用“()”,因?yàn)樵L問器沒有返回值,所以不需要指定void。第3章使用屬性升級(jí)MyBank面向?qū)ο蟮奶卣髦庋b定義:封裝是將數(shù)據(jù)和操作的方法保存在一起的技術(shù),或是有選擇地隱藏或公開類中的屬性和方法的過程。封裝為我們帶來的好處避免使用非法數(shù)據(jù)賦值保證數(shù)據(jù)的完整性避免類的內(nèi)部發(fā)生修改時(shí),導(dǎo)致整個(gè)程序的修改。值傳遞和引用傳遞值傳遞是將變量的值復(fù)制一份傳遞給方法,使得改方法的形參和實(shí)參的值相同。在調(diào)用方法中修改形參也只是對(duì)實(shí)參復(fù)制品的數(shù)據(jù)更新,并沒有真正改變實(shí)參的值。引用傳遞是將要傳遞的對(duì)象的引用復(fù)制給方法的形參,使得被調(diào)用的方法直接對(duì)引用對(duì)象進(jìn)行更改,會(huì)影響實(shí)參原來的值。(使用ref關(guān)鍵字)第4章深入C#的String類常用字符串的處理方法Equals()Compare(stringstrA,stringstrB)IndexOf(stringvalue)LastIndexOf(stringvalue)Join(stringseparator,string[]value)Split(charseparator)Substring(intstartIndex,intlength)ToLower()ToUpper()Trim()第4章深入C#的String類運(yùn)算符==和String類方法Equals()的區(qū)別如下==:通常來比較int,double等數(shù)值類型的數(shù)據(jù)是否相等。Equals():通常用來比較兩個(gè)對(duì)象的值是否相等?!啊焙蚐tring.Empty的作用如下“”:為String對(duì)象分配了一個(gè)長度為0的存儲(chǔ)空間。String.Empty:為對(duì)象分配了一個(gè)長度為0的存儲(chǔ)空間。第4章深入C#的String類Format格式化語法>>StringmyString=String.Format(“格式字符串”,參數(shù)列表);

其中格式字符串中包含固定文本和格式項(xiàng)。格式項(xiàng)的形式如下:

{索引[,對(duì)齊][:格式字符串]}格式化數(shù)值結(jié)果表第4章深入C#的String類字符說明示例輸出結(jié)果C貨幣格式String.Format(“{0:C3}”,2000)¥2000.000D十進(jìn)制格式String.Format(“{0:D3}”,2000)2000F小數(shù)點(diǎn)后的位數(shù)固定String.Format(“{0:F3}”,2000)2000.000N用逗號(hào)(,)隔開的數(shù)字String.Format(“{0:N}”,250000)250,000.00P百分比計(jì)數(shù)法String.Format(“{0:P3}”,0.29768)29.768X十六進(jìn)制格式String.Format(“{0:X000}”,12)c第4章深入C#的String類簡單的類型轉(zhuǎn)換隱式類型轉(zhuǎn)換任何數(shù)值類型A,只要其取值范圍完全包含在類型B的取值范圍類,就可以隱式轉(zhuǎn)換為類型B。顯式類型轉(zhuǎn)換sum=(int)score+bonus;注意:顯式類型轉(zhuǎn)換會(huì)丟失精度。數(shù)值類型與字符串之間的轉(zhuǎn)換字符串轉(zhuǎn)換為數(shù)值型int.Parse(string);float.Parse(string);double.Parse(string);數(shù)值型轉(zhuǎn)換為字符串stringmyage=age.ToString();第4章深入C#的String類常用的Convert類的類型轉(zhuǎn)換方法

方法說明Conver.ToInt32()轉(zhuǎn)換為整形(int型)Conver.ToSingle()轉(zhuǎn)換為單精度浮點(diǎn)型(float型)Conver.ToDouble()轉(zhuǎn)換為雙精度浮點(diǎn)型(double型)Conver.ToString()轉(zhuǎn)換為字符串類型(string型)第6章程序數(shù)據(jù)的集散地:數(shù)據(jù)庫什么是數(shù)據(jù)庫?數(shù)據(jù)庫是表和數(shù)據(jù)庫訪問對(duì)象的集合。其中表分類存儲(chǔ)了不同的實(shí)體信息,每一行數(shù)據(jù)對(duì)應(yīng)一個(gè)實(shí)體的描述信息。當(dāng)今常用數(shù)據(jù)庫SQLServerOracleDB2MySQL第6章程序數(shù)據(jù)的集散地:數(shù)據(jù)庫使用數(shù)據(jù)庫的好處:可以結(jié)構(gòu)化存儲(chǔ)大量的數(shù)據(jù)信息,方便用戶進(jìn)行有效的檢索和訪問??梢杂行У乇3?jǐn)?shù)據(jù)信息的一致性,完整性,降低數(shù)據(jù)冗余。可以滿足應(yīng)用的共享和安全方面的要求。數(shù)據(jù)庫技術(shù)能夠方便智能化地分析,產(chǎn)生新的有用的信息。實(shí)體實(shí)體是所有客觀存在的、可以被描述的事物。記錄在數(shù)據(jù)庫的表中,每一“行”(Row)實(shí)際上對(duì)應(yīng)一個(gè)實(shí)體,這樣的一行叫做“記錄”(Record)。字段表格中的每一列,通常叫做“列”,也可以稱之為“字段”。第6章程序數(shù)據(jù)的集散地:數(shù)據(jù)庫數(shù)據(jù)庫和數(shù)據(jù)庫表數(shù)據(jù)庫就是表的集合,邏輯上數(shù)據(jù)庫包括數(shù)據(jù)表,存儲(chǔ)表間關(guān)系的表以及各種關(guān)系對(duì)象數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS,DataBaseManagementSystem)是一種系統(tǒng)軟件,由一個(gè)數(shù)據(jù)庫和一組訪問數(shù)據(jù)的程序構(gòu)成。數(shù)據(jù)庫管理系統(tǒng)的基本目標(biāo)是要提供一個(gè)可以方便有效地存取數(shù)據(jù)庫信息的環(huán)境。數(shù)據(jù)庫管理系統(tǒng)的主要功能是維護(hù)數(shù)據(jù)庫,并有效地訪問數(shù)據(jù)庫中各部分的數(shù)據(jù)。數(shù)據(jù)庫系統(tǒng)(DBS,DataBaseSystem)是一個(gè)實(shí)際可運(yùn)行的系統(tǒng),可以對(duì)系統(tǒng)提供的數(shù)據(jù)進(jìn)行存儲(chǔ),維護(hù)和應(yīng)用,它是由存儲(chǔ)介質(zhì),處理對(duì)象和管理系統(tǒng)共同組成的集合體,通常由軟件,數(shù)據(jù)庫和數(shù)據(jù)庫管理員組成。數(shù)據(jù)庫由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理,數(shù)據(jù)的插入,修改,和檢索都要通過數(shù)據(jù)庫管理系統(tǒng)進(jìn)行。數(shù)據(jù)庫管理員(DBA,DataBaseAdministrator)在數(shù)據(jù)庫系統(tǒng)中負(fù)責(zé)創(chuàng)建,監(jiān)控和維護(hù)整個(gè)數(shù)據(jù)庫,使數(shù)據(jù)能被有權(quán)限使用的人有效使用。

第6章程序數(shù)據(jù)的集散地:數(shù)據(jù)庫數(shù)據(jù)冗余和數(shù)據(jù)完整性在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)重復(fù)的現(xiàn)象就是數(shù)據(jù)冗余(Redundance)數(shù)據(jù)的完整性(Integrality)是指數(shù)據(jù)庫中數(shù)據(jù)的準(zhǔn)確性。登陸SQLServer數(shù)據(jù)庫連接SQLServer數(shù)據(jù)庫時(shí)需要注意以下兩點(diǎn):在連接SQLServer之前,SQLServer服務(wù)必須已經(jīng)啟動(dòng)SQLServerManagementStudio可以連接和管理多個(gè)其他計(jì)算機(jī)上的SQLServer數(shù)據(jù)庫。SQLServer中數(shù)據(jù)庫按照用途可以劃分為如下兩種:系統(tǒng)數(shù)據(jù)庫用戶數(shù)據(jù)庫第6章程序數(shù)據(jù)的集散地:數(shù)據(jù)庫MicrosoftSQLServer2008提供的系統(tǒng)數(shù)據(jù)庫Master數(shù)據(jù)庫Tempdb數(shù)據(jù)庫Model數(shù)據(jù)庫Msdb數(shù)據(jù)庫Resource數(shù)據(jù)庫新建數(shù)據(jù)庫連接SQLServer支持兩種身份認(rèn)證Windows身份驗(yàn)證SQLServer身份驗(yàn)證操作權(quán)限固定的數(shù)據(jù)庫操作權(quán)限有十個(gè)db_backupoperator權(quán)限可以備份數(shù)據(jù)庫db_datareader可以讀取數(shù)據(jù)庫中的數(shù)據(jù)db_denydatareader不允許讀取數(shù)據(jù)第6章程序數(shù)據(jù)的集散地:數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫數(shù)據(jù)庫文件(DatabaseFile)事務(wù)日志文件(TransactionLogFile數(shù)據(jù)庫文件是存放數(shù)據(jù)庫數(shù)據(jù)和數(shù)據(jù)庫對(duì)象的文件,一個(gè)數(shù)據(jù)庫可以有多個(gè)數(shù)據(jù)庫文件,一個(gè)數(shù)據(jù)庫文件只屬于一個(gè)數(shù)據(jù)庫。當(dāng)有多個(gè)數(shù)據(jù)庫文件時(shí),有一個(gè)文件被指定為主數(shù)據(jù)庫文件(PrimaryDatabaseFile),主數(shù)據(jù)庫文件的擴(kuò)展名為.mdf,它用來存儲(chǔ)數(shù)據(jù)庫的啟動(dòng)信息數(shù)據(jù)。一個(gè)數(shù)據(jù)庫只能有一個(gè)主數(shù)據(jù)庫文件,其他數(shù)據(jù)庫文件被稱為次數(shù)據(jù)庫文件(SecondaryDatabaseFile)。事務(wù)日志文件(TransactionLogFile)事物日志文件用來記錄數(shù)據(jù)庫的更新情況。事物日志文件的文件擴(kuò)展名為.ldf,一個(gè)數(shù)據(jù)庫可以有一個(gè)或多個(gè)事物日志文件。第6章程序數(shù)據(jù)的集散地:數(shù)據(jù)庫數(shù)據(jù)庫的選項(xiàng)兼容級(jí)別:數(shù)據(jù)庫向以前的版本兼容的級(jí)別。數(shù)據(jù)庫為只讀:一般該選項(xiàng)都設(shè)置為False,如果設(shè)置為True,則該數(shù)據(jù)庫將不允許再寫入數(shù)據(jù)。訪問限制:指定哪些用戶可以訪問該數(shù)據(jù)庫,可能值有以下三種。Multiple:數(shù)據(jù)庫的正常狀態(tài),允許多個(gè)用戶同時(shí)訪問該數(shù)據(jù)庫Single:用于維護(hù)操作的狀態(tài),一次只允許一個(gè)用戶訪問該數(shù)據(jù)庫。Restricted:只有管理員或者特定的成員才能使用該數(shù)據(jù)庫。自動(dòng)關(guān)閉:如果設(shè)置為True的話,則最后一個(gè)用戶退出后,數(shù)據(jù)庫會(huì)關(guān)閉并且釋放資源。對(duì)那些經(jīng)常被使用的數(shù)據(jù)庫,此選項(xiàng)不要設(shè)置為True,否則會(huì)額外增加開關(guān)數(shù)據(jù)庫帶來的負(fù)擔(dān)。自動(dòng)收縮:如果設(shè)置為True的話,則該數(shù)據(jù)庫將定期自動(dòng)收縮,釋放沒有使用的數(shù)據(jù)庫磁盤空間。第7章用表組織數(shù)據(jù)庫數(shù)據(jù)完整性為了實(shí)現(xiàn)完整性,數(shù)據(jù)庫需要做以下兩方面的工作。檢驗(yàn)每行數(shù)據(jù)是否符合要求檢驗(yàn)每列數(shù)據(jù)是否符合要求為了實(shí)現(xiàn)以上要求,SQLServer提供了以下四種類型的約束(Constraint)。實(shí)體完整性約束實(shí)體完整性約束要求表中的每一行數(shù)據(jù)都反映不同的實(shí)體,不能存在相同的數(shù)據(jù)行。通過索引,唯一約束,主鍵約束,或標(biāo)識(shí)列屬性,可以實(shí)現(xiàn)表的實(shí)體完整性。域完整性約束域完整性指的是給定輸入的有效性。通過限制數(shù)據(jù)類型,檢查約束,輸入格式,外鍵約束,默認(rèn)值,非空約束等多種方法,可以實(shí)現(xiàn)表的域完整性。引用完整性約束在強(qiáng)制引用完整性時(shí),SQLServer禁止用戶進(jìn)行下列操作當(dāng)主表中沒有關(guān)聯(lián)的記錄時(shí),將記錄添加到字表中。更改主表中的值并導(dǎo)致相關(guān)表中的記錄孤立。從主表中刪除記錄,但是相關(guān)表中仍存在與該記錄匹配的相關(guān)記錄。引用完整性通過主鍵和外鍵之間的引用關(guān)系來實(shí)現(xiàn)自定義完整性約束用戶自定義完整性用來定義特定的規(guī)則。第7章用表組織數(shù)據(jù)庫主鍵定義:主鍵用來唯一標(biāo)識(shí)表中的每一行,用于強(qiáng)制表的實(shí)體完整性。一個(gè)表只能有一個(gè)主鍵,主鍵約束了表中的行是唯一的。在選擇哪個(gè)列作為主鍵的時(shí)候,需要考慮以下兩個(gè)原則:最少性和穩(wěn)定性最少性是指列數(shù)最少的鍵,如果可以從單個(gè)主鍵和組合主鍵中選擇時(shí),應(yīng)該選擇單個(gè)主鍵,這是因?yàn)椴僮饕涣斜炔僮鞫嗔幸臁.?dāng)然該規(guī)則也有例外,例如,兩個(gè)整數(shù)類型的列的組合比一個(gè)很大的字符類型的列要快。穩(wěn)定性是指列中數(shù)據(jù)的特征,由于主鍵通常用來在兩個(gè)表之間建立聯(lián)系,所以主鍵的數(shù)據(jù)不要經(jīng)常更新,理想情況下,應(yīng)該永遠(yuǎn)不改變。第7章用表組織數(shù)據(jù)庫外鍵外鍵用來強(qiáng)制引用完整性。一個(gè)表可以有多個(gè)外鍵。SQLServer中常用的數(shù)據(jù)類型binary,varbinary,image,char,varchar,nchar,nvarchar,text,ntext,datetime,int,smallint,tinyint,bigint,float,real,money,bit第7章用表組織數(shù)據(jù)庫標(biāo)識(shí)列標(biāo)識(shí)列的數(shù)據(jù)是自動(dòng)生成的,不能在該列上輸入數(shù)據(jù)。如果建立了主表和子表的關(guān)系,則有以下幾種情況。子表中相關(guān)項(xiàng)目的數(shù)據(jù)在主表中必須存在。主表中相關(guān)項(xiàng)的數(shù)據(jù)更改了,則子表對(duì)應(yīng)的數(shù)據(jù)項(xiàng)也應(yīng)該隨之更改。在刪除子表之前,不能夠刪除主表。第8章用SQL語句操作數(shù)據(jù)SQL簡介SQL全稱是“結(jié)構(gòu)化查詢語言(StructuredQueryLanguage)”SQL是針對(duì)數(shù)據(jù)庫而言的一門語言,它可以創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)表,可以針對(duì)數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行增,刪,改,查等操作,可以創(chuàng)建視圖,存儲(chǔ)過程,可以賦予用戶權(quán)限等。SQL的組成SQL語言主要由以下幾部分組成。DML(DataManipulationLanguage,數(shù)據(jù)操作語言,也稱為數(shù)據(jù)操縱語言):用來插入,修改和刪除數(shù)據(jù)庫中的數(shù)據(jù),如INSERT,UPDATE,及DELETE等。DDL(DataDefinitionLanguage,數(shù)據(jù)定義語言):用來建立數(shù)據(jù)庫,數(shù)據(jù)庫對(duì)象和定義其列,大部分是以CREATE開頭的命令如CREATETABLE,CREATEVIEW及DROPTABLE等。DQL(DataQueryLanguage,數(shù)據(jù)查詢語言):用來對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢,如SELECT等。DCL(DataControlLanguage,數(shù)據(jù)控制語言):用來控制數(shù)據(jù)庫組件的存取許可,存取權(quán)限等,如GRANT,REVOKE等除此之外,T-SQL還包括變量說明,內(nèi)部函數(shù)等其他的命令。第8章用SQL語句操作數(shù)據(jù)SQL中的運(yùn)算符算術(shù)運(yùn)算符+,-,*,/,%賦值運(yùn)算符=比較運(yùn)算符=,<,>,<>,<=,>=邏輯運(yùn)算符AND,OR,NOT使用INSERT插入數(shù)據(jù)語法》Insert[into]表名[(列名列表)]values(值列表);其中:[into]是可選的,也可以省略。表名是必須的表的列名是可選的,如果省略,將依次插入所有列。多個(gè)列名和多個(gè)值列表用逗號(hào)分隔。分號(hào)(;)是T-SQL語句終止符,分號(hào)不是必須的。第8章用SQL語句操作數(shù)據(jù)注意事項(xiàng)每次插入一整行數(shù)據(jù),不可能只插入半行或者幾列數(shù)據(jù),但允許某些列為空或使用默認(rèn)值。如果違反列的非空約束,那么插入語句會(huì)檢驗(yàn)失敗,不能成功插入數(shù)據(jù)。數(shù)據(jù)值的數(shù)目必須與列數(shù)相同,每個(gè)數(shù)據(jù)值的數(shù)據(jù)類型,精度和小數(shù)位數(shù)也必須與相應(yīng)的列匹配。INSERT語句不能為標(biāo)識(shí)列指定值,因?yàn)樗臄?shù)字是自動(dòng)增長的。對(duì)于字符類型,日期類型的列,當(dāng)插入數(shù)據(jù)的時(shí)候,用單引號(hào)(‘)將其引起來。盡管可以不指定列名,但是最好明確指定插入的列和對(duì)應(yīng)的值,以做到“心中有數(shù)”。如果在設(shè)計(jì)表的時(shí)候指定某列不允許為空,則該列必須插入數(shù)據(jù),否則將報(bào)告錯(cuò)誤信息。插入的數(shù)據(jù)項(xiàng),要求符合檢查約束的要求。(default可以為擁有默認(rèn)值的列插入數(shù)據(jù))第8章用SQL語句操作數(shù)據(jù)一次插入多行數(shù)據(jù)通過insertselect語句將現(xiàn)有表中的數(shù)據(jù)添加到已存在的表中注意查詢得到的數(shù)據(jù)個(gè)數(shù),順序,數(shù)據(jù)類型等,必須與插入的項(xiàng)保持一致新表必須預(yù)先建好,并且具有列的相關(guān)屬性。通過selectinto語句將現(xiàn)有表中的數(shù)據(jù)添加到新表語法》selectidentity(數(shù)據(jù)類型,標(biāo)識(shí)種子,標(biāo)識(shí)增長量)as列名into新表from原始表注:該表不能預(yù)先存在通過union關(guān)鍵字合并數(shù)據(jù)進(jìn)行插入第8章用SQL語句操作數(shù)據(jù)使用update更新數(shù)據(jù)語法》update表名set列名=更新值[where更新條件]其中set后面可以緊隨多個(gè)數(shù)據(jù)列的更新值,不限一個(gè),使用逗號(hào)分隔。where子句是可選的,用來限制更新數(shù)據(jù)的條件。如果不限制,則整個(gè)表的所有數(shù)據(jù)行將被更新。使用delete刪除數(shù)據(jù)語法》delete[from]表名[where<刪除條件>];提示delete語句只要?jiǎng)h除就是刪除整條記錄,不會(huì)只刪除單個(gè)列,所以在delete后不能出現(xiàn)列名使用truncatetable刪除數(shù)據(jù)truncatetable刪除表中的所以行,但是表的結(jié)構(gòu),列,約束,索引等不會(huì)被改動(dòng)。truncatetable不能用于有外鍵約束引用的表,這種情況下,需要使用delete語句。truncatetable比delete執(zhí)行速度快,使用的系統(tǒng)資源和事務(wù)日志資源更少,并且刪除數(shù)據(jù)后表的標(biāo)識(shí)列會(huì)重新開始編號(hào)。導(dǎo)入和導(dǎo)出數(shù)據(jù)現(xiàn)場演示第9章數(shù)據(jù)查詢基礎(chǔ)使用select語句進(jìn)行查詢語法》select<列名>from<表名>[where<查詢條件表達(dá)式>][orderby<排序的列名>[ASC或DESC]]查詢所有的數(shù)據(jù)行和列(*)查詢部分行和列在查詢中使用列的別名(as)查詢空值(isnull)在查詢中使用常量列查詢返回限制的行數(shù)(top)第9章數(shù)據(jù)查詢基礎(chǔ)orderbyASC升序DESC降序在查詢中使用函數(shù)常用的四類函數(shù)字符串函數(shù)日期函數(shù)數(shù)學(xué)函數(shù)系統(tǒng)函數(shù)第9章數(shù)據(jù)查詢基礎(chǔ)部分常用的字符串函數(shù)charindex用來尋找一個(gè)指定的字符串在另一個(gè)字符串中的起始位置len 返回傳遞給它的字符串長度upper 把傳遞給它的字符串轉(zhuǎn)換為大寫ltrim清除字符左邊的空格rtrim 清除字符右邊的空格right 從字符串右邊返回指定數(shù)目的字符replace替換一個(gè)字符串中的字符stuff 在一個(gè)字符串中,刪除指定長度的字符,并在該位置插入一個(gè)新的字符串第9章數(shù)據(jù)查詢基礎(chǔ)日期函數(shù)函數(shù)名描述舉例GETDATE取得當(dāng)前的系統(tǒng)日期selectgetdate()返回:今天的日期例如:2009-12-2512:00:00.000DATEADD將指定的數(shù)值添加到指定的日期部分后的日期selectdateadd(mm,4,’01/01/2009’)返回:以當(dāng)前的日期格式返回05/01/2009DATEDIFF兩個(gè)日期之間的指定日期部分的間隔selectdatediff(mm,’01/01/2009’,’05/01/2009’)返回:4DATENAME日期中指定日期部分的字符串形式selectdatename(dw,’01/01/2000’)返回:Saturday或星期六DATEPART日期中指定日期部分的整數(shù)形式selectdatepart(day,’01/15/2000’)返回:15第9章數(shù)據(jù)查詢基礎(chǔ)日期部分參數(shù)及其縮寫日期部分參數(shù)縮寫日期部分參數(shù)縮寫yearyy,yyyyweekdaydw,wquarterqq,qhourhhmonthmm,mminutemi,ndayofyeardy,ysecondss,sdaydd,dmillisecondmsweekwk,ww第9章數(shù)據(jù)查詢基礎(chǔ)數(shù)學(xué)函數(shù)函數(shù)名描述舉例RAND返回從0到1之間的隨即float值selectrand()返回:0.79288062146374ABS取數(shù)值表達(dá)式的絕對(duì)值selectABS(-43)返回:43CEILING向上取整,取大于或等于指定數(shù)值、表達(dá)式的最小整數(shù)selectceiling(43.5)返回:44FLOOR向下取整,取小于或等于指定表達(dá)式的最大整數(shù)selectfloor(43.5)返回:43POWER取數(shù)值表達(dá)式的冪值selectpower(5,2)返回:25ROUND將數(shù)值表達(dá)式四舍五入為指定精度selectround(43.543,1)返回:43.500SIGN對(duì)于正數(shù)返回+1,負(fù)數(shù)返回-1,對(duì)于0則返回0selectsign(-43)返回:-1SQRT取浮點(diǎn)表達(dá)式的平方根selectsqrt(9)返回:3第9章數(shù)據(jù)查詢基礎(chǔ)系統(tǒng)函數(shù)函數(shù)名描述舉例CONVERT用來轉(zhuǎn)變數(shù)據(jù)類型selectconvert(varchar(5),12345)返回:字符串12345CURRENT_USER返回當(dāng)前用戶的名字selectcurrent_user返回:你登錄的用戶名DATALENGTH返回用于指定表達(dá)式的字節(jié)數(shù)selectdatalength(‘中國A聯(lián)盟’)返回:5HOST_NAME返回當(dāng)前用戶所登陸的計(jì)算機(jī)名字selecthost_name()返回:你所登錄的計(jì)算機(jī)的名字SYSTEM_USER返回當(dāng)前所登陸的用戶名稱selectsystem_user返回:你當(dāng)前所登錄的用戶名USER_NAME從給定的用戶ID返回用戶名selectuser_name(1)返回:從任意數(shù)據(jù)庫中返回“dbo”第10章模糊查詢和聚合函數(shù)模糊查詢定義:模糊查詢提取的數(shù)據(jù)不一定是確切的,查詢者對(duì)查詢條件也是模糊的,大概的,不特別明確的。模糊查詢可以使用like關(guān)鍵字和通配符來進(jìn)行。(isnull查詢嚴(yán)格來說也是一種模糊查詢),模糊查詢還可以基于某個(gè)范圍內(nèi)的查詢和某些列舉值內(nèi)的查詢第10章模糊查詢和聚合函數(shù)通配符定義:通配符是一類字符,它可以代替一個(gè)或多個(gè)真正的字符,查找信息時(shí)作為替代字符出現(xiàn)。通配符解釋實(shí)例_一個(gè)字符ALIKE‘C_’,則符合條件的A如CS,CD等%任意長度的字符串BLIKE‘CO%’,則符合條件的B如CONST,COKE等[]括號(hào)中所指定范圍內(nèi)的一個(gè)字符CLIKE‘9W0[1-2]’,則符合條件的C如9W01或9W02[^]不在括號(hào)中所指定范圍內(nèi)的任意一個(gè)字符DLIKE‘9W0[^1-2]’,則符合條件的D如9W03或9W07等第10章模糊查詢和聚合函數(shù)使用like進(jìn)行模糊查詢代碼演示使用between在某個(gè)范圍內(nèi)查詢區(qū)別between20and40Between40and20使用in在列舉值內(nèi)進(jìn)行查詢代碼演示聚合函數(shù)SUM()AVG()MAX()和MIN()COUNT()第11章聯(lián)接查詢和分組查詢使用GROUPBY進(jìn)行分組查詢?cè)趕elect列表中可以指定的列:被分組的列為每個(gè)分組返回一個(gè)值的表達(dá)式,如聚合函數(shù)計(jì)算出的列使用HAVING子句進(jìn)行分組篩選在select語句中,WHERE,GROUPBY,HAVING子句和聚合函數(shù)的執(zhí)行次序如下:WHERE子句從數(shù)據(jù)源中去掉不符合其搜索條件的數(shù)據(jù);GROUPBY子句搜集數(shù)據(jù)行到各個(gè)組,HAVING子句去掉不符合其他搜索條件的各組數(shù)據(jù)行。第11章聯(lián)接查詢和分組查詢內(nèi)聯(lián)接定義:它根據(jù)表中共同的列來進(jìn)行匹配。特別是兩個(gè)表存在主外鍵關(guān)系時(shí)通常會(huì)使用到內(nèi)聯(lián)接查詢?cè)趙here子句中指定聯(lián)接條件在from子句中使用innerjoin…onInnerjoin用來聯(lián)接兩個(gè)表Inner可以省略O(shè)n用來設(shè)置條件第11章聯(lián)接查詢和分組查詢外聯(lián)接查詢外聯(lián)接是至少返回一個(gè)表中的所有記錄,根據(jù)匹配條件有選擇性地返回另一張表的記錄。左外聯(lián)接查詢Leftjoin…onJoin后面的表是字表右外聯(lián)接查詢Rightjoin…onJoin后面的表是主表第14章使用ADO.NET訪問數(shù)據(jù)庫ADO.NET簡介ADO.NET是.NETFramework中不可缺少的一部分,它是一組類。通過這些類,.NET可以與數(shù)據(jù)源進(jìn)行連接并對(duì)數(shù)據(jù)進(jìn)行增,刪,改,查等操作。ADO.NET的主要組件.NETFramework數(shù)據(jù)提供程序包括以下四個(gè)核心對(duì)象Connection建立和特定數(shù)據(jù)源的連接Command對(duì)數(shù)據(jù)源執(zhí)行命令DataReader從數(shù)據(jù)源中讀取只進(jìn)且只讀的數(shù)據(jù)流DataAdapter用數(shù)據(jù)源填充DataSet并解析更新DataSet是專門為獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問而設(shè)計(jì)的。使用它,可以不必直接和數(shù)據(jù)源打交道,可以大批量地操作數(shù)據(jù),也可以將數(shù)據(jù)綁定在控件上。第14章使用ADO.NET訪問數(shù)據(jù)庫Connection對(duì)象作用:連接數(shù)據(jù)庫連接數(shù)據(jù)庫步驟:定義連接字符串語法》DataSource=服務(wù)器名;InitialCatalog=數(shù)據(jù)庫名;UserID=用戶名;Pwd=密碼;創(chuàng)建Connection對(duì)象語法》 SqlConnectionconnection=newSqlConnection(connString);打開和數(shù)據(jù)庫的連接語法》 connection.Open();第14章使用ADO.NET訪問數(shù)據(jù)庫Connection對(duì)象常用的屬性和方法屬性說明ConnectionString設(shè)置/獲取應(yīng)用程序連接數(shù)據(jù)庫的連接字符串方法說明Open()使用ConnectionString屬性所指定的設(shè)置打開數(shù)據(jù)庫連接Close()關(guān)閉與數(shù)據(jù)庫的連接第14章使用ADO.NET訪問數(shù)據(jù)庫常見錯(cuò)誤數(shù)據(jù)庫連接字符串各參數(shù)之間的分隔符錯(cuò)誤數(shù)據(jù)庫連接字符串中參數(shù)名稱拼寫錯(cuò)誤數(shù)據(jù)庫連接字符串中引號(hào)出現(xiàn)的位置不正確異常處理語法》try{//包含可能出現(xiàn)異常的代碼}catch(處理的異常類型){//處理異常的代碼}finally{//無論異常是否發(fā)生,該段代碼總會(huì)執(zhí)行。}第14章使用ADO.NET訪問數(shù)據(jù)庫Command對(duì)象創(chuàng)建Command對(duì)象的方法 語法》 SqlCommandcommand=newSqlCommand(SQL語句,Connection對(duì)象);使用Comman對(duì)象的步驟創(chuàng)建數(shù)據(jù)庫連接創(chuàng)建一個(gè)Connection對(duì)象定義執(zhí)行的SQL語句將對(duì)數(shù)據(jù)庫執(zhí)行的SQL語句賦給一個(gè)字符串創(chuàng)建Command對(duì)象使用已有的Connection對(duì)象和SQL語句字符串創(chuàng)建一個(gè)Command對(duì)象執(zhí)行SQL語句使用Command對(duì)象的某個(gè)方法執(zhí)行命令。

第14章使用ADO.NET訪問數(shù)據(jù)庫Command對(duì)象的主要屬性和方法屬性說明ConnectionCommand對(duì)象使用的數(shù)據(jù)庫連接CommandText執(zhí)行SQL語句方法說明ExecuteNonQuery()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論