青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  3 隨筆 :: 10 文章 :: 0 評(píng)論 :: 0 Trackbacks

DBMS :Database Management System
數(shù)據(jù)模型:概念數(shù)據(jù)模型 ----設(shè)計(jì)
???????? 邏輯數(shù)據(jù)模型(關(guān)系數(shù)據(jù)模型,網(wǎng)狀數(shù)據(jù)模型,層次數(shù)據(jù)模型,)----實(shí)現(xiàn)
???????? 物理數(shù)據(jù)模型
數(shù)據(jù)模式:描述

聯(lián)系,約束并發(fā)控制:多用戶訪問(wèn)共享數(shù)據(jù)的沖突問(wèn)題

實(shí)體—聯(lián)系:er模型

rdbms (關(guān)系數(shù)據(jù)庫(kù))???? :? sql server ,oracle ,db/2,sybase,informix
Non-rdbms (file-based) :? foxpro,access

客戶端網(wǎng)絡(luò)實(shí)用工具(Client Network Utility):用來(lái)配置客戶端的網(wǎng)絡(luò)連接,管理和測(cè)定客戶端的數(shù)據(jù)庫(kù)。

事件探察器:監(jiān)視事件處理日志,并對(duì)日志進(jìn)行分析和重播。

服務(wù)端網(wǎng)絡(luò)實(shí)用工具(Server Network Utility):配置服務(wù)器端網(wǎng)絡(luò)連接和設(shè)置相關(guān)參數(shù)。

導(dǎo)入和導(dǎo)出數(shù)據(jù)(Imput and Export Data):采用DTC(data transformation services)向?qū)?lái)完成,實(shí)現(xiàn)其他數(shù)據(jù)和SQL 2000數(shù)據(jù)的轉(zhuǎn)換。

企業(yè)版:win2000 advanced server
標(biāo)準(zhǔn)版:win2000 server

首要數(shù)據(jù)文件 .mdf
次要數(shù)據(jù)文件 .ndf
日志文件???? .ldf

windows身份驗(yàn)證模式 比 混合模式具有更高的安全性,windows身份驗(yàn)證模式下必須是本地用戶和域用戶才能使用SQL Server 2000

升級(jí)SQL SERVER:備份(包括系統(tǒng)庫(kù)在內(nèi)的)所有數(shù)據(jù)庫(kù),備份注冊(cè)表

日志文件:
sqlstp.log?? 在\windows或\winnt下
setup.log??? 在\windows或\winnt下
searchsetup.log? 在\winnt\temp下
errorlog???? 在mssql\log下

系統(tǒng)數(shù)據(jù)庫(kù):
master:
model:? 是用戶數(shù)據(jù)庫(kù)和tempdb數(shù)據(jù)庫(kù)的摸板數(shù)據(jù)庫(kù),是創(chuàng)建新數(shù)據(jù)庫(kù)的摸板
msdb:?? 是代理服務(wù)數(shù)據(jù)庫(kù)
tempdb: 臨時(shí)數(shù)據(jù)庫(kù),默認(rèn)大小8mb,為臨時(shí)操作提供存儲(chǔ)空間
pubs:?? 示范學(xué)習(xí)

系統(tǒng)表:
(
sysobjects表
syscolumns表
sysindexes表
sysusers表
sysdatabases表
sysdepends表
sysconstraints表
)

(主關(guān)鍵字(主鍵):
候選關(guān)鍵字:
公共關(guān)鍵字:
外關(guān)鍵字:確定主表和從表)

數(shù)據(jù)庫(kù)對(duì)象:
(

索引
視圖:其實(shí)是虛表,是查詢表產(chǎn)生的
圖表:是表之間的關(guān)系示意圖
確省值:
規(guī)則:
觸發(fā)器:
存儲(chǔ)過(guò)程:
用戶:
)

范式:構(gòu)造數(shù)據(jù)庫(kù)必須遵守的規(guī)則,目前關(guān)系數(shù)據(jù)庫(kù)有6種范式,第一范式(1NF)....,一般需要滿足3NF

SQL(structured query language)結(jié)構(gòu)化查詢語(yǔ)言

9種語(yǔ)句
(
數(shù)據(jù)查詢:select
數(shù)據(jù)定義:create,drop(刪除),alter(修改)
數(shù)據(jù)操作:insert,update,delete
數(shù)據(jù)控制:grant,revoke
)

SQL語(yǔ)言分類:
(
數(shù)據(jù)定義語(yǔ)言(dll),用于定義數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)控制語(yǔ)言(dml),用于檢索和修改數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)控制語(yǔ)言(dcl),用于規(guī)定數(shù)據(jù)庫(kù)用戶的權(quán)限
數(shù)據(jù)庫(kù)事務(wù)處理,用來(lái)保證數(shù)據(jù)庫(kù)的完整性
)

