SQLServer令總結(jié)_第1頁
SQLServer令總結(jié)_第2頁
SQLServer令總結(jié)_第3頁
SQLServer令總結(jié)_第4頁
SQLServer令總結(jié)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、SQL SERVER命令總結(jié)查詢語句:SELECT ALL/DISTINCTTOP as 別名, as 別名FROM as 別名WHERE 條件表達式GROUP BY HAVINGORDER BYASC/DESC 應該注意:SELECT語句的順序:SELECT-FROM-WHERE-GROUP BY- HAVING ORDER BYSELECT INTO:生成新表格DISTINCT:唯一GROUP BY:分組匯總ORDER BY:排序,默認情況下為升序.ASC:升序DESC:降序AS:起別名HAVING:篩選分組匯總后的行SELECT TOP nFROM:表示查詢前N行SELECT TOP n

2、 PERCENT*FROM:表示按一定的百分比提取LIKE:模糊查詢,僅于CHAR或是VERCHAR以及通配符連用其他模糊查詢:IN:用于返回給定的值與列表中的值相匹配的行BETWEENAND: 在.之間查詢IS NOT NULL:查詢不為空的數(shù)據(jù)查詢中使用的常量:一般與 “+”連用.起到一個組合的目的注意1. SELECT后面的字段如果不包括聚合函數(shù),必須參加分組(GROUP BY2. GROUP BY后面不能使用聚合函數(shù)3. 查詢時,可以使用2個聚合函數(shù)使用INSERT插入數(shù)據(jù) 添加完整記錄: INSERT INTOVALUESVALUES:字段值列表(順序與建表的順序必須一樣) 添加不完

3、整記錄:INSERT INTO(字段名列表)VALUES特別的記住:字段名列表和字段值列表是一一對應的.即后面的字段值隨著前面的字段名的改變而改變.另一種方法:語法:INSERTSELECTFROM表名2)還可以將數(shù)據(jù)有選擇性的添加到另一個表中語法:INSERT INTO Sales(Stor_id)SELECT stor_id FROM StoresUPDATE語句更新一行:UPDATESETWHERE(范圍)更新多行:UPDATESET;-沒有WHERE更新一行和更新多行的區(qū)別在于有沒有WHERE的存在DELETE語句1:刪除一行:語法:DELETE FROMWHERE2:刪除多行:語法:

4、DELETE FROM刪除一行和刪除多行區(qū)別在于有沒有WHERE的存在3: TRUNCATE TABLE用于刪除表中所有行的命令.DROP刪除表與DELETE的區(qū)別在于:TRUNCATE不寫日值文件,無法恢復數(shù)據(jù)JOIN語句 聯(lián)接信息:Table_a AS table_alias_a JOIN table_b AS table_alias_bOntable_alias_a .=table_alias_b.-公共字段-A:內(nèi)聯(lián)接INNER JOIN:查詢兩個表中的公共部分B:外聯(lián)接左外聯(lián)接:left OUTER JOIN右外聯(lián)接:right OUTER JOIN完整聯(lián)接:FULL OUTER J

