經(jīng)典SQL語句集_第1頁
經(jīng)典SQL語句集_第2頁
經(jīng)典SQL語句集_第3頁
經(jīng)典SQL語句集_第4頁
經(jīng)典SQL語句集_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一、基礎(chǔ)一、基礎(chǔ)1 1、說明:、說明:CREATECREATE DATABASEDATABASE database-namedatabase-name2 2、說明:刪除數(shù)據(jù)庫、說明:刪除數(shù)據(jù)庫dropdrop databasedatabase dbnamedbname3 3、說明:備份、說明:備份 sqlsql serverserver- 創(chuàng)建創(chuàng)建 備份數(shù)據(jù)的備份數(shù)據(jù)的 devicedeviceUSEUSE mastermasterEXECEXEC sp_addumpdevicesp_addumpdevice disk,disk, testBack,testBack, c:mssql7back

2、upMyNwind_1.c:mssql7backupMyNwind_1.datdat- 開始開始 備份備份BACKUPBACKUP DATABASEDATABASE pubspubs TOTO testBacktestBack4 4、說明:創(chuàng)建新表、說明:創(chuàng)建新表createcreate tabletable tabname(col1tabname(col1 type1type1 notnot nullnull primaryprimary key,col2key,col2 type2type2notnot null,.null,.) )根據(jù)已有的表創(chuàng)建新表:根據(jù)已有的表創(chuàng)建新表:A A:cr

3、eatecreate tabletable tab_newtab_new likelike tab_oldtab_old ( (使用舊表創(chuàng)建新表使用舊表創(chuàng)建新表) )B B:createcreate tabletable tab_newtab_new asas selectselect col1,col2col1,col2 fromfrom tab_oldtab_old definitiondefinitiononlyonly5 5、說明:刪除新表、說明:刪除新表dropdrop tabletable tabnametabname6 6、說明:增加一個(gè)列、說明:增加一個(gè)列AlterAlter

4、tabletable tabnametabname addadd columncolumn colcol typetype注注:列增加后將不能刪除。DB2 中列加上后數(shù)據(jù)類型也不能改變,唯一能改變的是增加 varchar 類型的長度。7 7、說明:添加主鍵、說明:添加主鍵: AlterAlter tabletable tabnametabname addadd primaryprimary key(col)key(col)說明:刪除主鍵: AlterAlter tabletable tabnametabname dropdrop primaryprimary key(col)key(col)8

5、 8、說明:創(chuàng)建索引、說明:創(chuàng)建索引:createcreate uniqueunique indexindex idxnameidxname onon tabname(coltabname(col.).)刪除索引:dropdrop indexindex idxnameidxname注:索引是不可更改的,想更改必須刪除重新建。9 9、說明:創(chuàng)建視圖、說明:創(chuàng)建視圖:create view viewname as select statement刪除視圖刪除視圖:drop view viewname1010、說明:幾個(gè)簡單的基本的、說明:幾個(gè)簡單的基本的 sqlsql 語句語句選擇:選擇:sele

6、ct * from table1 where 范圍插入:插入:insert into table1(field1,field2) values(value1,value2)刪除:刪除:delete from table1 where 范圍更新更新:update table1 set field1=value1 where 范圍查找查找:select * from table1 where field1 like %value1% -like 的語法很精妙,查資料!排序排序:select * from table1 order by field1,field2 desc總數(shù)總數(shù):select c

7、ount as totalcount from table1求和求和:select sum(field1) as sumvalue from table1平均平均:select avg(field1) as avgvalue from table1最大最大:select max(field1) as maxvalue from table1最小最?。簊elect min(field1) as minvalue from table11111、說明:幾個(gè)高級查詢運(yùn)算詞、說明:幾個(gè)高級查詢運(yùn)算詞A A: UNIONUNION 運(yùn)算符運(yùn)算符UNION 運(yùn)算符通過組合其他兩個(gè)結(jié)果表(例如 TABLE1

8、 和 TABLE2)并消去表中任何重復(fù)行而派生出一個(gè)結(jié)果表。當(dāng) ALL 隨 UNION 一起使用時(shí)(即 UNION ALL),不消除重復(fù)行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自TABLE2。B B: EXCEPTEXCEPT 運(yùn)算符運(yùn)算符EXCEPTEXCEPT 運(yùn)算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表。當(dāng) ALL 隨 EXCEPT 一起使用時(shí) (EXCEPT ALL),不消除重復(fù)行。C C: INTERSECTINTERSECT 運(yùn)算符運(yùn)算符INTERSECTINTERSECT 運(yùn)算符通過只包括 TABLE1