常用dll語(yǔ)句:
(
create table
create index
drop table??? 刪除數(shù)據(jù)庫(kù)表
drop index
truncate????? 刪除表中所有的行
alter table?? 增加表列,重定義表列,更改存儲(chǔ)分配
alter table add constraint?? 在已有的表上增加約束
)

常用dml語(yǔ)句:
(
insert
delete
update
selete
)

常用dcl語(yǔ)句:
(
grant? 將權(quán)限或角色授予用戶或其他角色
revoke 從用戶或數(shù)據(jù)庫(kù)角色回收權(quán)限
set role? 禁止或允許角色
)

事務(wù)處理語(yǔ)句:
(
commit work? 把當(dāng)前事務(wù)所作的更改永久化
rollback???? 作廢上次提交以來(lái)的所有更改
)

數(shù)據(jù)表名稱 as 數(shù)據(jù)表別名,如果已經(jīng)給表定了別名,在T-SQL語(yǔ)句中應(yīng)引用別名,而不能用數(shù)據(jù)表名
select e.id,e.name from 用戶表 as e


select [all | distinct] [top n] selectlist [into[NewtAbleName]]? //distinct:無(wú)重復(fù)的,selectlist:可以是表達(dá)式
? from {TableName | ViewName,....}
where? conditions
[group by group_by_list]? // 分組?
[having conditions]?????? // 分組條件
[order by order_by_list [asc | desc]]

select cost*quantity as sum

select 數(shù)據(jù)表 join on (員工數(shù)據(jù)表.員工編號(hào)=項(xiàng)目數(shù)據(jù)表.負(fù)責(zé)人)???? //聯(lián)接條件

嵌套select:
select table1.a,tmptable.b
from table1,
(select table2.c,table2.d
from table2
where table2.id>2) as tmptable
where table1.id=tmptable.id


where:
比較:<,<=,>,>=,=,!=,!<,!>
范圍:between a and b , not between a and b
可選擇:in,not in
模式匹配:like,not like
是否空值:is null,is not null
邏輯:and,or,not

like通配符:
%? : like 'wang%'??? like '%yi'??
-? : like '_angyi'???
[]? :like '[a-z]angyi'
[~] :like '[~w]angyi'

in的用例:
select name
? from table
where id in ('4','20')

escape的用例:
select *
? from table
like 'wang#_yi' escape '#'

select id,count(*)
? from table
where wage>=6000
group by id

//group by 對(duì)查詢結(jié)果分組
select id,name
? from table
where level='2'
group by id,name???? //先按id分,在按name分
with cube??????????? //對(duì)group產(chǎn)生的組再按組統(tǒng)計(jì)
with rollup????????? //只返回第一個(gè)分組條件下的再按組統(tǒng)計(jì)

having 指定分組搜索條件,通常與group by一起用
having count(*)>1

select *
? from table
where col like '%50[%]%'? 返回包含50%的字符串

asc:升續(xù)

//compute計(jì)算? avg,sum,min,max,count (都會(huì)忽律null)
select id,wage
?? from table
order by 部門
compute sum(wage) by 部門


count(distinct 列名)

union

子查詢中一般不用Order by子句,Order by子句用于最終的結(jié)果

>all,<all,
<>all等價(jià)于not in
>some,<some
=some 等價(jià)于in? <>some等價(jià)于 not in

不要把If..exists和聚合函數(shù)一起使用

數(shù)據(jù)完整性:
實(shí)體完整性---表中數(shù)據(jù)的唯一性
區(qū)域完整性---字段數(shù)據(jù)范圍的完整性
參考完整性----表與表之間關(guān)聯(lián)的完整性

使用者定義的完整性----用戶自己定義的完整性。如:客戶欠6個(gè)月的錢,下次再下定單的時(shí)候就不賣給他。

數(shù)據(jù)庫(kù)分離:使用SQL語(yǔ)句分離為EXEC sp_detach_db ‘銷售數(shù)據(jù)庫(kù)’?指明欲分離的數(shù)據(jù)庫(kù)名稱即可。分離后想再用該數(shù)據(jù)庫(kù),則需要附加該數(shù)據(jù)庫(kù),具體SQL語(yǔ)句為:
CREATE? DATABASE 銷售數(shù)據(jù)庫(kù) ON PRIMARY(FILENAME=’C:\SQLTEST\銷售數(shù)據(jù)文件_1。MDF’)
FOR? ATTACH 或者使用sp_attach_db系統(tǒng)存儲(chǔ)過(guò)程來(lái)附加數(shù)據(jù)庫(kù):
sp_attach_db? 銷售數(shù)據(jù)庫(kù)
‘C:\SQLTEST\銷售數(shù)據(jù)文件_1.MDF’

