事務(wù)概念:
事務(wù)是1種機制,它包括了1組http://www.vxbq.cn/db/操作命令,而且將所有的命令作為1個整體向http://www.vxbq.cn/db/提交或撤消。
這組命令要末履行,要末都不履行,所以事務(wù)是1個不可分割的邏輯工作單元。
事務(wù)的特點:
1、原子性:事務(wù)作為1個完全性的操作,其各元素是不可分割的,要末全部履行,要末撤消所有的操作,事務(wù)的單元不可能出現(xiàn)部份成功的情況。
2、1致性:事務(wù)完成前后,數(shù)據(jù)必須保持完全1致的狀態(tài)。即在事務(wù)開始或完成后,http://www.vxbq.cn/db/中存儲的數(shù)據(jù)都必須保持1致的狀態(tài)。
3、隔離性:事務(wù)是相對獨立的,在1個事務(wù)對數(shù)據(jù)進行修改時,其他的事務(wù)變不可能修改。
4、持久性: 事務(wù)完成后,其對系統(tǒng)的影響是永久的。即1個事務(wù)如果提交成功,DBMS保證它對http://www.vxbq.cn/db/中數(shù)據(jù)的改變是永久性的,不會受任何系統(tǒng)故障的影響。
在T-SQL總是用以下語法來管理事務(wù):
1、開始事務(wù):BEGIN TRANSACTION
2、提交事物:COMMIT TRANSACTION
3、回滾事務(wù):ROLLBACK TRANSACTION
索引可分為3類:
1、唯1索引:不允許有兩行相同的索引值,所以唯1索引1般在主鍵或創(chuàng)建了唯1束縛的列上創(chuàng)建。當(dāng)在列上創(chuàng)建了唯1束縛后,
將自動在此列創(chuàng)建1個唯1索引。
2、聚集索引:聚集索引根據(jù)數(shù)據(jù)行的鍵值在表或視圖中排列和存儲這些數(shù)據(jù)行,即表中行的物理順序與索引順序相同。每一個表只能有1個
聚集索引,由于數(shù)據(jù)行本身只能按1個順序排序。如果表具有聚集索引,則該表稱為聚集表,表中的數(shù)據(jù)行按索引順序進行排序,如果
沒有聚集索引,則其數(shù)據(jù)行存儲在1個稱為堆的無序結(jié)構(gòu)中。
3、非聚集索引:非聚集索引具有獨立于數(shù)據(jù)行的結(jié)構(gòu)。非聚集索引包括非聚集索引鍵值,且每一個鍵值都有指向包括該鍵值的數(shù)據(jù)行的指針。
使用T-SQL創(chuàng)建索引
語法:
CREATE [UNIQUE] [CLUSTERED|NOCLUSTERED] INDEX indexname ON tablename
(字段名)
[WITH FILLFACTOR=x]
語法說明:UNIQUE指定創(chuàng)建的是唯1索引,可選項CLUSTERED、NOCLUSTERED指定是聚集索引還是非聚集索引,可選項indexname表示索引名,
索引的命名規(guī)范是“ix_表名稱_列名”。FILLFACTOR表示填充因子,用于設(shè)置索引頁數(shù)據(jù)填充的空間百分比,即每一個索引頁的剩余空間。指定范圍是
0~100,假設(shè)取值為70%,則表示還有30%的空間供以后擴大使用。0同等于100,表示頁級別幾近已填滿,但留出了1些空間,最少能在添加1個索引行。
示例以下:
USE Bank
GO
if exists(select name from sysindexes where name='index_card_no')
BEGIN
drop index ALL_PURPOSE_CARD.index_card_no
END
create nonclustered index index_card_no on ALL_PURPOSE_CARD
(CARD_NO) with fillfactor=30
GO
如上示例使用exists子查詢從系統(tǒng)視圖sysindex中檢查名為index_card_no的索引是不是存在。如果存在,則使用drop index語句刪除,然后再表ALL_PURPOSE_CARD的
CARD_NO列上創(chuàng)建非聚集索引。1般而言,創(chuàng)建索引后,不需要在查詢時顯示指定根據(jù)那個索引進行查詢,由于http://www.vxbq.cn/db/引擎會自動對查詢進行優(yōu)化。
利用索引進行查詢:
select * from ALL_PURPOSE_CARD with(index=index_card_no) where LAST_USED_DATE between '2011-07-01'and'2012⑴2⑶0'
若存在多個索引可使用WITH(INDEX=索引名)顯示指定索引進行查詢
*提示:使用索引可以加快數(shù)據(jù)檢索速度,但沒有必要為每一個列都要創(chuàng)建索引,由于索引本身也需要保護
可以根據(jù)以下標(biāo)準(zhǔn)選擇創(chuàng)建索引:1、該列用于頻繁搜索;2、該列用于對數(shù)據(jù)進行排序;3、該列中重復(fù)值少。
下面的列不合適建立索引:1、列中重復(fù)值多;2、標(biāo)中數(shù)據(jù)少(為小型的表建立索引是沒必要要的,由于檢索索引的時間可能比檢索索引的時間還要長);3、頻繁進行
插入操作的列(由于每次新添加了數(shù)據(jù),索引都需要重新保護)。
視圖:視圖是1種虛擬表,其內(nèi)容由查詢定義。
使用T-SQL語句創(chuàng)建視圖
語法:CREEATE VIEW viewname AS <select 語句>
示例:
USE Bank
GO
if exists(select * from sysobjects where name='view_credit_detail')
drop view_credit_detail
GO
create view view_credit_detail
AS SELECT ACCOUNT.ACCOUNT_NAME, CREDIT_CARD.CREDIT_CARD_NO, EXCHANGE.LOAN,EXCHANGE.EXTIME,EXCHANGE.EXADDRESS,EXCHANGE.PAY_MONTH
FROM ACCOUNT INNER JOIN CREDIT_CARD
ON ACCOUNT.ACCOUNT_ID=CREDIT_CARD.ACCOUNT_ID INNER JOIN EXCHANGE
ON CREDIT_CARD.CREDIT_CARD_ID=EXCHANGE.CREDIT_CARD_ID
GO
以上代碼表示,如果在系統(tǒng)視圖sysobject中已存在要創(chuàng)建的視圖對象,
則需要先刪除再創(chuàng)建。
下一篇 java 泛型接口