9、和 TABLE2 中都有的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表。當(dāng) ALLALL 隨 INTERSECT 一起使用時(shí) (INTERSECT ALL),不消除重復(fù)行。注:注:使用運(yùn)算詞的幾個(gè)查詢結(jié)果行必須是一致的。1212、說明:使用外連接、說明:使用外連接A、leftleft (outerouter) joinjoin:左外連接 (左連接) : 結(jié)果集幾包括連接表的匹配行, 也包括左連接表的所有行。SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.cB B:rightright (outerou

10、ter) join:join:右外連接(右連接):結(jié)果集既包括連接表的匹配連接行,也包括右連接表的所有行。C C:fullfull/cross/cross (outerouter) joinjoin:全外連接:不僅包括符號連接表的匹配行,還包括兩個(gè)連接表中的所有記錄。1212、分組分組:Group:Group by:by:一張表,一旦分組 完成后,查詢后只能得到組相關(guān)的信息。組相關(guān)的信息:組相關(guān)的信息:(統(tǒng)計(jì)信息) count,sum,max,min,avg分組的標(biāo)準(zhǔn)分組的標(biāo)準(zhǔn)) )在在 SQLServerSQLServer 中分組時(shí)中分組時(shí):不能以不能以 texttext, ,ntextnt

11、ext, ,imageimage 類型的字段作為分組依類型的字段作為分組依據(jù)據(jù)在在 selecteselecte 統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)函數(shù)中的字段,不能和中的字段,不能和普通普通的字段放在一起;的字段放在一起;1 13 3、對數(shù)據(jù)庫進(jìn)行操作:對數(shù)據(jù)庫進(jìn)行操作:分離數(shù)據(jù)庫分離數(shù)據(jù)庫: sp_detach_db;sp_detach_db; 附加數(shù)據(jù)庫附加數(shù)據(jù)庫:sp_attach_dbsp_attach_db 后接表明,附加需要完整的路徑名1414. .如何修改數(shù)據(jù)庫的名稱如何修改數(shù)據(jù)庫的名稱: :sp_renamedb old_name, new_name二、提升二、提升1 1、說明:復(fù)制表、說明:復(fù)制

12、表( (只復(fù)制結(jié)構(gòu)只復(fù)制結(jié)構(gòu), ,源表名:源表名:a a 新表名:新表名:b)b) (Access(Access 可用可用) )法一:法一:select * into b from a where 11(僅用于 SQlServer)法二:法二:select top 0 * into b from a2 2、說明:拷貝表、說明:拷貝表( (拷貝數(shù)據(jù)拷貝數(shù)據(jù), ,源表名:源表名:a a 目標(biāo)表名:目標(biāo)表名:b)b) (Access(Access 可用可用) )insert into b(a, b, c) select d,e,f from b;3 3、說明:跨數(shù)據(jù)庫之間表的拷貝、說明:跨數(shù)據(jù)庫之間

13、表的拷貝( (具體數(shù)據(jù)使用絕對路徑具體數(shù)據(jù)使用絕對路徑) ) (Access(Access 可用可用) )insert into b(a, b, c) select d,e,f from b in 具體數(shù)據(jù)庫 where 條件例子:.from b in &Server.MapPath(.)&data.mdb & where.4 4、說明:子查詢、說明:子查詢( (表名表名 1 1:a a 表名表名 2 2:b)b)select a,b,c from a where a IN (select d from b ) 或者: select a,b,cfrom a where

14、a IN (1,2,3)5 5、說明:顯示文章、提交人和最后回復(fù)時(shí)間、說明:顯示文章、提交人和最后回復(fù)時(shí)間select a.title,a.username,b.adddate from table a,(select max(adddate)adddate from table where table.title=a.title) b6 6、說明:外連接查詢、說明:外連接查詢( (表名表名 1 1:a a 表名表名 2 2:b)b)select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c7 7、說明:在線視