?UNIQUE 和Primary key的差異
1、? UNIQUE允許輸入NULL值(最多為一個(gè)),而Primary key不允許;
2、? 一個(gè)數(shù)據(jù)表中可以定義多個(gè)UNIQUE條件約束,但只能定義一個(gè)Primary key條件約束。

CHECK約束可用來(lái)限制字段值是否在所允許的范圍內(nèi),例如:
CREATE TABLE 客戶02
(
客戶編號(hào) int IDENTITY? NULL? UNIQUE,
身份證號(hào) char[10] NOT NULL? UNIQUE,
年齡? int? CHECK (年齡>0) DEFAULT 2
)

建立計(jì)算列:
CREATE TABLE 估價(jià)
(
編號(hào)? int? IDENTITY,?????????????? //自動(dòng)編號(hào)
單價(jià)? numeric(5,1),
數(shù)量? int,
總價(jià)? AS 單價(jià)*數(shù)量
)
insert 估價(jià) values(21.5,8)
insert 估價(jià) values(12,3)
delete from 估價(jià) where 編號(hào)=5 or 編號(hào)=6
drop table 估價(jià)

創(chuàng)建約束字段:
Create table 客戶
{
客戶編號(hào)? int? IDENTITY? Primary Key,------------------------IDENTITY自動(dòng)產(chǎn)生編號(hào)
身份證號(hào)? char 18? NOT NULL UNIQUE,
地址????? char(50),
電話????? char (12),
雜志編號(hào)? int? REFERENCES 雜志種類(雜志編號(hào)),
訂單編號(hào)? int? NOT NULL,FOREIGN Key(雜志編號(hào),訂戶編號(hào))
REFERENCES? 雜志訂戶(雜志編號(hào),訂戶編號(hào)),
Check(地址 is NOT NULL? OR 電話? is? NOT NULL)
}

修改數(shù)據(jù)表:
ALTER TABLE 客戶A
ADD
類別編號(hào) int
DEFAULT 1 WITH VALUES
CONSTRAINT? FK_類型編號(hào)
FOREIGN KEY
REFERENCES? 客戶類別(類別編號(hào))

刪除約束字段:
ALTER TABAL訂購(gòu)項(xiàng)目A
DROP CONSTRAINT PK_訂購(gòu)項(xiàng)目A
下面刪除訂購(gòu)項(xiàng)目A的兩個(gè)字段
ALTER TABLE 訂購(gòu)項(xiàng)目A
DROP COLUMN 定單編號(hào),項(xiàng)目編號(hào)

激活/關(guān)閉約束
ALTER TABLE table
{ CHECK | NOCHECK} CONSTRAINT
{ALL | constrant_name{,…….n}}

臨時(shí)數(shù)據(jù)表以#或##開(kāi)頭,用戶斷開(kāi)連接后表被自動(dòng)刪除

數(shù)據(jù)表中字段的種類:
Primary key,? Foreign Key,? NULL,? NOT NULL,? DEFAULT,? UNIQUE,? CHECK

用查詢結(jié)果建立新數(shù)據(jù)表
Select * into? newtablename? from table_source where 條件

重復(fù)記錄采用DISTINCT來(lái)獲取單獨(dú)的數(shù)據(jù)。

TOP? N 為顯示前N個(gè)數(shù)據(jù),TOP? N? 30? PERSENT * FROM 表名

表示顯示N的前30%的數(shù)據(jù)

?ORDER BY 按什么方式排序顯示結(jié)果,ASC升DESC降

?JOIN :SELECT? A,B,C? FROM? T1? JOIN? T2? ON? T1.NO=T2.NO

JOIN 的類型有多種:INNER(默認(rèn))LEFT(以左邊為條件,如果右邊沒(méi)有符合的條件,則以NULL)
??????? SELECT 旗.產(chǎn)品名稱AS旗旗公司產(chǎn)品名稱,旗.價(jià)格,標(biāo).成品名稱AS標(biāo)標(biāo)公司產(chǎn)品名稱,標(biāo).價(jià)格 FROM 旗旗公司 AS 旗 LEFT JOIN 標(biāo)標(biāo)公司AS標(biāo) ON旗.產(chǎn)品名稱=標(biāo)產(chǎn)品名稱 RIGHT(以右邊為條件,如果左邊沒(méi)有符合的條件,則以NULL)FULL(左邊右邊都顯示,如果沒(méi)有則以NULL) CROSS(將兩個(gè)表的數(shù)據(jù)進(jìn)行比較,全部顯示出來(lái))

有時(shí)需要自己JOIN自己
SELECT 員工.姓名,員工.職位,長(zhǎng)官.姓名AS主管
FROM 員工 LEFT JOIN 員工AS 長(zhǎng)官
ON 員工.主管編號(hào)=主管.編號(hào) 姓名 職位 主管
?1
?a
?b
?c
?2
?d?
e?
NULL

