版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1、SQL SREVER中,向一個(gè)表中插入了新數(shù)據(jù),如何快捷的得到自增量字段的當(dāng)前值這種情況其實(shí)我們經(jīng)常用到,比如我們新建了一個(gè)用戶,建立完用戶后我們希望馬上得到這個(gè)新用戶的ID,因?yàn)槲覀円话愣际前堰@種用戶ID的字段設(shè)置成自增長(zhǎng)類型的,乍看起來(lái)好像沒(méi)有要得到那個(gè)新ID很麻煩,其實(shí)sql server內(nèi)置了一些全局的變量,使我們很容易就得到那個(gè)新的自增字段的ID,就是使用IDENTITY。在一條 INSERT、SELECT INTO 或大容量復(fù)制語(yǔ)句完成后,IDENTITY 中包含語(yǔ)句生成的最后一個(gè)標(biāo)識(shí)值。如果語(yǔ)句未影響任何包含標(biāo)識(shí)列的表,則IDENTITY 返回 NULL。如果插入了多個(gè)行,生
2、成了多個(gè)標(biāo)識(shí)值,則 IDENTITY 將返回最后生成的標(biāo)識(shí)值。如果語(yǔ)句觸發(fā)了一個(gè)或多個(gè)觸發(fā)器,該觸發(fā)器又執(zhí)行了生成標(biāo)識(shí)值的插入操作,那么,在語(yǔ)句執(zhí)行后立即調(diào)用 IDENTITY 將返回觸發(fā)器生成的最后一個(gè)標(biāo)識(shí)值。在具體應(yīng)用中可以這樣來(lái)寫(xiě)SQL語(yǔ)句:string strSql = "INSERT INTOUser(Name,LoginName,Pwd,RegTime,IsSuper,Remark" +"VALUES(Name,LoginName,Pwd,RegTime,IsSuper,Remark;selectIDENTITY ;"執(zhí)行的時(shí)候直接用comm
3、and.ExecuteScalar(;就可以了,能直接返回該條記錄的UserID;解答二:經(jīng)過(guò)實(shí)驗(yàn),得如下結(jié)論:select DISTINCT IDENTITY as iden from FaWen解釋:上述語(yǔ)句對(duì) SQL SERVER 的一個(gè)會(huì)話,也就是一條連接,返回該連接最后一條插入記錄得到的自增字段的值。假設(shè)有3個(gè)程序,分別連接SQL SERVER,有三個(gè)連接。3個(gè)程序都向同一個(gè)表依順序插入數(shù)據(jù),得到的值分別是1、2、3,那么,只要3個(gè)程序?qū)QL的連接還保持著,第一個(gè)程序使用上述語(yǔ)句,將得到1,而不是3,第二個(gè)程序?qū)⒌玫?,也不是3。第三個(gè)程序得到3。因此,用上述語(yǔ)句可以得到自己剛才插
4、入記錄的自增字段的值,不怕其它程序的并發(fā)插入操作。上述語(yǔ)句中,使用 DISTINCT 的原因是,雖然返回的值是當(dāng)前連接插入操作得到的最大值,但返回的相同值的記錄有多條。條數(shù)等于當(dāng)前多個(gè)連接一共插入的記錄數(shù)。實(shí)驗(yàn)方法:啟動(dòng)三個(gè) Query analyzer 查詢分析器,分別執(zhí)行插入操作后再做上述取自增字段值的操作我利用rs.addnew增加一條記錄時(shí),如何同時(shí)獲取自增1字段ID的當(dāng)前值,而無(wú)須再進(jìn)行一次查詢來(lái)獲取!因?yàn)槲伊⒓匆玫皆揑D值,如果在增加記錄完畢后再利用select id 進(jìn)行一次查詢無(wú)疑會(huì)使系統(tǒng)受限,有辦法嗎?如果你能保證id=行數(shù)的話可以用rs.moveend '當(dāng)指針在
5、最后一條記錄時(shí)count是全部行數(shù)rs.count2、什么叫做SQL注入,如何防止?請(qǐng)舉例說(shuō)明SQL注入就是在正常的SQL執(zhí)行語(yǔ)句中惡意插入攻擊者想要運(yùn)行的sql語(yǔ)句,比如,我們有一個(gè)方法是這么寫(xiě)的:public static bool Login(string loginName,string pwdstring strSql = string.Format("select * from User where LoginName = '0' and Pwd = '1' ",loginName,pwd;.如果我傳給loginname的值是
6、39; or 1=1-,那么這個(gè)sql語(yǔ)句成了select * from User where LoginName = '' or 1=1-',這樣不管我密碼輸入什么,肯定都是符合條件的。當(dāng)然這只是最簡(jiǎn)單的情況,如果我把loginname的值改成' or1=1;delete from user-,那么后果不堪設(shè)想,如果我通過(guò)sql來(lái)執(zhí)行net use相關(guān)的命令,就可能在服務(wù)器上給自己加一個(gè)帳號(hào),這樣就逐步可以控制整個(gè)數(shù)據(jù)庫(kù)所在的服務(wù)器。這就是sql注入的通常方法和可能的損害。要放置其實(shí)也很簡(jiǎn)單,可以通過(guò)至少兩個(gè)方法來(lái)進(jìn)行:1.最根本的,不實(shí)用組合sql的方法,而
7、是通過(guò)使用命令參數(shù)方式來(lái)執(zhí)行命令,比如我們把sql改成這種方式:string strSql = "select * from user where LoginName =LoginName and Pwd =Pwd ",然后通過(guò)sqlcommand來(lái)執(zhí)行它,就可以從根本上解決這個(gè)問(wèn)題。2.控制參數(shù)的長(zhǎng)度。因?yàn)橐脒M(jìn)行sql注入的話,需要一定長(zhǎng)度的字符串才能執(zhí)行,如果我們規(guī)定LoginName 的長(zhǎng)度最長(zhǎng)不超過(guò)8個(gè),一般不會(huì)造成損害,當(dāng)然這個(gè)只是在特殊的情況下才使用,比如有些情況可能不能使用命令參數(shù)方式。點(diǎn)評(píng):sql注入是我們編程時(shí)必須考慮的問(wèn)題,特別是BS的程序,更是要嚴(yán)格
8、檢查是否有sql注入的漏洞。最關(guān)鍵的一點(diǎn)是,你要明白怎么解決這個(gè)問(wèn)題,一般面試人員會(huì)希望你提高使用參數(shù)方式來(lái)防止注入。3、游標(biāo)的作用?如何知道游標(biāo)已經(jīng)到了最后?關(guān)系數(shù)據(jù)庫(kù)中的操作會(huì)對(duì)整個(gè)行集起作用。由 SELECT 語(yǔ)句返回的行集包括滿足該語(yǔ)句的 WHERE 子句中條件的所有行。這種由語(yǔ)句返回的完整行集稱為結(jié)果集。應(yīng)用程序,特別是交互式聯(lián)機(jī)應(yīng)用程序,并不總能將整個(gè)結(jié)果集作為一個(gè)單元來(lái)有效地處理。這些應(yīng)用程序需要一種機(jī)制以便每次處理一行或一部分行。游標(biāo)就是提供這種機(jī)制的對(duì)結(jié)果集的一種擴(kuò)展。游標(biāo)的特點(diǎn)是:允許定位在結(jié)果集的特定行。從結(jié)果集的當(dāng)前位置檢索一行或一部分行。支持對(duì)結(jié)果集中當(dāng)前位置的行進(jìn)行
9、數(shù)據(jù)修改。為由其他用戶對(duì)顯示在結(jié)果集中的數(shù)據(jù)庫(kù)數(shù)據(jù)所做的更改提供不同級(jí)別的可見(jiàn)性支持。提供腳本、存儲(chǔ)過(guò)程和觸發(fā)器中用于訪問(wèn)結(jié)果集中的數(shù)據(jù)的 Transact-SQL 語(yǔ)句在從游標(biāo)中提取信息后,可以通過(guò)判斷FETCH_STATUS 的值來(lái)判斷是否到了最后。當(dāng)FETCH_STATUS為0的時(shí)候,說(shuō)明提取是成功的,否則就可以認(rèn)為到了最后。點(diǎn)評(píng):游標(biāo)是進(jìn)行數(shù)據(jù)庫(kù)操作的一個(gè)重要概念,但是在現(xiàn)代的軟件開(kāi)發(fā)中應(yīng)用的不是很多,只有在一些特殊的存儲(chǔ)過(guò)程中才會(huì)應(yīng)用。但是,畢竟這是一個(gè)很重要,也是我們必須掌握的概念,最好能理解它的原理和用法。4、SQL Server的兩種索引是何形式?索引的作用?索引的優(yōu)缺點(diǎn)?sq
10、l server的索引分為聚集索引和非聚集索引,下面分別說(shuō)明:聚集索引聚集索引根據(jù)數(shù)據(jù)行的鍵值在表或視圖中排序和存儲(chǔ)這些數(shù)據(jù)行。索引定義中包含聚集索引列。每個(gè)表只能有一個(gè)聚集索引,因?yàn)閿?shù)據(jù)行本身只能按一個(gè)順序排序。只有當(dāng)表包含聚集索引時(shí),表中的數(shù)據(jù)行才按排序順序存儲(chǔ)。如果表具有聚集索引,則該表稱為聚集表。如果表沒(méi)有聚集索引,則其數(shù)據(jù)行存儲(chǔ)在一個(gè)稱為堆的無(wú)序結(jié)構(gòu)中。非聚集索引非聚集索引具有獨(dú)立于數(shù)據(jù)行的結(jié)構(gòu)。非聚集索引包含非聚集索引鍵值,并且每個(gè)鍵值項(xiàng)都有指向包含該鍵值的數(shù)據(jù)行的指針。從非聚集索引中的索引行指向數(shù)據(jù)行的指針?lè)Q為行定位器。行定位器的結(jié)構(gòu)取決于數(shù)據(jù)頁(yè)是存儲(chǔ)在堆中還是聚集表中。對(duì)于堆,
11、行定位器是指向行的指針。對(duì)于聚集表,行定位器是聚集索引鍵。索引的作用主要是為了在查詢時(shí)提高查詢的效率,并且盡量減小更新時(shí)的開(kāi)銷。優(yōu)點(diǎn):設(shè)計(jì)良好的索引查詢效率可以得到極大的提高,某些情況下甚至可以提高幾百上千倍。缺點(diǎn):需要占用額外的空間和資源。在更新時(shí)耗費(fèi)的時(shí)間更大,因?yàn)閷?duì)數(shù)據(jù)的更新很有可能會(huì)導(dǎo)致索引的更新,這樣就會(huì)導(dǎo)致增加系統(tǒng)開(kāi)銷。點(diǎn)評(píng):在所有的進(jìn)行系統(tǒng)優(yōu)化的選擇中,索引都是第一位的,一個(gè)設(shè)計(jì)良好的數(shù)據(jù)庫(kù)肯定需要高超的索引設(shè)計(jì)技巧,在這方面效率提高不是一倍兩倍的問(wèn)題,而是可能會(huì)有質(zhì)的飛躍,對(duì)索引優(yōu)化的重要性,在一個(gè)大型項(xiàng)目里,怎么說(shuō)都不為過(guò)。但是,索引優(yōu)化又是比較困難的,哪些列需要加入索引,列
12、的順序怎樣,哪個(gè)索引需要設(shè)置為聚集索引等等,都是我們必須要考慮的問(wèn)題。5、事務(wù)是什么?事務(wù)是單個(gè)的工作單元。如果某一事務(wù)成功,則在該事務(wù)中進(jìn)行的所有數(shù)據(jù)修改均會(huì)提交,成為數(shù)據(jù)庫(kù)中的永久組成部分。如果事務(wù)遇到錯(cuò)誤且必須取消或回滾,則所有數(shù)據(jù)修改均被清除。也就是說(shuō),事務(wù)是由一系列的“原子”操作組成的,這些原子操作必須全部完成,否則所有的動(dòng)作都會(huì)被取消并恢復(fù)到初始狀態(tài)。開(kāi)始事務(wù)使用BEGIN TRANSACTION 語(yǔ)句顯,以 COMMIT 或 ROLLBACK 語(yǔ)句結(jié)束。以上是針對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō)的。但是,事務(wù)不僅僅限于數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)以外的動(dòng)作也可以被組合進(jìn)事務(wù)中,一般稱為“企業(yè)級(jí)事務(wù)”。舉一個(gè)例子:我
13、們有這兩個(gè)操作必須都完成,即在向數(shù)據(jù)庫(kù)插入一條記錄后必須在硬盤的某個(gè)文件夾內(nèi)創(chuàng)建一個(gè)文件,這個(gè)就是一個(gè)企業(yè)級(jí)事務(wù),它超出了簡(jiǎn)單的數(shù)據(jù)庫(kù)事務(wù)的范疇。我們可以通過(guò)編程來(lái)實(shí)現(xiàn)企業(yè)級(jí)事務(wù)。點(diǎn)評(píng):事務(wù)是數(shù)據(jù)庫(kù)開(kāi)發(fā)中一個(gè)非常重要的概念,它對(duì)與保證數(shù)據(jù)庫(kù)的完整性和一致性非常重要。對(duì)于事務(wù)的的C#代碼實(shí)現(xiàn)更是務(wù)必要熟練掌握。6、存儲(chǔ)過(guò)程和函數(shù)的區(qū)別存儲(chǔ)過(guò)程,功能強(qiáng)大,可以執(zhí)行包括修改表等一系列數(shù)據(jù)庫(kù)操作,也可以創(chuàng)建為SQL Server 啟動(dòng)時(shí)自動(dòng)運(yùn)行的存儲(chǔ)過(guò)程。自定義函數(shù),用戶定義函數(shù)不能用于執(zhí)行一組修改全局?jǐn)?shù)據(jù)庫(kù)狀態(tài)的操作。存儲(chǔ)過(guò)程,可以使用非確定函數(shù)。自定義函數(shù),不允許在用戶定義函數(shù)主體中內(nèi)置非確定函數(shù)。存儲(chǔ)過(guò)程,可返回記錄集。自定義函數(shù),可以返回表變量,也可以有任意個(gè)輸出參數(shù),存儲(chǔ)過(guò)程,其返回值不能被直接引用,必須單獨(dú)調(diào)用自定義函數(shù),其返回值可以被直接引用,也就是可以直接 select * from 函數(shù)6.sqlserver2000是一種大型數(shù)據(jù)庫(kù),他的存儲(chǔ)容量只受存儲(chǔ)介質(zhì)的限制,請(qǐng)問(wèn)它是通過(guò)什么方式實(shí)現(xiàn)這種無(wú)限容量機(jī)制的。-它的所有數(shù)據(jù)都存儲(chǔ)在數(shù)據(jù)文件中(*.dbf,所以只要文件夠大,SQL Server 的存儲(chǔ)容量是可以擴(kuò)大的.SQL Server 2000 數(shù)據(jù)庫(kù)有三種類型的文件: 主要數(shù)據(jù)文件 主要數(shù)據(jù)文件是數(shù)據(jù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度存量房買賣合同履約監(jiān)督與質(zhì)量保障服務(wù)協(xié)議3篇
- 2025年補(bǔ)充協(xié)議勞務(wù)合同范本下載3篇
- 2025年度互聯(lián)網(wǎng)數(shù)據(jù)中心IDC租賃合同模板獲取3篇
- 依存句法分析中的深度學(xué)習(xí)技術(shù)-深度研究
- 2025至2031年中國(guó)雷蒙磨機(jī)磨輥行業(yè)投資前景及策略咨詢研究報(bào)告
- 城市環(huán)境規(guī)劃與治理-深度研究
- 2025年度個(gè)人醫(yī)療美容服務(wù)合同范本3篇
- 2025至2030年中國(guó)鍵條式氣壓卷軸數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)魚(yú)盤成形機(jī)市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)立口爽脂質(zhì)體噴劑市場(chǎng)調(diào)查研究報(bào)告
- 《健康體檢知識(shí)》課件
- 2023年護(hù)理人員分層培訓(xùn)、考核計(jì)劃表
- 生產(chǎn)計(jì)劃主管述職報(bào)告
- GB/T 44769-2024能源互聯(lián)網(wǎng)數(shù)據(jù)平臺(tái)技術(shù)規(guī)范
- 2025年四川省新高考八省適應(yīng)性聯(lián)考模擬演練(二)地理試卷(含答案詳解)
- 【經(jīng)典文獻(xiàn)】《矛盾論》全文
- 部編版語(yǔ)文五年級(jí)下冊(cè) 第一單元 專項(xiàng)訓(xùn)練課外閱讀(含答案)
- 2024年寧夏回族自治區(qū)中考英語(yǔ)試題含解析
- 客人在酒店受傷免責(zé)承諾書(shū)范本
- 練字本方格模板
- 《老山界》第1第2課時(shí)示范公開(kāi)課教學(xué)PPT課件【統(tǒng)編人教版七年級(jí)語(yǔ)文下冊(cè)】
評(píng)論
0/150
提交評(píng)論