15、圖查詢、說明:在線視圖查詢( (表名表名 1 1:a a ) )select * from (SELECT a,b,c FROM a) T where t.a 1;8 8、說明說明:betweenbetween 的用法的用法,between,between 限制查詢數(shù)據(jù)范圍時(shí)包括了邊界值限制查詢數(shù)據(jù)范圍時(shí)包括了邊界值,not,not betbetweenween 不包括不包括select * from table1 where time between time1 and time2select a,b,c, from table1 where a not between 數(shù)值 1 and 數(shù)

16、值 29 9、說明:、說明:inin 的使用方法的使用方法select * from table1 where a not in (值 1,值 2,值 4,值6)1010、說明:兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒有的信息、說明:兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒有的信息delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )1111、說明:四表聯(lián)查問題:、說明:四表聯(lián)查問題:select * from a left inner join b on a.a=b.

17、b right inner join c on a.a=c.c inner join d on a.a=d.d where .1212、說明:日程安排提前五分鐘提醒、說明:日程安排提前五分鐘提醒SQL: select * from 日程安排 where datediff(minute,f 開始時(shí)間,getdate()513、說明:一條、說明:一條 sql 語句搞定數(shù)據(jù)庫分頁語句搞定數(shù)據(jù)庫分頁select top 10 b.* from (select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主鍵字段 = a.主鍵字

18、段 order by a.排序字段具體實(shí)現(xiàn):具體實(shí)現(xiàn):關(guān)于數(shù)據(jù)庫分頁:declare start int,end intsqlnvarchar(600)set sql=select top+str(end-start+1)+from T where rid notin(select top+str(str-1)+Rid from T where Rid-1)exec sp_executesql sql注意:在注意:在 toptop 后不能直接跟一個(gè)變量,所以在實(shí)際應(yīng)用中只有這樣的進(jìn)行特殊后不能直接跟一個(gè)變量,所以在實(shí)際應(yīng)用中只有這樣的進(jìn)行特殊的處理的處理。RidRid 為一個(gè)標(biāo)識列為一個(gè)標(biāo)識列

19、,如果如果 toptop 后還有具體的字段后還有具體的字段,這樣做是非常有好處這樣做是非常有好處的。因?yàn)檫@樣可以避免的。因?yàn)檫@樣可以避免 toptop 的字段如果是邏輯索引的,查詢的結(jié)果后實(shí)際表中的字段如果是邏輯索引的,查詢的結(jié)果后實(shí)際表中的不一致(的不一致(邏輯索引中的數(shù)據(jù)有可能和數(shù)據(jù)表中的不一致,而查詢時(shí)如果處在邏輯索引中的數(shù)據(jù)有可能和數(shù)據(jù)表中的不一致,而查詢時(shí)如果處在索引則首先查詢索引索引則首先查詢索引)1414、說明:前、說明:前 1010 條記錄條記錄select top 10 * form table1 where 范圍1515、說明說明:選擇在每一組選擇在每一組 b b 值相同的

20、數(shù)據(jù)中對應(yīng)的值相同的數(shù)據(jù)中對應(yīng)的 a a 最大的記錄的所有信息最大的記錄的所有信息( (類類似這樣的用法可以用于論壇每月排行榜似這樣的用法可以用于論壇每月排行榜, ,每月熱銷產(chǎn)品分析每月熱銷產(chǎn)品分析, ,按科目成績排名按科目成績排名, ,等等等等.).)select a,b,c from tablename ta where a=(select max(a) from tablenametb where tb.b=ta.b)1616、說明說明:包括所有在包括所有在 TableATableA 中但不在中但不在 TableBTableB 和和 TableCTableC 中的行并消除所有中的行并消除

21、所有重復(fù)行而派生出一個(gè)結(jié)果表重復(fù)行而派生出一個(gè)結(jié)果表(select a from tableA ) except (select a from tableB) except (selecta from tableC)1717、說明:隨機(jī)取出、說明:隨機(jī)取出 1010 條數(shù)據(jù)條數(shù)據(jù)select top 10 * from tablename order by newid()newid()1818、說明:隨機(jī)選擇記錄、說明:隨機(jī)選擇記錄select newid()1919、說明:刪除重復(fù)記錄、說明:刪除重復(fù)記錄1),1),delete from tablename where id not in