GROUP BY 按什么分組顯示

UNION把兩個(gè)查詢結(jié)果合并到一個(gè)表中顯示出來(lái)查詢時(shí)Group的使用,?
Select name? AS名稱,Sum(Quantity)數(shù)量? Form? table? Group? By? name

GROUP BY后面如果有WITH CUBE則把各個(gè)組進(jìn)行匯總計(jì)算后顯示結(jié)果?

查詢:select name? AS出版社名稱,bookname AS 書(shū)名,sum(quantity) AS 數(shù)量 from table group by name,bookname with cube

查詢時(shí)改變要顯示的數(shù)據(jù):(1代表“男”,0代表“女”)要求查詢時(shí)如果是1則顯示“男”,否則顯示“女”

Select name? AS 姓名,case? sex? when? 0? then “女” else? “男”? End? AS 性別? From? table

?比較清單有:IN,ALL,ANY(SOME)結(jié)果為TRUE或FALSE

測(cè)試存在用EXISTS結(jié)果返回TRUE,F(xiàn)ALSE

?索引分為聚集索引和非聚集索引

聚焦索引數(shù)據(jù)的存放會(huì)依照該索引的順序來(lái)存放

非聚焦索引數(shù)據(jù)的存放不會(huì)依照索引的順序來(lái)存放

因?yàn)榉蔷劢顾饕挥绊憯?shù)據(jù)排列順序,則可以設(shè)置多個(gè)非聚焦索引,而聚焦索引則最多只能設(shè)置一個(gè),因?yàn)閷?shí)際數(shù)據(jù)只能有一種排列順序。

(Unique index)索引值是否唯一:如果索引值為唯一,則成為唯一索引

多個(gè)字段做為索引稱為復(fù)合索引(Composite index)

Create? [UNIQUE]? -----指定唯一
CREATE? TABLE? t
(
ProductID? smallint? not null? primary key,
ProductName?? char(30),
Price?? smallmoney,
Manufacturer?? char(30)
)?????????
//創(chuàng)建索引
CREATE??UNIQUE???NONCLUSTERED????INDEX????indexname
ON???t?(Price?? DESC)
WITH???? PAD_INDEX, FILLFACTOR=30,IGNORE_DUP_KEY

//刪除索引
DROP? INDEX?? table.index_name

//修改索引

使用DROP_EXISTING修改索引,如果要修改索引,只要在CREATE??? INDEX語(yǔ)句的最后加上DROP_EXISTING即可(如果存在該索引,則修改之,否則會(huì)發(fā)生錯(cuò)誤)

使用DBCC? DBREINDEX重建索引

如果只想重建索引(而不修改索引的相關(guān)設(shè)置),那么使用DBCC? DBREINDEX語(yǔ)句比較方便,而且使用時(shí)也可指定重建的填充因子。

DBCC DBREINDEX(’database_name.owner.table_name’,? index_name,?? fillfactor)數(shù)據(jù)庫(kù)? 數(shù)據(jù)庫(kù)所有者 表名? 重建的索引名 設(shè)置新的填充因子[WITH? NO_INFOMSGS]?? -------有此項(xiàng),則重建索引不會(huì)顯示出信息

?存儲(chǔ)過(guò)程
系統(tǒng)存儲(chǔ)過(guò)程都是以 sp_開(kāi)頭
擴(kuò)展存儲(chǔ)過(guò)程通常以xp_開(kāi)頭
EXECUTE 執(zhí)行存儲(chǔ)過(guò)程或SQL字符串(EXEC)
EXEC? 存儲(chǔ)過(guò)程名?? 參數(shù)1?? 參數(shù)2?? 參數(shù)3……

?變量的聲明:
DECLARE? @A? int -------------- 生命了一個(gè)為int 類型的A 變量。

建立存儲(chǔ)過(guò)程
使用CREATE? PROC或者CREATE? PROCEDURE + 過(guò)程名 + AS +SQL語(yǔ)句
CREATE? PROC? MyProcl
AS? SELECT * FROM 標(biāo)標(biāo)公司? WHERE 價(jià)格 >5
GO
EXEC MyProcl

EXEC? lookup? ‘楊小雄’,@地址 OUTPUT---OUTPUT表示參數(shù)的值是可以返回的

一個(gè)存儲(chǔ)過(guò)程為一個(gè)批,因此在查詢分析器中遇到GO時(shí),表示存儲(chǔ)過(guò)程的定義已結(jié)束.在存儲(chǔ)過(guò)程中,有些創(chuàng)建對(duì)象的語(yǔ)句不可使用
CREATE? DEFAULT?????? CREATE? TRIGGER
CREATE? PROCEDURE??? CREATE? VIEW
CREATE? RULE

