使用CREATETABLE語句宣告一個計算列(轉)
使用CREATETABLE語句宣告一個計算列(轉)[@more@] 追溯到關聯式資料庫理論的創始人E. F. Codd,就出現了這樣一個通用原則:永遠不儲存可被計算的資料。這個原則迴避了這樣一個問題:“我們應該在什麼地方計算這個計算結果?”預設的答案是“在前臺應用程式。” 假設一個表包含SubTotal 和TaxRate 兩個列。根據這一原則,“列”TaxAmount 和Total 應該是虛的。因此,將它們建立為檢視或儲存過程的一部分;或者,採用另外一種方法,將它們留給前臺應用程式來計算並將結果呈現給使用者。 該原則的一個替代方案叫做計算列(computed column)。使用這個表示式,你就可以將一個計算列宣告為 CREATE TABLE 語句的一部分,然而,它還可以下達給資料庫(要麼是透過圖形使用者介面 GUI 要麼直接透過資料定義語言 DDL 指令)。 假設一個資料庫包含有房子粉刷估計。忽略一些細節,比如房子的窗戶和門的數目(並假設所有的牆都粉刷成同樣的顏色),還有兩個問題需要解決:我們要將天花板粉刷成一樣的顏色嗎(一般答案都是“不要”),我們要粉刷幾層(一般答案都是“兩層”)? 如果不使用計算列,我們就要把這些問題推遲到以後解決,並把結果計算任務交給前臺應用程式來完成。有了計算列,我們就可以在資料庫中嵌入公式,建立一個虛列提供給任何前臺使用。 可以使用下面這樣的語句來建立表: CREATE TABLE [TestComputedColumns] ( [PK] [int] IDENTITY (1, 1) NOT NULL , [Length] [int] NOT NULL , [Width] [int] NOT NULL , [Height] [int] NOT NULL , [Coats] [int] NOT NULL CONSTRAINT [DF_TestComputedColumns_Coats] DEFAULT (2), [IncludeCeiling] [bit] NOT NULL CONSTRAINT [DF_TestComputedColumns_IncludeCeiling] DEFAULT (0), [Area] AS ((2 * ([Height] * [Length] + [Height] * [Width]) + [Length] * [Width] * [IncludeCeiling]) * [Coats]), CONSTRAINT [PK_TestComputedColumns] PRIMARY KEY CLUSTERED ( [PK] ) ON [PRIMARY] ) ON [PRIMARY] GO 你不妨使用自己的前臺程式,插入幾行資料看其執行效果。例如,使用Access 2000 及更高版本 Access,建立一個 Access 資料專案(ADP,Access Data Project)指向你的資料庫,選擇表,然後建立一個 AutoFrom(自動窗體)。輸入一兩行資料然後翻回到你所輸入的條目,你將看到計算列已經有了正確的值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10763080/viewspace-948377/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Sql語句實現不同記錄同一屬性列的差值計算SQL
- 12條語句學會oracle cbo計算(一)Oracle
- sql宣告變數,及if -else語句、while語句的用法SQL變數While
- Oracle 行轉列的sql語句OracleSQL
- bc : 一個命令列計算器命令列
- Oracle行轉列、列轉行的Sql語句總結OracleSQL
- 工具bc:一個命令列計算器命令列
- java兩個控制語句(轉)Java
- javascript使用for in語句遍歷陣列元素JavaScript陣列
- SQL查詢語句使用 (轉)SQL
- day2-計算符和if語句
- 4.3.4 使用CREATE DATABASE語句建立一個CDB:示例Database
- 從一條語句說起 談談中國的計算機程式教育問題 (轉)計算機
- Oracle一個SQL語句的處理過程(轉)OracleSQL
- javascript使用const宣告一個常量JavaScript
- 一個C語言宣告解析器的設計與實現C語言
- 行轉列計算差值的一種優化優化
- 使用USE_HASH Hint調優一個SQL語句SQL
- 一個使用SQL語句解決的小問題SQL
- 用python和計算機對話(計算機的語句)Python計算機
- 計算兩個一維陣列的卷積陣列卷積
- 轉Oracle語句優化53個規則詳解(一)Oracle優化
- 一個過濾重複資料的sql語句(轉)SQL
- 轉roger大師_計算sql語句產生的redo和undo大小SQL
- SQL語句使用總結(一)SQL
- 一個SQL語句的優化SQL優化
- 12條語句學會oracle cbo計算(七)Oracle
- 12條語句學會oracle cbo計算(五)Oracle
- 12條語句學會oracle cbo計算(四)Oracle
- 12條語句學會oracle cbo計算(三)Oracle
- 12條語句學會oracle cbo計算(二)Oracle
- 12條語句學會oracle cbo計算(十四)Oracle
- 12條語句學會oracle cbo計算(十三)Oracle
- 12條語句學會oracle cbo計算(十一)Oracle
- 12條語句學會oracle cbo計算(十)Oracle
- 12條語句學會oracle cbo計算(九)Oracle
- 12條語句學會oracle cbo計算(六)Oracle
- 12條語句學會oracle cbo計算(十二)Oracle