22、(select max(id) from tablename group by col1,col2,.)2)2),select distinct * into temp from tablenamedelete from tablenameinsert into tablename select * from temp評價(jià):評價(jià): 這種操作牽連大量的數(shù)據(jù)的移動(dòng),這種做法不適合大容量但數(shù)據(jù)操作這種操作牽連大量的數(shù)據(jù)的移動(dòng),這種做法不適合大容量但數(shù)據(jù)操作3),3),例如例如:在一個(gè)外部表中導(dǎo)入數(shù)據(jù)在一個(gè)外部表中導(dǎo)入數(shù)據(jù),由于某些原因第一次只導(dǎo)入了一部分由于某些原因第一次只導(dǎo)入了一部分,但但很難判斷

23、具體位置,這樣只有在下一次全部導(dǎo)入,這樣也就產(chǎn)生好多重復(fù)的字很難判斷具體位置,這樣只有在下一次全部導(dǎo)入,這樣也就產(chǎn)生好多重復(fù)的字段,怎樣刪除重復(fù)字段段,怎樣刪除重復(fù)字段alter table tablename-添加一個(gè)自增列addcolumn_b int identity(1,1)delete from tablename where column_b not in(select max(column_b)from tablename group by column1,column2,.)alter table tablename drop column column_b2020、說明:列出

24、數(shù)據(jù)庫里所有的表名、說明:列出數(shù)據(jù)庫里所有的表名select name from sysobjects where type=U / U 代表用戶2121、說明:列出表里的所有的、說明:列出表里的所有的列名列名select name from syscolumns where id=object_id(TableName)2222、說明說明:列示列示 typetype、vendervender、pcspcs 字段字段,以以 typetype 字段排列字段排列,casecase 可以方便地可以方便地實(shí)現(xiàn)多重選擇,類似實(shí)現(xiàn)多重選擇,類似 selectselect 中的中的 casecase。sel

25、ect type,sum(case vender when A then pcs else 0 end),sum(case vender when C then pcs else 0 end),sum(case vender when B then pcselse 0 end) FROM tablename group by type顯示結(jié)果:顯示結(jié)果:typetype vendervender pcspcs電腦 A 1電腦 A 1光盤 B 2光盤 A 2手機(jī) B 3手機(jī) C 32323、說明:初始化表、說明:初始化表 table1table1TRUNCATE TABLE table12424

26、、說明:選擇從、說明:選擇從 1010 到到 1515 的記錄的記錄select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc三、技巧三、技巧1 1、1=11=1,1=21=2 的使用,在的使用,在 SQLSQL 語句組合時(shí)用的較多語句組合時(shí)用的較多“wherewhere 1=11=1” 是表示選擇全部是表示選擇全部“wherewhere 1=21=2”全部不選,全部不選,如:if strWhere !=beginset strSQL = select count(*) a

27、s Total from + tblName + where + strWhereendelsebeginset strSQL = select count(*) as Total from + tblName + end我們可以直接寫成我們可以直接寫成錯(cuò)誤!未找到目錄項(xiàng)。setset strSQLstrSQL = = selectselect count(*)count(*) asas TotalTotal fromfrom + + tblNametblName + + wherwhere e 1=11=1 安定安定 + strWherestrWhere 2 2、收縮數(shù)據(jù)庫、收縮數(shù)據(jù)庫-重建

28、索引DBCC REINDEXDBCC INDEXDEFRAG-收縮數(shù)據(jù)和日志DBCC SHRINKDBDBCC SHRINKFILE3 3、壓縮數(shù)據(jù)庫、壓縮數(shù)據(jù)庫dbcc shrinkdatabase(dbname)4 4、轉(zhuǎn)移數(shù)據(jù)庫給新用戶以已存在用戶權(quán)限、轉(zhuǎn)移數(shù)據(jù)庫給新用戶以已存在用戶權(quán)限exec sp_change_users_login update_one,newname,oldnamego5 5、檢查備份集、檢查備份集RESTORE VERIFYONLY from disk=E:dvbbs.bak6 6、修復(fù)數(shù)據(jù)庫、修復(fù)數(shù)據(jù)庫ALTER DATABASE dvbbs SET SIN

29、GLE_USERGODBCC CHECKDB(dvbbs,repair_allow_data_loss) WITH TABLOCKGOALTER DATABASE dvbbs SET MULTI_USERGO7 7、日志清除、日志清除SET NOCOUNT ONDECLARE LogicalFileName sysname,MaxMinutes INT,NewSize INTUSE tablename - 要操作的數(shù)據(jù)庫名SELECTLogicalFileName = tablename_log, - 日志文件名MaxMinutes = 10, - Limit on time allowed