臨時(shí)存儲(chǔ)過(guò)程分為局部和全局
局部要以#開(kāi)頭
全局要以##開(kāi)頭

修改存儲(chǔ)過(guò)程ALTER PROC
刪除存儲(chǔ)過(guò)程DROP PROC

建立函數(shù)CREATE? FUNCTION????????????????????
修改函數(shù)?ALTER? FUNCTION?????????????
刪除函數(shù)DROP? FUNCTION

返回單個(gè)數(shù)據(jù)的函數(shù)和一般函數(shù)一樣
返回大量數(shù)據(jù)集的函數(shù)如下例:
CREATE FUNCTION 依售價(jià)查詢書(shū)籍
(@由 money,? @到money)
RETURNS TABLE
RETURN? (SELECT 書(shū)籍編號(hào),書(shū)籍名稱,單價(jià) FROM 書(shū)籍 WHERE 單價(jià)>=@由AND單價(jià)<=@到)
GO

SELECT * FROM依售價(jià)查詢書(shū)籍(400,500)
ORDER? BY? 單價(jià)
在調(diào)用系統(tǒng)內(nèi)置的函數(shù)時(shí),需要加上?? ::如:SELECT * FROM ::fn_helpcollations()在創(chuàng)建表時(shí)可以使用這些函數(shù)。

?函數(shù)分為確定性函數(shù)和非確定性函數(shù)
確定性函數(shù)為當(dāng)傳入的參數(shù)不變時(shí),返回值不變,而非確定性函數(shù)為傳入?yún)?shù)不變,但每次返回的值會(huì)改變(如:GETDATE()函數(shù))

?觸發(fā)器(Trigger)是一種與數(shù)據(jù)表緊密結(jié)合的存儲(chǔ)過(guò)程,當(dāng)該數(shù)據(jù)表有新建(INSERT)更改(UPDATE)或刪除(DELETE)事件發(fā)生時(shí),所設(shè)置的觸發(fā)器會(huì)自動(dòng)被執(zhí)行,以進(jìn)行數(shù)據(jù)完整性,或其他一些特殊的數(shù)據(jù)處理工作。

觸發(fā)器是針對(duì)單一數(shù)據(jù)表所撰寫(xiě)的特殊存儲(chǔ)過(guò)程。觸發(fā)器的種類與操作:觸發(fā)器分為2類
AFTER觸發(fā)器:這類觸發(fā)器要在數(shù)據(jù)已變動(dòng)完成之后(AFTER),才會(huì)被激活并進(jìn)行必要的善后處理或檢查。若發(fā)現(xiàn)錯(cuò)誤,則可用ROLLBACK? TRANSATION回滾全部數(shù)據(jù)。
INSTEAD? OF觸發(fā)器:INSTEAD? OF 是取代的意思,就是這類觸發(fā)器會(huì)取代原本要進(jìn)行的操作(例如新建或更改數(shù)據(jù)庫(kù)操作),因此會(huì)在數(shù)據(jù)變動(dòng)前就發(fā)生,而且數(shù)據(jù)要如何變動(dòng)也完全取決于觸發(fā)器。(該觸發(fā)器能應(yīng)用與數(shù)據(jù)表與視圖)

建立觸發(fā)器
CREATE? TRIGGER? trigger_name
ON? {table|view}
[with? encryption]??????? ------加密
{FOR|AFTER|INSTEAD OF}? ------FOR和AFITER都是要等到數(shù)據(jù)完全操作完后才激活觸發(fā)器,INSTEAD OF則表示要建立INSTEAD OF觸發(fā)器,此時(shí)觸發(fā)器將取代原來(lái)要執(zhí)行的數(shù)據(jù)操作。
{[DELETE][,][INSERT][,][UPDATE]}-----指定觸發(fā)器的觸發(fā)操作,必須指定一個(gè),多個(gè)時(shí)以逗號(hào)隔開(kāi),在同一數(shù)據(jù)表中,AFTER觸發(fā)器數(shù)目沒(méi)有限制;但對(duì)INSTEAD OF 觸發(fā)器來(lái)說(shuō)則限制DELETE、INSERT、UPDATE每項(xiàng)最多只能有一個(gè)。
AS

Sql_statements??? ------用來(lái)定義觸發(fā)器的內(nèi)容。

例如:下面對(duì)一個(gè)表建立2個(gè)觸發(fā)器:
CREATE? TRIGGER? 訂單修改通知
ON? 訂單
AFTER? INSERT ,UPDATE
AS
PRINT? ‘又有訂單被修改了!’
GO


CREATE TRGGER 訂單刪除通知
ON? 訂單
AFTER? DELETE
AS
PRINT? ‘又有訂單被刪除了!’
GO

INSERT 訂單(日期,客戶編號(hào))
Values(‘2000/1/1’,3)
Delete訂單
Where 日期=‘2000/1/1’

