數(shù)據(jù)庫的基本知識點_第1頁
數(shù)據(jù)庫的基本知識點_第2頁
數(shù)據(jù)庫的基本知識點_第3頁
數(shù)據(jù)庫的基本知識點_第4頁
數(shù)據(jù)庫的基本知識點_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基礎(chǔ)創(chuàng)建數(shù)據(jù)庫創(chuàng)建之前判斷該數(shù)據(jù)庫是否存在if exists (select * from sysdatabases where name=databaseName)drop database databaseNamegoCreate DATABASE database-name刪除數(shù)據(jù)庫drop database dbname備份 sql server創(chuàng)建 備份數(shù)據(jù)的 deviceUSE masterEXEC sp_addumpdevice disk, testBack, c : mssql7backupMyNwind_1.dat開始 備份BACKUP DATABASE pubs TO te

2、stBack創(chuàng)建新表create table tabname(col1 type1 not null primary key, col2 type2 not null,)根據(jù)已有的表創(chuàng)建新表:A :gouse 原數(shù)據(jù)庫名goselect * into目的數(shù)據(jù)庫名 .dbo. 目的表名 from原表名 (使用舊表創(chuàng)建新表)B: create table tab_new as select col1, col2from tab_old definition only創(chuàng)建序列create sequence SIMON_SEQUENCEminvalue 1 -最小值maxvalue 999999999

3、999999999999999999最大值start with 1開始值increment by 1每次加幾cache 20;刪除新表drop table tabname增加一個列Alter table tabname add column col type注:列增加后將不能刪除.DB2 中列加上后數(shù)據(jù)類型也不能改變,唯一能改變的是增加varchar類型的長度 .添加主鍵Alter table tabname add primary key(col)說明:刪除主鍵:Alter table tabname drop primary key(col)創(chuàng)建索引create unique index

4、idxname on tabname(col .)刪除索引: drop index idxname on tabname注:索引是不可更改的,想更改必須刪除重新建.創(chuàng)建視圖create view viewname as select statement刪除視圖: drop view viewname幾個簡單的基本的sql 語句選擇: select * from table1 where范圍插入: insert into table1(field1, field2) values(value1, value2)刪除: delete from table1 where范圍更新: update ta

5、ble1 set field1=value1 where范圍查找: select * from table1 where field1 like所有包含 value1%value1%這個(模式的字符串 )like的語法很精妙,查資料!排序: select * from table1 order by field1,field2 desc總數(shù): select count(*) as totalcount from table1求和: select sum(field1) as sumvalue from table1平均: select avg(field1) as avgvalue from

6、table1最大: select max(field1) as maxvalue from table1最?。?select min(field1) as minvalue from table1separator幾個高級查詢運算詞A : UNION運算符UNION運算符通過組合其他兩個結(jié)果表(例如 TABLE1 和 TABLE2) 并消去表中任何重復(fù)行而派生出一個結(jié)果表.當(dāng) ALL 隨 UNION一起使用時 (即 UNION ALL),不消除重復(fù)行.兩種情況下,派生表的每一行不是來自TABLE1 就是來自TABLE2.B: EXCEPT 運算符EXCEPT 運算符通過包括所有在TABLE1

7、中但不在TABLE2 中的行并消除所有重復(fù)行而派生出一個結(jié)果表.當(dāng) ALL 隨 EXCEPT 一起使用時(EXCEPT ALL) ,不消除重復(fù)行.C: INTERSECT 運算符INTERSECT 運算符通過只包括TABLE1 和 TABLE2 中都有的行并消除所有重復(fù)行而派生出一個結(jié)果表 .當(dāng) ALL 隨 INTERSECT 一起使用時(INTERSECT ALL) ,不消除重復(fù)行.注:使用運算詞的幾個查詢結(jié)果行必須是一致的.使用外連接A 、left outer join:左外連接 (左連接 ):結(jié)果集既包括連接表的匹配行,也包括左連接表的所有行.SQL: select a.a , a.b