30、to wrap log.NewSize = 1- 你想設(shè)定的日志文件的大小(M)Setup / initializeDECLARE OriginalSize intSELECT OriginalSize = sizeFROM sysfilesWHERE name = LogicalFileNameSELECT Original Size of + db_name() + LOG is +CONVERT(VARCHAR(30),OriginalSize) + 8K pages or +CONVERT(VARCHAR(30),(OriginalSize*8/1024) + MBFROM sysfi

31、lesWHERE name = LogicalFileNameCREATE TABLE DummyTrans(DummyColumn char (8000) not null)DECLARE CounterINT,StartTime DATETIME,TruncLogVARCHAR(255)SELECT StartTime = GETDATE(),TruncLog = BACKUP LOG + db_name() + WITH TRUNCATE_ONLYDBCC SHRINKFILE (LogicalFileName, NewSize)EXEC (TruncLog)- Wrap the log

32、 if necessary.WHILE MaxMinutes DATEDIFF (mi, StartTime, GETDATE() - time hasnot expiredAND OriginalSize = (SELECT size FROM sysfiles WHERE name = LogicalFileName)AND (OriginalSize * 8 /1024) NewSizeBEGIN - Outer loop.SELECT Counter = 0WHILE(Counter OriginalSize / 16) AND (Counter 50000)BEGIN - updat

33、eINSERT DummyTrans VALUES (Fill Log) DELETE DummyTransSELECT Counter = Counter + 1ENDEXEC (TruncLog)ENDSELECT Final Size of + db_name() + LOG is +CONVERT(VARCHAR(30),size) + 8K pages or +CONVERT(VARCHAR(30),(size*8/1024) + MBFROM sysfilesWHERE name = LogicalFileNameDROP TABLE DummyTransSET NOCOUNT O

34、FF8 8、說明:更改某個(gè)表、說明:更改某個(gè)表exec sp_changeobjectowner tablename,dbo9 9、存儲更改全部表、存儲更改全部表CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatchOldOwner as NVARCHAR(128),NewOwner as NVARCHAR(128)ASDECLARE Nameas NVARCHAR(128)DECLARE Owneras NVARCHAR(128)DECLARE OwnerNameas NVARCHAR(128)DECLARE curObject CURSOR FOR

35、select Name= name,Owner= user_name(uid)from sysobjectswhere user_name(uid)=OldOwnerorder by nameOPENcurObjectFETCH NEXT FROM curObject INTO Name, OwnerWHILE(FETCH_STATUS=0)BEGINif Owner=OldOwnerbeginset OwnerName = OldOwner + . + rtrim(Name)exec sp_changeobjectowner OwnerName, NewOwnerend- select na

36、me,NewOwner,OldOwnerFETCH NEXT FROM curObject INTO Name, OwnerENDclose curObjectdeallocate curObjectGO1010、SQLSQL SERVERSERVER 中直接循環(huán)寫入數(shù)據(jù)中直接循環(huán)寫入數(shù)據(jù)declare i intset i=1while i30begininsert into test (userid) values(i)set i=i+1end案例案例:有如下表有如下表,要求就裱中所有沒有及格的成績要求就裱中所有沒有及格的成績,在每次增長在每次增長 0.10.1 的基礎(chǔ)上的基礎(chǔ)上,使他們剛

37、好及格使他們剛好及格: :NamescoreZhangshan80Lishi59Wangwu50Songquan69while(selectwhile(select minmin(score)(score) fromfrom tb_table)tb_table)6060) )beginbeginupdateupdate tb_tabletb_table setset scorescore = =score*score*1.011.01wherewhere scorescore606060breakbreakelseelsecontinuecontinueendend數(shù)據(jù)開發(fā)數(shù)據(jù)開發(fā)- -經(jīng)典經(jīng)

38、典1.1.按姓氏筆畫排序按姓氏筆畫排序: :Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as /從少到多2.2.數(shù)據(jù)庫加密數(shù)據(jù)庫加密: :select encrypt(原始密碼)select pwdencrypt(原始密碼)select pwdcompare(原始密碼,加密后密碼) = 1-相同;否則不相同 encrypt(原始密碼)select pwdencrypt(原始密碼)select pwdcompare(原始密碼,加密后密碼) = 1-相同;否則不相同3.3.取回表中字段取回表

39、中字段: :declare list varchar(1000),sql nvarchar(1000)select list=list+,+ from sysobjects a,syscolumns b where a.id=b.id and =表 Aset sql=select +right(list,len(list)-1)+ from 表 Aexec (sql)4.4.查看硬盤分區(qū)查看硬盤分區(qū): :EXECEXEC master.xp_fixeddrivesmaster.xp_fixeddrives5.5.比較比較 A,BA,B 表是否相等表是否相等: :if (

40、select checksum_agg(binary_checksum(*) from A)=(select checksum_agg(binary_checksum(*) from B)print 相等elseprint 不相等6.6.殺掉所有的事件探察器進(jìn)程殺掉所有的事件探察器進(jìn)程: :7.記錄搜索記錄搜索:開頭到開頭到 N 條記錄條記錄Select Top N * From 表-N 到到 M 條記錄條記錄(要有主索引要有主索引 ID)Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order byIDDesc-N

41、到結(jié)尾記錄到結(jié)尾記錄Select Top N * From 表 Order by ID Desc案例案例例如例如 1 1: 一張表有一萬多條記錄一張表有一萬多條記錄, 表的第一個(gè)字段表的第一個(gè)字段 RecIDRecID 是自增長字段是自增長字段, 寫一個(gè)寫一個(gè) SQLSQL 語句語句,找出表的第找出表的第 3131 到第到第 4040 個(gè)記錄。個(gè)記錄。select top 10 recid from A where recid notin(select top 30 recid from A)分析:如果這樣寫會(huì)產(chǎn)生某些問題,如果 recid 在表中存在邏輯索引。select top 10 re

42、cid from A where是從索引中查找,而后面的 select top 30 recidfrom A 則在數(shù)據(jù)表中查找,這樣由于索引中的順序有可能和數(shù)據(jù)表中的不一致,這樣就導(dǎo)致查詢到的不是本來的欲得到的數(shù)據(jù)。解決方案解決方案1 1, 用用 orderorder byby select top 30 recid from A order by ricid 如果該字段不是自如果該字段不是自增長,就會(huì)出現(xiàn)問題增長,就會(huì)出現(xiàn)問題2, 在那個(gè)子查詢中也加條件:在那個(gè)子查詢中也加條件:select top 30 recid fromAwhere recid-1例例 2:查詢表中的最后以條記錄,并不

43、知道這個(gè)表共有多少數(shù)據(jù):查詢表中的最后以條記錄,并不知道這個(gè)表共有多少數(shù)據(jù),以及表結(jié)構(gòu)。以及表結(jié)構(gòu)。set s = select top 1 * from Twhere pid not in (select top + str(count-1) + pidfromT)print sexecsp_executesqls9 9:獲取當(dāng)前數(shù)據(jù)庫中的所有用戶表:獲取當(dāng)前數(shù)據(jù)庫中的所有用戶表select Name from sysobjects where xtype=u and status=01010:獲取某一個(gè)表的所有字段:獲取某一個(gè)表的所有字段select name from syscolumn

44、s where id=object_id(表名)select name from syscolumns where id in (select id from sysobjects where type = u and name = 表名)兩種方式的效果相同1111:查看與某一個(gè)表相關(guān)的視圖、存儲過程、函數(shù):查看與某一個(gè)表相關(guān)的視圖、存儲過程、函數(shù)select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like %表名%1212:查看當(dāng)前數(shù)據(jù)庫中所有存儲過程:查看當(dāng)前數(shù)據(jù)庫中所有存儲過程select na

45、me as 存儲過程名稱 from sysobjects where xtype=P1313:查詢用戶創(chuàng)建的所有數(shù)據(jù)庫:查詢用戶創(chuàng)建的所有數(shù)據(jù)庫select * from master.sysdatabases D where sid not in(select sid frommaster.syslogins where name=sa)或者select dbid, name AS DB_NAME from master.sysdatabases where sid 0 x011414:查詢某一個(gè)表的字段和數(shù)據(jù)類型:查詢某一個(gè)表的字段和數(shù)據(jù)類型select column_name,data_

46、type from information_schema.columnswhere table_name = 表名1515:不同服務(wù)器數(shù)據(jù)庫之間的數(shù)據(jù)操作:不同服務(wù)器數(shù)據(jù)庫之間的數(shù)據(jù)操作-創(chuàng)建鏈接服務(wù)器創(chuàng)建鏈接服務(wù)器exec sp_addlinkedserverITSV , , SQLOLEDB , 遠(yuǎn)程服務(wù)器名或 ip 地址 exec sp_addlinkedsrvloginITSV , false ,null, 用戶名 , 密碼 -查詢示例-導(dǎo)入示例-以后不再使用時(shí)刪除鏈接服務(wù)器以后不再使用時(shí)刪除鏈接服務(wù)器exec sp_dropserverITSV , droplogins -連接遠(yuǎn)程連

47、接遠(yuǎn)程/ /局域網(wǎng)數(shù)據(jù)局域網(wǎng)數(shù)據(jù)(openrowset/openquery/opendatasource)-1、openrowset-查詢示例-生成本地表-把本地表導(dǎo)入遠(yuǎn)程表select *from 本地表-更新本地表update bset b.列 A=a.列 Aon a.column1=b.column1-openquery 用法需要?jiǎng)?chuàng)建一個(gè)連接-首先創(chuàng)建一個(gè)連接創(chuàng)建鏈接服務(wù)器exec sp_addlinkedserverITSV , , SQLOLEDB , 遠(yuǎn)程服務(wù)器名或 ip 地址 -查詢select *-把本地表導(dǎo)入遠(yuǎn)程表select * from 本地表-更新本地表update b

48、set b.列 B=a.列 Binner join 本地表 b on a.列 A=b.列 A-3、opendatasource/openrowsetSELECT*-把本地表導(dǎo)入遠(yuǎn)程表select * from 本地表SQL Server 基本函數(shù)SQL Server 基本函數(shù)1.1.字符串函數(shù)字符串函數(shù)長度與分析用1,1,datalengthdatalength(Char_expr) 返回字符串包含字符數(shù),但不包含后面的空格2,2,substringsubstring(expression,start,length) 取子串,字符串的下標(biāo)是從“1”,start 為起始位置,length 為字符

49、串長度,實(shí)際應(yīng)用中以 len(expression)取得其長度3,3,rightright(char_expr,int_expr) 返回字符串右邊第 int_expr 個(gè)字符,還用 leleftft 于之相反4,isnull4,isnull( (check_ _expression, ,replacement_value) )如果 check_expression 為空,則返回 replacement_value 的值,不為空,就返回 check_expression字符操作類5,5,S Sp_addtypep_addtype 自定義數(shù)據(jù)類型例如:EXEC sp_addtype birthda

50、y, datetime, NULL6,6,setset nocountnocount on|offon|off 使返回的結(jié)果中不包含有關(guān)受 Transact-SQL 語句影響的行數(shù)的信息。 如果存儲過程中包含的一些語句并不返回許多實(shí)際的數(shù)據(jù), 則該設(shè)置由于大量減少了網(wǎng)絡(luò)流量,因此可顯著提高性能。SET NOCOUNT 設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置,而不是在分析時(shí)設(shè)置。SET NOCOUNT 為 ON 時(shí),不返回計(jì)數(shù)(表示受 Transact-SQL 語句影響的行數(shù))。SET NOCOUNT 為 OFF 時(shí),返回計(jì)數(shù)常識常識在在 SQLSQL 查詢中:查詢中:fromfrom 后最多可以跟多少張表或

51、視圖:256256在在 SQLSQL 語句中出現(xiàn)語句中出現(xiàn) OrderOrder byby, ,查詢時(shí),查詢時(shí),先排序,后取先排序,后取在在 SQLSQL 中中, 一個(gè)字段的最大容量是一個(gè)字段的最大容量是 80008000, 而對于而對于 nvarchar(4000)nvarchar(4000), ,由于由于 nvarcharnvarchar 是是 UnicodUnicode e碼。碼。SQLServer2000SQLServer2000 同步復(fù)制技術(shù)實(shí)現(xiàn)步驟同步復(fù)制技術(shù)實(shí)現(xiàn)步驟一、 預(yù)備工作1.發(fā)布服務(wù)器,訂閱服務(wù)器都創(chuàng)建一個(gè)同名的 windows 用戶,并設(shè)置相同的密碼,做為發(fā)布快照文件夾

52、的有效訪問用戶-管理工具-計(jì)算機(jī)管理-用戶和組-右鍵用戶-新建用戶-建立一個(gè)隸屬于 administrator 組的登陸 windows 的用戶(SynUser)2.在發(fā)布服務(wù)器上,新建一個(gè)共享目錄,做為發(fā)布的快照文件的存放目錄,操作:我的電腦-D: 新建一個(gè)目錄,名為: PUB-右鍵這個(gè)新建的目錄-屬性-共享-選擇共享該文件夾-通過權(quán)限按紐來設(shè)置具體的用戶權(quán)限,保證第一步中創(chuàng)建的用戶(SynUser) 具有對該文件夾的所有權(quán)限-確定3.設(shè)置 SQL 代理(SQLSERVERAGENT)服務(wù)的啟動(dòng)用戶(發(fā)布/訂閱服務(wù)器均做此設(shè)置)開始-程序-管理工具-服務(wù)-右鍵 SQLSERVERAGENT-

53、屬性-登陸-選擇此賬戶-輸入或者選擇第一步中創(chuàng)建的 windows 登錄用戶名(SynUser)-密碼中輸入該用戶的密碼4.設(shè)置 SQL Server 身份驗(yàn)證模式,解決連接時(shí)的權(quán)限問題(發(fā)布/訂閱服務(wù)器均做此設(shè)置)企業(yè)管理器-右鍵 SQL 實(shí)例-屬性-安全性-身份驗(yàn)證-選擇SQL Server 和 Windows-確定5.在發(fā)布服務(wù)器和訂閱服務(wù)器上互相注冊企業(yè)管理器-右鍵 SQL Server 組-新建 SQL Server 注冊.-下一步-可用的服務(wù)器中,輸入你要注冊的遠(yuǎn)程服務(wù)器名 -添加-下一步-連接使用,選擇第二個(gè)SQL Server 身份驗(yàn)證-下一步-輸入用戶名和密碼(SynUser

54、)-下一步-選擇 SQL Server 組,也可以創(chuàng)建一個(gè)新組-下一步-完成6.對于只能用 IP,不能用計(jì)算機(jī)名的,為其注冊服務(wù)器別名(此步在實(shí)施中沒用到)(在連接端配置,比如,在訂閱服務(wù)器上配置的話,服務(wù)器名稱中輸入的是發(fā)布服務(wù)器的 IP)開始-程序-Microsoft SQL Server-客戶端網(wǎng)絡(luò)實(shí)用工具-別名-添加-網(wǎng)絡(luò)庫選擇tcp/ip-服務(wù)器別名輸入 SQL 服務(wù)器名-連接參數(shù)-服務(wù)器名稱中輸入 SQL 服務(wù)器 ip 地址-如果你修改了 SQL 的端口,取消選擇動(dòng)態(tài)決定端口,并輸入對應(yīng)的端口號二、 正式配置1、配置發(fā)布服務(wù)器打開企業(yè)管理器,在發(fā)布服務(wù)器(B、C、D)上執(zhí)行以下步驟:(1) 從工具下拉菜單的復(fù)制子菜單中選擇配置發(fā)布、 訂閱服務(wù)器和分發(fā)出現(xiàn)配置發(fā)布和分發(fā)向?qū)?2) 下一步 選擇分發(fā)服務(wù)器 可以選擇把發(fā)布服務(wù)器自己作為分發(fā)服務(wù)器或者其他 sql的服務(wù)器(選擇自己)(3) 下一步 設(shè)置快照文件夾采用默認(rèn)servernamePub(4) 下一步 自定義配置可以選擇:是,讓我設(shè)置分發(fā)數(shù)據(jù)庫屬性啟用發(fā)布服務(wù)器或設(shè)置發(fā)布設(shè)置否,使用下列默認(rèn)設(shè)置(推薦)(5) 下一步 設(shè)置分發(fā)數(shù)據(jù)庫名稱和位置 采用默認(rèn)值(6) 下一步 啟用發(fā)布服務(wù)器 選擇作為發(fā)布的服務(wù)器(7) 下一步 選擇

溫馨提示

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

評論

0/150

提交評論