?刪除觸發(fā)器:DROP? TRIGGER? trigger_name

?事務(wù)通常是由BEGIN? TRAN 語(yǔ)句開(kāi)始,一直執(zhí)行到COMMIT? TRAN或ROLLBACK? TRAN語(yǔ)句時(shí)才結(jié)束。

當(dāng)執(zhí)行完事務(wù)中的最后一項(xiàng)數(shù)據(jù)庫(kù)的操作后,若沒(méi)有任何錯(cuò)誤,我們可以用COMMIT TRAN提交事務(wù)。反之,若發(fā)現(xiàn)在事務(wù)中有任何的錯(cuò)誤,則執(zhí)行ROLLBACK? TRAN取消事務(wù),并回滾至事務(wù)執(zhí)行前的狀態(tài)。

每執(zhí)行完一項(xiàng)數(shù)據(jù)庫(kù)的操作后,要立即檢查@@ERROR和@@ROWCOUNT,否則再執(zhí)行下一項(xiàng)數(shù)據(jù)庫(kù)操作時(shí),這2個(gè)系統(tǒng)變量將會(huì)被新的值代替。在更改或刪除數(shù)據(jù)時(shí),若因指定條件不符或其他原因而沒(méi)有更改到任何一條記錄,由于這種情況并不是錯(cuò)誤(@@ERROR仍為0),因此我們還要檢查@@ROWCOUNT的更改條數(shù),以確定數(shù)據(jù)已正確更改。

?無(wú)論是COMMIT TRAN還是ROLLBACK TRAN而結(jié)束的事務(wù)后,如果后面還有其他未執(zhí)行的語(yǔ)句,則還會(huì)繼續(xù)執(zhí)行這些語(yǔ)句,直到批結(jié)束。不過(guò)已COMMIT的事務(wù)就無(wú)法再ROLLBACK了,同理,已ROLLBACK的事務(wù)也無(wú)法再COMMIT了。

?在事務(wù)中,把事務(wù)中所有的語(yǔ)句看成是一個(gè)數(shù)據(jù)處理單元,因此單元必須全部做完或全部不做。

?事務(wù)的4大特性:
1,? 原子性:整個(gè)事務(wù)被看成一個(gè)執(zhí)行單元,要么全部成功,要么全部取消。
2,? 一致性:當(dāng)事務(wù)完成后,數(shù)據(jù)庫(kù)的內(nèi)容必須全部更新妥當(dāng),而且仍然具備正確性及完整性。
3,? 隔離性:在事務(wù)中所使用到的數(shù)據(jù),必須與其他同時(shí)在進(jìn)行的事務(wù)適度隔離(使用鎖定數(shù)據(jù)的方法來(lái)隔離事務(wù))
4,? 永久性:事務(wù)一旦提交后,其所作的數(shù)據(jù)修改將被視為永久性的,無(wú)法再用ROLLBACK回滾了。


事務(wù)是以連接為單位,每個(gè)連接都可以有自己的事務(wù)。
事務(wù)的執(zhí)行有3種模式:
1,? 外顯事務(wù)2,? 自動(dòng)提交事務(wù)3,? 隱含事務(wù)

嵌套事務(wù)是以最外層的事務(wù)為提交或回滾對(duì)象的。
雖然嵌套事務(wù)是以最外層為提交對(duì)象的,但其中的每個(gè)事務(wù)都有自己的BEGIN TRAN 和COMMIT
其實(shí)事務(wù)是為存儲(chǔ)過(guò)程而設(shè)計(jì)的,因?yàn)檫@樣我們就可以在存儲(chǔ)過(guò)程中撰寫(xiě)事務(wù)程序,而不用擔(dān)心該程序被調(diào)用時(shí)是否已在另一個(gè)事務(wù)之中。

?@@TRANCOUNT事務(wù)計(jì)數(shù)
無(wú)論是那里調(diào)用ROLLBACK,都會(huì)跳轉(zhuǎn)到最外層的BEGIN TRAN處,@@TRANCOUNT都會(huì)變?yōu)?。‘
有時(shí)在事務(wù)中發(fā)生錯(cuò)誤時(shí),我們希望只要回滾一小部分就可以了
則用SAVE TRANSACTION來(lái)設(shè)置“事務(wù)保存點(diǎn)”,然后在必要時(shí)使用ROLLBACK來(lái)回滾到所保存的位置,而不會(huì)中斷事務(wù)。

ROLLBACK 后的事務(wù)名稱只能是由SAVATRAN或最外層的BEGIN TRAN所聲明的事務(wù)名稱。