8、, a.c , b.c , b.d , b.f from a LEFT OUT JOIN b ON a.a = b.cB: right outer join:右外連接 (右連接 ):結(jié)果集既包括連接表的匹配連接行,也包括右連接表的所有行.C: full outer join:全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄.編輯本段判斷對象是否存在判斷數(shù)據(jù)庫是否存在if exists (select * from sys.databases where name = 數(shù)據(jù)庫名 )drop database 數(shù)據(jù)庫名 判斷表是否存在if not exists (select *

9、 from sysobjects where name = 表名 and xtype=U)begin- 這里創(chuàng)建表end判斷存儲過程是否存在if exists (select * from sysobjects where id = object_id(N存儲過程名 ) andOBJECTPROPERTY(id , NIsProcedure) = 1)drop procedure 存儲過程名 判斷臨時表是否存在if object_id(tempdb#臨時表名 ) is not nulldrop table #臨時表名判斷視圖是否存在-SQL Server 2000IF EXISTS (SELE

10、CT * FROM sysviews WHERE object_id = dbo.視圖名 -SQL Server 2005IF EXISTS (SELECT * FROM sys.views WHERE object_id = dbo.視圖名 判斷函數(shù)是否存在if exists (select * from dbo.sysobjects where id = object_id(Ndbo.函數(shù)名 ) andxtype in (NFN, NIF , NTF)drop function dbo.函數(shù)名 獲取用戶創(chuàng)建的對象信息SELECT name , id , crdate FROM sysobj

11、ects where xtype=U/*xtype的表示參數(shù)類型,通常包括如下這些C = CHECK約束 D =默認值或 DEFAULT約束 F = FOREIGN KEY約束 L = 日志 FN =標量函數(shù)IF = 內(nèi)嵌表函數(shù)P = 存儲過程 PK =PRIMARY KEY約束 ( 類型是 K) RF =復(fù)制篩選存儲過程S = 系統(tǒng)表 TF = 表函數(shù) TR = 觸發(fā)器 U = 用戶表 UQ = UNIQUE約束 (類型是 K) V =視圖 X = 擴展存儲過程*/判斷列是否存在if exists(select * from syscolumns where id=object_id(表名

12、) and name=列名 )alter table表名 drop column列名判斷列是否自增列if columnproperty(object_id(table), col , IsIdentity)=1print 自增列 elseprint 不是自增列 SELECT * FROM sys.columns WHERE object_id=OBJECT_ID(表名 )AND is_identity=1判斷表中是否存在索引if exists(select * from sysindexes where id=object_id(表名 ) and name=索引名 )print 存在 else

13、print 不存在查看數(shù)據(jù)庫中對象SELECT * FROM sys.sysobjects WHERE name=對象名 編輯本段提升復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:a 新表名: b) (Access可用 )法一: select * into b from a where 11法二: select top 0 * into b from a拷貝表(拷貝數(shù)據(jù),源表名:a 目標表名: b) (Access可用 )insert into b(a, b , c) select d, e , f from b;跨數(shù)據(jù)庫之間表的拷貝(具體數(shù)據(jù)使用絕對路徑) (Access可用 )insert into b(a

14、, b , c) select d, e , f from b in具體數(shù)據(jù)庫 where 條件例子: from b in &Server.MapPath(.&data.mdb & where子查詢(表名 1 : a 表名 2: b)select a , b , c from a where a IN (select d from b或者: select a , b , c from awhere a IN (1, 2, 3)顯示文章、提交人和最后回復(fù)時間select a.title, a.username, b.adddate from table a, (select max(adddat

15、e) adddatefrom table where table.title=a.title) b外連接查詢(表名 1 : a 表名 2: b)select a.a , a.b , a.c , b.c , b.d , b.f from a LEFT OUT JOIN b ON a.a = b.c在線視圖查詢(表名 1 : aselect * from (Select a,b , c FROM a) T where t.a 1;between的用法between限制查詢數(shù)據(jù)范圍時包括了邊界值,not between不包括select * from table1 where time betwee

16、n time1 and time2select a , b , c, from table1 where a not between數(shù)值 1 and數(shù)值 2in 的使用方法select * from table1 where a not in (值 1 , 值 2 , 值 4 , 值 6 )刪除主表中已經(jīng)在副表中沒有的信息兩張關(guān)聯(lián)表delete from table1 where not exists ( select * from table2 wheretable1.field1=table2.field1四表聯(lián)查問題select * from a left inner join b on

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

18、 form table1 where范圍選擇排名選擇在每一組b 值相同的數(shù)據(jù)中對應(yīng)的a 最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產(chǎn)品分析,按科目成績排名,等等.)select a , b , c from tablename ta where a=(select max(a) from tablename tbwhere tb.b=ta.b)派生結(jié)果表包括所有在TableA中但不在 TableB和 TableC中的行并消除所有重復(fù)行而派生出一個結(jié)果表(select a from tableA except (select a from tableB) except

19、(select a from tableC)隨機取出 10 條數(shù)據(jù)select top 10 * from tablename order by newid()隨機選擇記錄select newid()刪除重復(fù)記錄Delete from tablename where id not in (select max(id) from tablename group bycol1 , col2 , )列出數(shù)據(jù)庫里所有的表名select name from sysobjects where type=U列出表里的所有的select name from syscolumns where id=object

20、_id(TableName)列示排列列示 type 、 vender 、 pcs 字段,以 type字段排列, case 可以方便地實現(xiàn)多重選擇,類似select中的 case.select type, sum(case vender when A then pcs else 0 end), sum(case venderwhen C then pcs else 0 end), sum(case vender when B then pcs else 0 end)FROM tablename group by type顯示結(jié)果:type vender pcs電腦 A1電腦 A1光盤 B2光盤

21、A2手機 B3手機 C3初始化表 table1TRUNCATE TABLE table1選擇從 10 到 15 的記錄select top 5 * from (select top 15 * from table order by id asc) table_別名 order byid desc數(shù)據(jù)類型轉(zhuǎn)換declare numid intdeclare id varchar(50)set numid=2005set id=convert(varchar,numid)通過上述語句完成數(shù)據(jù)類型Int 轉(zhuǎn)換成 varchar ,其他轉(zhuǎn)換類似,可參看convert函數(shù)編輯本段技巧1=1 ,1=2 的

22、使用在 SQL 語句組合時用的較多“ where 1=1是表”示選擇全部“ where 1=2全部不”選,如:if strWhere !=beginset strSQL = select count(*) as Total from + tblName + where +strWhereendelsebeginset strSQL = select count(*) as Total from + tblName + end我們可以直接寫成set strSQL = select count(*) as Total from + tblName + where 1=1 and +strWhere

23、收縮數(shù)據(jù)庫重建索引DBCC REINDEXDBCC INDEXDEFRAG收縮數(shù)據(jù)和日志DBCC SHRINKDBDBCC SHRINKFILE壓縮數(shù)據(jù)庫dbcc shrinkdatabase(dbname)轉(zhuǎn)移數(shù)據(jù)庫給新用戶以已存在用戶權(quán)限exec sp_change_users_login update_one,newname,oldnamego檢查備份集RESTORE VERIFYONLY from disk=E: dvbbs.bak修復(fù)數(shù)據(jù)庫Alter DATABASE dvbbs SET SINGLE_USERGODBCC CHECKDB(dvbbs, repair_allow_da

24、ta_loss) WITH TABLOCKGOAlter DATABASE dvbbs SET MULTI_USERGO日志清除SET NOCOUNT ONDECLARE LogicalFileName sysname,MaxMinutes INT,NewSize INTUSE tablename -要操作的數(shù)據(jù)庫名Select LogicalFileName = tablename_log, - 日志文件名MaxMinutes = 10, - Limit on time allowed to wrap log.NewSize = 1 -你想設(shè)定的日志文件的大小(M)Setup / initi

25、alize DECLARE OriginalSize int Select OriginalSize = size FROM sysfilesWhere name = LogicalFileNameSelect Original Size of + db_name() + LOG is + CONVERT(VARCHAR(30) , OriginalSize) + 8K pages or + CONVERT(VARCHAR(30) , (OriginalSize*8/1024) + MB FROM sysfilesWhere name = LogicalFileName Create TABL

26、E DummyTrans (DummyColumn char (8000) not null)DECLARE Counter INT,StartTime DATETIME,TruncLog VARCHAR(255)Select StartTime = GETDATE(),TruncLog = BACKUP LOG + db_name() + WITH TRUNCATE_ONLYDBCC SHRINKFILE (LogicalFileNameEXEC (TruncLog)- Wrap the log if necessary., NewSize)WHILE MaxMinutes DATEDIFF

27、 (mi,StartTime,GETDATE() - time has notexpiredAND 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 - updateInsert DummyTrans VALUES (Fill Log)Delete DummyTransSelect Counter = Counter + 1ENDEXEC (TruncLog)ENDSelect Final Size of + db_name() + LOG is +CONVERT(VARCHAR(30), size) +

溫馨提示

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

評論

0/150

提交評論