5、OINC:自聯(lián)接創(chuàng)建表的結(jié)構(gòu)1.名稱:表名 字段名 2.數(shù)據(jù)類型:系統(tǒng)定義的 用戶定義的: exec sp_addtype 用戶定義的數(shù)據(jù)類型名 , 數(shù)據(jù)類型(系統(tǒng)有的),not null(是否允許為空)3.大小: 4.約束:主鍵約束 PRIMARY KEY create table 表名(字段 數(shù)據(jù)類型 primary key / primary key(字段)唯一約束 UNIQUE create table 表名(字段 數(shù)據(jù)類型 unique)默認約束DEFAULT create table 表名(字段 數(shù)據(jù)類型 default 值/表達式)檢查約束 CHECK create table

6、表名(字段 數(shù)據(jù)類型 check (字段的表達式)外鍵約束 FOREIGN KEY create table表名(字段 數(shù)據(jù)類型 foreign key references(應用) 另一個表名(字段)更新表的結(jié)構(gòu)1.修改數(shù)據(jù)類型:alter table 表名 alter column 列名 數(shù)據(jù)類型2.添加一列: alter table 表名 add 列名 數(shù)據(jù)類型3.刪除一列: alter table 表名 drop column 列名4.增加約束:alter table 表名 add constraint 約束名 約束表達式主鍵約束: primary key(列名列表)唯一約束: uni

7、que(列名)默認約束: default 值for 列名檢查約束: check (列的檢查約束表達式)外鍵約束: foreign key(列名)references 表名(列名)刪除表的結(jié)構(gòu)drop table 表名子查詢Select 字段 from 表(select查詢)子查詢就是內(nèi)層查詢產(chǎn)生一個用于外層查詢的條件子查詢經(jīng)常使用的是條件運算符(,=,=,!=)子查詢與in聯(lián)合使用經(jīng)常用于判斷一列數(shù)據(jù)子查詢與exists聯(lián)合使用經(jīng)常用于判斷一張表的字段觸發(fā)器1。觸發(fā)器:是一種特殊存儲過程,它能對有觸發(fā)器的表中的數(shù)據(jù)進行保護.2。觸發(fā)器主要通過操作事件(insert,update,delete)

8、進行觸發(fā)而被自動執(zhí)行, 不能被調(diào)用,也不能傳遞參數(shù)3。a)觸發(fā)器根據(jù)數(shù)據(jù)修改語句可分為:insert觸發(fā)器,update觸發(fā)器,delete觸發(fā)器 b)根據(jù)引起觸發(fā)時刻可分為after觸發(fā)器,instead觸發(fā)器。 i.after觸發(fā)器是在執(zhí)行數(shù)據(jù)操作之后激發(fā) ii.instead of 觸發(fā)器是在執(zhí)行數(shù)據(jù)操作之前激發(fā)iii.一個表可以建立多個after觸發(fā)器,可以建立一個instead of觸發(fā)器觸發(fā)器中的inserted表和deleted表1。觸發(fā)器運行后在內(nèi)存中自動創(chuàng)建。2。他們用于對觸發(fā)器執(zhí)行后某些數(shù)據(jù)的測試條件3。用戶不能直接操作2個表4。delete觸發(fā)器將刪除的內(nèi)容放在delet

9、ed表中。 insert觸發(fā)器將添加的內(nèi)容存在inserted表中。 update觸發(fā)器將替換前的內(nèi)容放在deleted表中,將替換后的新內(nèi)容放在inserted表中。創(chuàng)建觸發(fā)器:CREATE TRIGGER 觸發(fā)器名 ON 表名/視圖名FOR 觸發(fā)器類型AST-SQL語句例如:/*如果被刪除的學生有考試成績的話,就不允許刪除這個學生*/create trigger t_stuon tbl_stufor deleteas begin declare id intselect id = stuid from deletedif exists(select * from tbl_cj where

10、stuid = id) begin print 學生有成績,不可刪除! rollback transaction endenddelete tbl_stu where stuid = 1007當刪除時,看消息框提示刪除觸發(fā)器:drop trigger 觸發(fā)器名例如:drop trigger t_stu修改觸發(fā)器:將創(chuàng)建觸發(fā)器的create關(guān)鍵字更換成alter存儲過程存儲過程:是存儲在sqlserver服務器中的一組預編譯過的t-sql語句,當?shù)谝淮握{(diào)用后,就駐留在內(nèi)存中,以后調(diào)用時不必再進行編譯。優(yōu)點在于一次編寫,多次調(diào)用。調(diào)用過程在服務器端執(zhí)行,執(zhí)行速度快。存儲過程分為:系統(tǒng)存儲過程,本地

11、存儲過程。存儲過程語法:create procedure 存儲過程名 參數(shù) 參數(shù)類型as 任意數(shù)量的T-SQL語句例如:create procedure stu_name stuname char(10) as select * from stu調(diào)用存儲過程 exec 存儲過程名參數(shù)例如:exec stu_name aa事務-顯示事務Create table aaa( Aid int , Aname char(10), Asex char(2) check(asex in (m,n)Set xact_abort onBegin transactionIntsert into aaa value

12、s(101,aa,n)Intsert into aaa values(102,bb,m)Intsert into aaa values(103,cc,n)Intsert into aaa values(104,dd,a)Intsert into aaa values(105,ee,m)If error = 0 CommitElse RollbackGoSelect * from aaaDrop table aaa-隱性事務Set xact_abort onSet implicit_transactions onCreate table aaa( Aid int , Aname char(10)

13、, Asex char(2) check(asex in (m,n)Intsert into aaa values(101,aa,n)Intsert into aaa values(102,bb,m)Intsert into aaa values(103,cc,n)Intsert into aaa values(104,dd,a)Intsert into aaa values(105,ee,m)Commit-默認提交事務Create table aaa( Aid int, Aname char (10), Asex char (2) check (asex in (m,n)Intsert in

14、to aaa values(101,aa,n)Intsert into aaa values(102,bb,m)Intsert into aaa values(103,cc,n)Intsert into aaa values(104,dd,a)Intsert into aaa values(105,ee,m)/*-Commit :提交事務中的一切操作,使得事務對數(shù)據(jù)庫的修改有效Rollback:回滾事務中的一切操作,使得事務對數(shù)據(jù)庫的操作無效- -事務控制語句1 設置隱性事務模式1) set implicit_transactions on啟動隱性事務模式2) set implicit_tra

15、nsactions off 關(guān)閉隱性事務模式2 設置自動回滾模式1) set xact_abort on 當事務中任意一條語句產(chǎn)生運行時錯誤,整個事物將中止,并整體回滾。2) set xact_abort off 當事務中語句產(chǎn)生運行時錯誤,將中止本條語句并且回滾本條語句。注意:set xact_abort 的設置是在執(zhí)行或運行時設置,而不是在分析時設置。-首次執(zhí)行下列語句都會自動啟動一個隱性事務:Alter table,create,delete,drop,fetch(讀取),grant(授予),insert,open,revoke(撤銷),select,truncate table,upd

16、ate事務中不可以使用的語句:1. 數(shù)據(jù)庫創(chuàng)建:create database2. 數(shù)據(jù)庫修改:alter database3. 數(shù)據(jù)庫刪除:drop database4. 數(shù)據(jù)庫備份:dump database,backup database5. 數(shù)據(jù)庫還原:load database,restore database6. 事務日志備份:dump transaction,backup log7. 事務日志還原:load transcation,restore log8. 配置:reconfigure9. 磁盤初始化:disk init10. 更新統(tǒng)計數(shù)據(jù):updata statistics1

17、1. 顯示或設置數(shù)據(jù)庫選項:sp_dboptin游標游標:允許用戶能夠從select語句查詢的結(jié)果集中,逐條訪問紀錄,可以根據(jù)用戶需要逐行的顯示、修改、刪除這些記錄的數(shù)據(jù)訪問處理機制。(游標就是數(shù)據(jù)表上的指針)使用游標的步驟:() 聲明游標declare 游標名 cursor for select 語句() 打開游標open 游標名) 當游標被打開時,指針會自動指在第一行;) 打開游標后,如果error表示游標打開操作成功;) 打開游標后,可以用cursor_rows返回紀錄行數(shù);() 處理數(shù)據(jù):a) 移動到當前行并讀取數(shù)據(jù)fetch游標名b) 刪除當前行數(shù)據(jù)delete from 表名視圖名

18、 where current of游標名c) 修改當前行數(shù)據(jù)update from表名視圖名 set 列名表達式 where current of 游標名() 關(guān)閉游標close 游標名() 釋放游標deallocate游標名游標類型:()static:靜態(tài),當用戶A察看表中記錄的同時,如果有用戶B修改表中記錄,A用戶將不會看到B修改的紀錄,只看A使用open打開表時所看到的紀錄。()Dynamic:動態(tài),當用戶A察看表中記錄的同時,如果有用戶B修改表中記錄,A用戶將看到B修改的紀錄,也就是表中記錄會不斷的刷新,但是會耗費較大的系統(tǒng)資源。()Forward Only:僅向前,游標僅能向前滾動。

19、()Scroll:滾動,游標可以前后左右滾動。select * from student/*打開游標,讀取數(shù)據(jù)*/declare c_stu cursor keyset for select * from studentopen c_stuif error = 0 print 學生總數(shù) + convert(char(5),cursor_rows)else print 讀取學生數(shù)出錯!close c_studeallocate c_stu-keyset:鍵集游標,當游標打開時,在tempdb數(shù)據(jù)庫中自動創(chuàng)建keyset表,用來記錄游標讀取的數(shù)據(jù)(僅紀錄表示字段)-/*使用游標處理數(shù)據(jù)*/-使用游

20、標,在表中逐行讀取select * from studentdeclare c_stu cursor for select * from studentopen c_stufetch next from c_stuwhile fetch_status = 0 fetch next from c_stuclose c_studeallcoate c_stu-fetch的使用-1.first:移動到第一行,并作為當前行-2.next:移動到下一行,并作為當前行-3.prior:移動到上一行,并作為當前行-4.last:移動到最后一行,并作為當前行-5.absolute n:n0時,從第一行開始,移

21、動n行,作為當前行,n0時,從當前行正數(shù)移動n行,作為當前行,n0時,從當前行倒數(shù)n行,作為當前行。-7.打開游標后第一次執(zhí)行fetch next可以得到表中第一條數(shù)據(jù),執(zhí)行fetch prior得不到任何數(shù)據(jù)-8.可用fetch_status返回執(zhí)行fetch操作后游標的狀態(tài):- 0表示成功讀取。- -1表示讀取操作超出結(jié)果集。- -2表示行在表中不存在。-修改數(shù)據(jù),將數(shù)據(jù)表中的第2行數(shù)據(jù)的姓名改成“張三”select * from studentdeclare c_stu cursor for select * from studentopen c_stufetch c_stufetch

22、c_stuupdate student set sname = 張三 where current of c_stuclose c_studeallocate c_stu-update student set sname = 張三 where current of c_stu-如果去掉where current of c_stu,不進行指定,將更新表中所有字段-刪除數(shù)據(jù),將表中第2行數(shù)據(jù)刪除select * from studentdeclare c_stu cursor for select * from studentopen c_stufetch c_stufetch c_studelete from student where current of c_stuclose c_studeallocate c_stu函數(shù)/*-自定義函數(shù)的種類: 1.標量函數(shù) 2.內(nèi)嵌表函數(shù) 3.多語句表值函數(shù)-標量函數(shù)基本語法create function 函數(shù)名returns 返回的參數(shù)類型 as begin 函數(shù)體 return 函數(shù)返回的標量值end-內(nèi)嵌表函數(shù)語法create function 函數(shù)名returns table as return (select查詢語句)-*/*-注意:函數(shù)是可以帶參數(shù)的,但是參數(shù)不可以是: 1.時間戳(timestamp) 2.

溫馨提示

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

評論

0/150

提交評論