游標(biāo)的狀態(tài):
1
?Cursor已打開(kāi),其內(nèi)有0,1或多條記錄
?0
?Cursor已打開(kāi),但確定其內(nèi)沒(méi)有查詢到任何一條信息記錄
?-1
?Cursor已關(guān)閉
?-2
?Cursor變量名未參照到時(shí)間Cursor或參照的Cursor已被DeAllocale
?-3
?指定的游標(biāo)變量名不存在
?
Cursor主要是使用于SQL批、存儲(chǔ)過(guò)程和出發(fā)器中。
游標(biāo)的格式:
DECLARE? 游標(biāo)名? CURSOR? -------聲明游標(biāo)
FOR? SELECT 姓名? FROM 通訊薄? WHERE 地址=臺(tái)北??? -------------游標(biāo)的數(shù)據(jù)來(lái)源
OPEN 游標(biāo)名?? -----------打開(kāi)游標(biāo)
DECLARE? @name? varchar(20)
FETCH? NEXT? FROM? 游標(biāo)名???? ------------將第一條數(shù)據(jù)存入@name
INTO? @name
WHILE(@@FETCH_STATUS=0)????? -------------判斷是否讀到數(shù)據(jù),0表示讀到數(shù)據(jù)
BEGIN
???FETCH? NEXT? FROM 游標(biāo)名
?? INTO? @name
END
CLOSE? 游標(biāo)名?? ----------------關(guān)閉游標(biāo)與數(shù)據(jù)的關(guān)聯(lián)
DEALLOCATE? 游標(biāo)名? ---------------將游標(biāo)對(duì)象刪除
除了Cursor中FETCH數(shù)據(jù)外,可以通過(guò)Cursor來(lái)UPDATE或DELETE一條目前所指定的記錄

UPDATE 標(biāo)標(biāo)公司?? SET 價(jià)格=100? WHERE CURRENT? OF? 游標(biāo)名
DELETE 標(biāo)標(biāo)公司?? WHERE CURRENT? OF? 游標(biāo)名

范例:
DECLARE? MyCursor? CURSORLOCAL?? SCROLL_LOCKS
FOR? SELECT 價(jià)格FROM? 標(biāo)標(biāo)公司
FOR? UPDATE
OPEN? MyCursor
DECLARE? @money?? money
FETCH? MyCursor? INTO @money
WHILE(@@FETCH_STATUS=0)
BEGIN
????IF? @money<=10
??????BEGIN
?????????SET @money=money*1.1
???????????????UPDATE? 標(biāo)標(biāo)公司
???????????????SET 價(jià)格=@money?????????????? -----------------更新價(jià)格信息
???????????????WHERE?? CURRENT OF MyCursor
???????END
FETCH? MyCursor? INTO @money
END

游標(biāo)變量,使用SET將已經(jīng)聲明好的游標(biāo)給游標(biāo)變量。在使用上,游標(biāo)變量和游標(biāo)是一樣使用的

全局游標(biāo)和本地游標(biāo)有相同的變量時(shí),以本地游標(biāo)為優(yōu)先調(diào)用

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?


?

