国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

數據庫快照,自定義函數與計算列的概念

2024-07-21 02:42:02
字體:
來源:轉載
供稿:網友
本文主要講述了數據庫快照,自定義函數與計算列的標準概念,詳細內容請參考下文:

1.數據庫快照

數據庫快照可以理解為保存某個數據庫在快照那一瞬間的狀態。快照和備份原理有所差異,但是功能有一點相同那就是可以將數據還原為備份的那個時刻.快照的原理是新建一個數據庫指針,在原數據庫沒有變化的情況下快照是不占用空間的,而數據庫發生了變化,那么在變化前,被修改的數據頁會先復制一份到快照文件中,然后再對原數據頁進行修改.顯然這樣做的好處就是比備份數據庫占用空間小.快照是只讀的,大家也可以直接在SQL語句中把他當數據庫用:

use snap1;--使用快照select * from table1

與此同時也可以實現數據還原功能,在導入數據的時候把數據源選成快照就可以了。

快照的建立似乎不可以在ManagementStudio通過點鼠標完成,只有通過SQL語句來做,如下例:

create database snap2on( name= DB1,filename= 'c:/abc.mdf')as snapshot of DB1

這兒snap2當然就是快照名,而name=DB1這兒的DB1是指要被快照的數據庫的數據文件邏輯名稱.

一個數據庫的邏輯名稱可以通過右鍵某數據庫->屬性,"文件"選項卡中可以看到.

filename='...'這是指快照文件放在哪個位置.最后那個DB1就是指要被快照的數據庫了.

注意:數據庫被快照以后是無法刪除的.要刪除數據庫必須先把該數據庫的所有快照刪除.

2.自定義函數

在數據庫->可編程性->函數->標量值函數中可以定義用戶自己的函數.

右鍵"新建標量值函數"后會調用新建函數的模版,按Ctrl+Shift+M可以為模版中各參數賦值.然后在Begin End中間寫入自己的SQL語句.

比如我們有一個通過生日計算年齡的函數GetAge();以下是寫出來的代碼:

CREATE FUNCTION [dbo].[GetAge] ( @birthday datetime)RETURNS intASBEGIN DECLARE @Result int DECLARE @Now datetime set @Now=getdate(); SELECT @Result= DATEDIFF(yy,@birthday,@Now) RETURN @ResultEND

在編寫完代碼后,我們直接按F5運行就可以將編寫的函數保存到數據庫中.調用自定義函數也很簡單,和一般的函數用法一樣不過就是前面必須跟架構名,也就是說要寫成dbo.GetAge,而不能直接寫GetAge。

下面讓我們新建一個查詢來測試一下:

select dbo.GetAge('1984/10/10')

返回22,函數編寫成功。

3.計算列

大家需要了解的是,在數據庫表設計的時候,有一個比較特殊的列不填寫任何設計類型,用戶不可以改變該列的值,它就是計算列。

計算列的值是通過一定的函數公式等以另一個或多個列的值為輸入值,計算出結果。

打開表或在新建表的時候,在列屬性下面就有"計算所得的列規范"項,在"公式"中填入需要的公式便完成計算列的設計.

比如我們有一個表,表中有字段Birthday(datetime類型),那么我們再新建一個列為Age,在公式中填入(isnull([dbo].[GetAge]([Birthday]),(0)))然后保存便可以了。這個時候打開表中數據就可以看到Age字段已經全部顯示出來了.

注:在計算列中是不能直接寫比較復雜的邏輯的,一般需要結合自定義函數和計算列,這樣就可以完成各種復雜的邏輯了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彭水| 沂南县| 新郑市| 辽宁省| 湖北省| 新营市| 惠安县| 洛隆县| 昌平区| 滦南县| 大渡口区| 泸西县| 工布江达县| 肃南| 济南市| 壶关县| 凌海市| 聊城市| 平罗县| 德兴市| 丰宁| 谢通门县| 柳林县| 读书| 泰宁县| 伊吾县| 彭山县| 天津市| 南城县| 元谋县| 阿图什市| 平山县| 天峻县| 开封市| 东宁县| 新乡县| 山阴县| 福建省| 柞水县| 即墨市| 修水县|