




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精品文檔創建數據庫創建之前判斷該數據庫是否存在if exists (select * from sysdatabases where n ame=databaseName)drop database databaseNamegoCreate DATABASE database-name刪除數據庫drop database dbn ame備份sql server-創建備份數據的deviceUSE masterEXEC sp_addumpdevice disk, testBack,c:mssql7backupMyNw in d_1.dat-開始備份BACKUP DATABASE pubs TO t
2、estBack創建新表create table tab name(col1 type1 not nu II primary key,col2 type2not null,.)根據已有的表創建新表:A:gouse原數據庫名goselect * into目的數據庫名.dbo.目的表名from原表名(使用舊表創建新表)B:create table tab_new as select col1,col2from tab_old definition on ly創建序列create seque nee SIMON_SEQUENCEmi nvalue 1 -最小值maxvalue 999999999999
3、999999999999999 -最大值start with 1 -開始值in creme nt by 1 -每次加幾cache 20;刪除新表drop table tab name增加一個列Alter table tab name add coin ame coltype刪除一個列Alter table tab name drop colu mn coin ame添加主鍵Alter table tab name add primary key(col)說明:刪除主鍵:Alter table tab name drop primary key(col)創建索引create unique ind
4、ex idxname on tabname(col。)1歡迎下載精品文檔刪除索弓丨:drop in dex idx name on tab name注:索引是不可更改的,想更改必須刪除重新建。 創建視圖create view view name as select stateme ntsql=update數據表set字段名=字段值where條件表達式” sql=update數據表set字段1 =值1,字段2=值2 .字段門門=值n where條件表達式”(3)刪除數據記錄:sql=delete from數據表where條件表達式” sql=delete from數據表”(將數據表所有記錄刪除)
5、(4)添加數據記錄:數據表(字段1,字段2,字段3)values (值1,值2,目標數據表select * from源數據表”(把源數據表的記錄添加到目標數據表)(5)數據記錄統計函數:AVG(字段名)得出一個表格欄平均值COUNT(*;字段名)對數據行數的統計或對某一欄有值的數據行數統計MAX(字段名)取得一個表格欄最大的值MIN(字段名)取得一個表格欄最小的值SUM(字段名)把數據欄的值相加引用以上函數的方法:sql=select sum(字段名)as別名from數據表where條件表達式” set rs=conn. excute(sql)用rs(別名)獲取統計的值,其它函數運用同上。查詢
6、去除重復值:select disti net * from table1(5)數據表的建立和刪除:CREATE TABLE數據表名稱(字段1類型1(長度),字段2類型2(長 度)幾個高級查詢運算詞A:UNION運算符2歡迎下載簡單基本的sql語句(1)數據記錄篩選:sql=select * from數據表wheredescsql=select * from數據表where段名descsql=select top 10 * from數據表descsql=select * from數據表wheresql=select * from數據表where(2)更新數據記錄:字段名=字段值order by字
7、段名字段名like %字段值% order by字where字段名order by字段名字段名in (值1,值2,值3)字段名between值1 and值2sql=i nsert into值3)sql=i nsert into刪除視圖:drop view view name精品文檔UNION運算符通過組合其他兩個結果表(例如TABLE1和TABLE2)并消去表中任何重復行而派生出一個結果表。當ALL隨UNION起使用時(即UNIONALL),不消除重復行。兩種情況下,派生表的每一行不是來自TABLE1就是來自TABLE2。B:EXCEPT運算符EXCEPT運算符通過包括所有在TABLE1中但不
8、在TABLE2中的行并消除所有重復行而派生出一個結果表。當ALL隨EXCEPT一起使用時(EXCEPT ALL),不消除重復行。C:INTERSECT運算符INTERSECT運算符通過只包括TABLE1和TABLE2中都有的行并消除所有重復行而派生出一個結果表。當ALL隨INTERSECT起使用時(INTERSECT ALL),不消除重復行。注:使用運算詞的幾個查詢結果行必須是一致的。使用外連接A、left outer join左外連接(左連接):結果集既包括連接表的匹配行,也包括左連接表的所 有行。SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a
9、 LEFT OUT JOIN b ONa.a = b.cB:right outer join:右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。C:full outer join:全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。編輯本段判斷對象是否存在 判斷數據庫是否存在if exists (select* from sysdatabases wherename=數據庫名)dropdatabase數據庫名判斷表是否存在if not exists (select * from sysobjects where name=表名andxtype=U)be
10、gin-這里創建表end判斷存儲過程是否存在if exists (select* from sysobjects whereid = object_id(N存儲過程名)and OBJECTPROPERTY(id, NIsProcedure) = 1)dropprocedure存儲過程名判斷臨時表是否存在if object_id(tempdb.#臨時表名)isnot nulldroptable#臨時表名判斷視圖是否存在-SQL Server 2000IF EXISTS (SELECT* FROM sysviews WHEREobject_id = dbo.視圖名-SQL Server 20053
11、歡迎下載精品文檔IF EXISTS (SELECT* FROM sys.views WHEREobject_id = dbo.判斷函數是否存在if exists (select* from dbo.sysobjects whereid = object_id(Ndbo.函數名)and xtype in(NFN, NlF, NTF)dropfunctiondbo.函數名獲取創建信息SELECT name,id,crdate FROM sysobjects where xtype=U/*DEFAULT約束F = FOREIGNKEY約束L =日志FN =標量函數IF =內嵌表函數P =存儲過程PK
12、 = PRIMARYKEY勺束(類型是K)RF =復制篩選存儲過程S =系統表TF =表函數TR =觸發器U =用戶表UQ = UNIQUE約束(類型是K)V =視圖X =擴 展存儲過程*/判斷列是否存在if exists(select* from syscolumns whereid=object_id(表名)andname=歹U名)altertable表名dropcolumn歹U名判斷列是否自增列if colu mn property(object_id(table),col,IsIde ntity)=1print 自增列elseprint 不是自增列SELECT* FROM sys.co
13、lumns WHEREobject_id=OBJECT_ID(表名)AND is_ide ntity=1判斷表中是否存在索引if exists(select* from sysindexes whereid=object_id(表名)andname=索引名)print 存在else print 不存在查看數據庫中對象SELECT* FROM sysobjects WHEREname=對象名select * from table(所要查詢的表名)where coloum(條件)編輯本段提升復制表(只復制結構,源表名:a新表名:b) (Access可用)法一:select * into b fro
14、m a where 11法二:select top 0 * into b from a拷貝表(拷貝數據,源表名:a目標表名:b) (Access可用)in sert into b(x, y, z) select d,e,f from a;跨數據庫之間表的拷貝(具體數據使用絕對路徑)(Access4歡迎下載視圖名xtype的表示參數類型,通常包括如下這些C = CHECK約束D =默認值或可用)精品文檔insert into b(x, y, z) select d,e,f from a in 具體數據庫 where條件例子:。.from b in ”&Server.MapPath(.&a
15、mp;data.mdb & where.子查詢(表名1:a表名2:b)select a,b,c from a where a IN (select d from b或者:select a,b,cfrom a where a IN (1,2,3)顯示文章最后時間select a.title,a.username,b.adddatefrom table a,(select max(adddate)adddate from table where table.title=a.title) b外連接查詢(表名1:a表名2:b)select a.a, a.b, a.c, b.c, b.d, b.
16、f from a LEFT OUT JOIN b ON a.a =b.c在線視圖查詢(表名1:a select * from (Select a,b,c FROM a) T where t.a 1;between的用法between限制查詢數據范圍時包括了邊界值,not between不包括select * from table1 where time between time1 and time2select a,b,c, from table1 where a not between數值1 and數值2in的使用方法select * from table1 where a not in (
17、值1,值2,值4, 值6)刪除主表沒有的信息兩張關聯表delete from table1 where not exists ( select * from table2where table1.field1=table2.field1四表聯查問題select * from a left inner join b on a.a=b.b right inner join c ona.a=c.c inner join d on a.a=d.d where .日程安排提前五分鐘SQL: select * from日程安排where datediff(mi nute,f開始時間,getdate()5一
18、條sql搞定數據庫頁select top 10 b.* from (select top 20order by排序字段desc) a,表名b where b.排序字段前10條記錄select top 10 * from table1 where選擇排名選擇在每一組b值相同的數據中對應的 的用法可以用于論壇每月排行榜,每月熱銷產品分析select a,b,c from table name ta where a=(select max(a) from table nametb where tb.b=ta.b)主鍵字段,排序字段from表名 主鍵字段=a.主鍵字段order by a.范圍a最大的
19、記錄的所有信息(類似這樣,按科目成績排名,等等。)5歡迎下載精品文檔派生結果表包括所有在TableA中但不在TableB和TableC中的行并消除所有重復行而 派生出一個結果表(select a from tableA except (select a from tableB) except (selecta from tableC)隨機取出10條數據select top 10 * from table name order by n ewid()隨機選擇記錄select n ewid()刪除重復記錄Delete from table name where id n ot in (select
20、 max(id) from table namegroup by col1,col2,.)列出數據庫里的表名select n ame from sysobjects where type=U列出表里的所有的select n ame from syscolu mns where id=object_id(TableName)列示排列列示type、vender、pcs字段,以type字段排列,case可以方便地實現多 重選擇,類似select中的case。select type,sum(case ven der whe n A the n pcs else 0 en d),sum(caseven
21、der whe n C the n pcs else 0 en d),sum(case ven der whe n B the n pcs else0 end) FROM table name group by type顯示結果:type ven der pcs電腦A 1電腦A 1光盤B 2光盤A 2手機B 3手機C 3初始化表table1TRUNCATE TABLE table1選擇從10到15的記錄select top 5 * from (select top 5 * from (select top 15 * from tableorder by id asc) table_另吃orde
22、r by id desc) table_2 order by id數據類型轉換declare nu mid intdeclare id varchar(50)set n umid=2005set id=c on vert(varchar, nu mid)通過上述語句完成數據類型Int轉換成varchar,其他轉換類似,可參看convert函數編輯本段技巧1=1,1=2的使用6歡迎下載精品文檔在SQL語句組合時用的較多“where仁1”是表示選擇全部“where仁2”全部不選,如:if strWhere !=beginset strSQL = select cou nt(*) as Total
23、from + tblName + where+ strWhereendelsebeginset strSQL = select count(*) as Total from + tblName + end我們可以直接寫成set strSQL = select count(*) as Total from + tblName + where仁1 and + strWhere收縮數據庫-重建索引DBCC REINDEXDBCC INDEXDEFRAG-收縮數據和日志DBCC SHRINKDBDBCC SHRINKFILE壓縮數據庫dbcc shri nkdatabase(db name)轉移數據庫
24、給新用戶以已存在用戶權限exec sp_cha nge_users_logi n update_ on e, newn ame,old namego檢查備份集RESTORE VERIFYONLY from disk=E:dvbbs.bak修復數據庫Alter DATABASE dvbbs SET SINGLE_USERGODBCC CHECKDB(dvbbs,repair_allow_data_loss) WITH TABLOCKGOAlter DATABASE dvbbs SET MULTI_USERGO日志清除SET NOCOUNT ONDECLARE LogicalFileName sy
25、sn ame,MaxMi nu tes INT,NewSize INTUSE table name -要操作的數據庫名Select LogicalFileName = table name_log,-日志文件名MaxMinutes = 10, - Limit on time allowed to wrap log.7歡迎下載精品文檔NewSize = 1 -你想設定的日志文件的大小(M)-Setup / in itializeDECLARE Origi nalSize intSelect Origi nalSize = sizeFROM sysfilesWhere n ame = Logica
26、lFileNameSelect Origi nal Size of + db_n ame() + LOG is + CONVERT(VARCHAR(3O),Origi nalSize) + 8Kpages or + CONVERT(VARCHAR(3O),(Origi nalSize*8/1024) + MB FROM sysfilesWhere n ame = LogicalFileNameCreate TABLE DummyTra ns(DummyColu mn char (8000) not null)DECLARE Cou nter INT,StartTime DATETIME,Tru
27、 ncLog VARCHAR(255)Select StartTime = GETDATE(),Tru ncLog = BACKUP LOG + db_n ame() + WITH TRUNCATE_ONLYDBCC SHRINKFILE (LogicalFileName, NewSize)EXEC (Tru ncLog)-Wrap the log if n ecessary.WHILE MaxMi nutes DATEDIFF (mi, StartTime, GETDATE() - time has not expiredAND Origi nalSize = (Select size FR
28、OM sysfiles Where name = LogicalFileName)AND (Origi nalSize * 8 /1024) NewSizeBEGIN - Outer loop.Select Cou nter = 0WHILE (Cou nter Orig in alSize / 16) AND (Cou nter 50000)BEGIN - updateIn sert DummyTra ns VALUES (Fill Log)Delete DummyTra nsSelect Cou nter = Cou nter + 1ENDEXEC (Tru ncLog)ENDSelect
29、 Fi nal Size of + db_n ame() + LOG is + CONVERT(VARCHAR(30),size) + 8K pages or +CONVERT(VARCHAR(30),(size*8/1024) + MBFROM sysfilesWhere n ame = LogicalFileNameDrop TABLE DummyTra nsSET NOCOUNT OFF更改某個表8歡迎下載精品文檔exec sp_cha ngeobjectow ner table name,dbo存儲更改全部表Create PROCEDURE dbo.User_Cha ngeObject
30、Ow nerBatch OldOw ner as NVARCHAR(128),NewOw ner as NVARCHAR(128)ASDECLARE Name as NVARCHAR(128)DECLARE Ow ner as NVARCHAR(128)DECLARE Ow nerName as NVARCHAR(128) DECLARE curObject CURSOR FOR select Name = name,Ow ner = user_ name(uid)from sysobjectswhere user_ name(uid)=OldOw nerorder by n ameOPEN
31、curObjectFETCH NEXT FROM curObject INTO Name, Ow nerWHILE(FETCH_STATUS=O)BEGINif Ow ner=OldOw nerbeginset Ow nerName = OldOw ner + . + rtrim(Name) exec sp_cha ngeobjectow ner Ow nerName,NewOw ner end-select n ame,NewOw ner,OldOw nerFETCH NEXT FROM curObject INTO Name, Ow ner END close curObject deal
32、locate curObjectGOSERVER中循環寫入數據declare i intset i=1while i30begininsert into test (userid) values(i)set i=i+1end在SQL Server中有5種約束:主鍵約束(primary key constraint)唯一性約束(unique constraint) 檢查約束(check constraint)缺省約束(default constraint)夕卜部鍵約束(foreign key constraint)9歡迎下載精品文檔在SQL SERVER中,(1)對于基本表的約束分為列約束和表約
33、束 約束是限制用戶輸入到表中的數據的值的范圍,一般分為列級約束與表級約束。列級約束有六種:主鍵Primary key、外鍵foreign key、唯一unique、檢查checck、 默認default、非空/空值not null/ null表級約束有四種:主鍵、外鍵、唯一、檢查 列約束是對某一個特定列的約束,包含在列定義中,直接跟在該列的其他定義之后, 用空格 分隔,不必指定列名; 表約束與列定義相互獨立, 不包括在列定義中,通常用于對多個列一起進行約束,與列定義 用,分隔,定義表約束時必須指出要約束的那些列的名稱。完整性約束的基本語法格式 為: CONSTRAINT 約束名:約束不指定名稱
34、時,系統會給定一個名稱。 (2)列級約束與表級約束的區別 如果完整性約束涉及到該表的多個屬性列, 必須定義在表級上, 否則既可以定義在列級也可 以定義在表級。簡而言之:列級約束:列級約束是行定義的一部分,只能應用于一列上。表級約束:表級約束是獨立于列的定義,可以應用在一個表中的多列上。(3)列級約束與表級約束在SQL中的用法(即如何在SQL中定義約束)在創建表時定義約束:CREATE TABLE table_name( -列級約束定義|column_name AS computed_column_expression -計算列定義| -表級約束定義兒.n)一個約束定義為列級約束還是表級約束?
35、根據實際需要和設計者思路確定。如primarykey,當只涉及到一列時,定義為列級約束; 當涉及到多列時,則定義為表級約束。Prinmary key定義為列級約束時,相應SQL語句:Stu_id上建立的主鍵pk_1為列級約束CREATE TABLE student(Stu_id int constraint pk_1 primary key,Stu_name varchar(8),.)當定義為表級約束時,相應SQL語句:CREATE TABLE student(Stu_id int NOT NULL,Stu_id上建立的主鍵pk_1為的表級約束Stu_name varchar(8),Const
36、raint pk_1 primary key (Stu_id),.)各約束具體說明:10歡。迎下載精品文檔1.主鍵約束PRIMARY KEY勺束PRIMARYEY約束用于定義基本表的主鍵,起唯一標識作用,其值不能為NULL,也不能重復, 以此來保證實體的完整性。PRIMARYE丫丫與UNIQUE約束類似,通過建立唯一索引來保證基本表在主鍵列取值的唯一性,但它們之間存在著很大的區別:1在一個基本表中只能定義一個PRIMARY KEY勺束,但可定義多個UNIQUE約束;2對于指定為PRIMARYCE丫丫的一個列或多個列的組合, 其中任何一個列都不能出現空值, 而 對于UNIQUE所約束的唯一鍵,則
37、允許為空。注意:不能為同一個列或一組列既定義UNIQUE約束,又定義PRIMARY KEY約束。PRIMARY KE溉可用于列約束,也可用于表約束。PRIMARY KEY用于定義列約束時,其語法格式如下:CONSTRAINT PRIMARY KEYPRIMARY KEY用于定義表約束時,即將某些列的組合定義為主鍵,其語法格式如下:CONSTRAINT S PRIMARY KEY ()2.唯一性(UNIQUE)約束UNIQUE勺束用于指明基本表在某一列或多個列的組合上的取值必須唯一。定義了UNIQUE勺束的那些列稱為唯一鍵,系統自動為唯一鍵建立唯一索引,從而保證了唯 一鍵的唯一性。唯一鍵允許為空
38、,但系統為保證其唯一性,最多只可以出現一個NULL值。UNIQUE既可用于列約束,也可用于表約束。UNIQUE用于定義列約束時,其語法格式如下:CONSTRAINT UNIQUE唯一性約束用于指定一個或者多個列的組合的值具有唯一性,以防止在列中輸入重復的值。 當使用唯一性約束時,需要考慮以下幾個因素:1使用唯一性約束的字段允許為空值。2一個表中可以允許有多個唯一性約束。3可以把唯一性約束定義在多個字段上。4唯一性約束用于強制在指定字段上創建一個唯一性索引。5缺省情況下,創建的索引類型為非聚簇索引。unique約束是用來確保不受主鍵約束列上的數據的唯一性. unique與primary key的區別在于:(1)unique約束主要用于非主鍵的一列或多列上要求數據唯一.(2)unique約束允許該列上存在NULL值,而主鍵決不允
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論