posted on 2006-07-03 20:15 dbsky 閱讀(575) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)庫(kù)編程
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            美脚丝袜一区二区三区在线观看 | 99精品国产在热久久婷婷| 欧美午夜电影网| 亚洲高清三级视频| 狠久久av成人天堂| 亚洲欧美日韩一区二区三区在线观看| 99精品黄色片免费大全| 久久夜色撩人精品| 老司机免费视频一区二区| 国产欧美日韩| 羞羞答答国产精品www一本 | 欧美亚洲视频| 欧美日韩一区二区在线观看| 亚洲日本电影| 99re6这里只有精品| 欧美国产日本韩| 亚洲国产精品女人久久久| 韩日成人在线| 久久精品国产免费观看| 久久婷婷亚洲| 亚洲第一视频| 乱码第一页成人| 免费亚洲网站| 亚洲激情在线| 欧美精品日韩www.p站| 亚洲高清一区二| 亚洲美女av在线播放| 欧美日产一区二区三区在线观看| 亚洲免费不卡| 亚洲欧美影音先锋| 国产伦精品一区二区三区免费| 亚洲综合99| 久久久青草青青国产亚洲免观| 一区二区在线观看av| 免费在线播放第一区高清av| 亚洲国产日韩在线一区模特| 99视频在线观看一区三区| 欧美日韩视频免费播放| 亚洲尤物视频网| 久久综合九色| 日韩香蕉视频| 国产精品一区久久久久| 久久精品国产77777蜜臀| 欧美fxxxxxx另类| 一本色道久久综合一区| 国产精品日日摸夜夜摸av| 久久精品国产视频| 亚洲国产欧美久久| 午夜精品久久久久久久99水蜜桃| 国内成+人亚洲+欧美+综合在线| 开心色5月久久精品| 一本久道久久综合狠狠爱| 久久成人久久爱| 亚洲精品在线观看免费| 国产精品久在线观看| 久久久久久午夜| 在线一区二区三区四区| 久久伊人精品天天| 亚洲午夜视频在线观看| 韩国精品在线观看| 欧美日韩一区二区三区视频| 久久精品国产亚洲精品| 亚洲精品一区二区三区四区高清| 久久九九免费| 亚洲自拍偷拍一区| 亚洲国产精品嫩草影院| 国产伦理一区| 欧美日韩在线一区二区| 久久久久久综合网天天| 中文欧美字幕免费| 亚洲国产成人精品久久| 久久综合电影一区| 性色一区二区| 亚洲视频综合| 亚洲每日更新| 亚洲国产日日夜夜| 国产一区二区剧情av在线| 欧美日精品一区视频| 男女视频一区二区| 久久久久久噜噜噜久久久精品| 亚洲线精品一区二区三区八戒| 亚洲国产婷婷| 欧美电影打屁股sp| 久久久久国产精品www| 亚洲一区www| 日韩一区二区久久| 亚洲日本成人网| 在线观看一区二区视频| 国产视频久久久久| 国产精品男gay被猛男狂揉视频| 欧美aaa级| 暖暖成人免费视频| 久久色在线播放| 亚洲欧美韩国| 亚洲午夜免费福利视频| 亚洲国产精品久久久久| 女仆av观看一区| 久久久久久91香蕉国产| 欧美一区二区三区日韩视频| 亚洲伊人久久综合| 亚洲视频欧美在线| 一区二区av在线| 99re国产精品| 9i看片成人免费高清| 亚洲精品综合精品自拍| 亚洲日本理论电影| 日韩小视频在线观看| 日韩亚洲综合在线| 夜夜爽99久久国产综合精品女不卡| 在线观看精品一区| 精品成人国产| 在线不卡中文字幕播放| 在线免费观看日本一区| 在线看国产一区| 欲香欲色天天天综合和网| 黄色成人片子| 91久久精品国产91久久性色| 91久久精品一区| 一区二区三欧美| 亚洲欧美日韩区| 欧美在线国产精品| 久久看片网站| 亚洲国产欧美一区二区三区同亚洲| 亚洲精品视频在线播放| 亚洲视频第一页| 欧美一区二区三区久久精品 | 中文高清一区| 这里只有精品视频| 亚洲一区二区三区在线看| 午夜精品偷拍| 美女黄毛**国产精品啪啪| 欧美激情中文不卡| 国产精品青草久久久久福利99| 国产模特精品视频久久久久| 狠狠狠色丁香婷婷综合激情| 亚洲欧洲日本在线| 亚洲一区二区在线| 久久人人爽人人爽| 亚洲国产精品久久久久婷婷老年 | 国产精品网站在线播放| 国内成人精品一区| 亚洲精品免费看| 欧美淫片网站| 亚洲人成在线免费观看| 午夜精品亚洲一区二区三区嫩草| 免播放器亚洲一区| 国产精品网站在线播放| 91久久国产自产拍夜夜嗨| 亚洲欧美一区二区三区在线| 美女日韩欧美| 亚洲自拍偷拍福利| 欧美成人高清| 国产又爽又黄的激情精品视频| 日韩视频免费观看高清完整版| 欧美影视一区| 亚洲激情在线观看视频免费| 午夜久久久久久| 欧美日韩美女| 亚洲第一在线综合网站| 亚洲欧美亚洲| 亚洲精品日韩综合观看成人91| 午夜久久黄色| 国产精品久久久久久久一区探花| 在线国产精品播放| 亚洲欧美日韩精品综合在线观看| 亚洲第一区在线观看| 欧美在线观看视频| 国产精品影视天天线| 亚洲男同1069视频| 日韩亚洲不卡在线| 欧美成人午夜| 一区二区三区在线观看欧美| 亚洲综合色视频| 亚洲国产一区视频| 久久最新视频| 激情五月综合色婷婷一区二区| 欧美在线观看视频一区二区三区| 亚洲伦理网站| 欧美精品 日韩| 亚洲国产成人在线视频| 久久久久久自在自线| 午夜精品久久久久久久蜜桃app | 欧美日本精品| 最新热久久免费视频| 狂野欧美激情性xxxx| 欧美一区二区三区成人| 国产麻豆视频精品| 久久精品成人一区二区三区蜜臀| 亚洲专区欧美专区| 国产精品视频xxx| 亚洲一区观看| 亚洲一本大道在线| 国产精品高清在线观看| 亚洲一区二区三区在线播放| 99精品欧美一区二区三区| 欧美日本韩国一区二区三区| 亚洲网友自拍| 中日韩美女免费视频网站在线观看| 国产精品夫妻自拍| 欧美伊人久久久久久午夜久久久久|