當前位置:首頁 » 存儲配置 » 利用存儲過程查看錶屬性

利用存儲過程查看錶屬性

發布時間: 2022-10-31 17:45:56

① 如何查看sybase存儲過程的內容

使用sybase central來查看。在表名上點右鍵,選擇屬性,點「依賴性」按鈕,在引用者頁面中,下拉列表選擇「過程」,就可以看到引用該表的所有存儲過程了。

② 關於查詢數據表屬性的sql代碼

CREATE TABLE
創建新表。

語法
CREATE TABLE
[ database_name.[ owner ] .| owner.] table_name
( { < column_definition >
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ] }

| [ { PRIMARY KEY | UNIQUE } [ ,...n ]
)

[ ON { filegroup | DEFAULT } ]
[ TEXTIMAGE_ON { filegroup | DEFAULT } ]

< column_definition > ::= { column_name data_type }
[ COLLATE < collation_name > ]
[ [ DEFAULT constant_expression ]
| [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
]
[ ROWGUIDCOL]
[ < column_constraint > ] [ ...n ]

< column_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ]
[ON {filegroup | DEFAULT} ] ]
]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
]
| CHECK [ NOT FOR REPLICATION ]
( logical_expression )
}

< table_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
| FOREIGN KEY
[ ( column [ ,...n ] ) ]
REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ]
( search_conditions )
}

參數
database_name

是要在其中創建表的資料庫名稱。database_name 必須是現有資料庫的名稱。如果不指定資料庫,database_name 默認為當前資料庫。當前連接的登錄必須在 database_name 所指定的資料庫中有關聯的現有用戶 ID,而該用戶 ID 必須具有創建表的許可權。

owner

是新表所有者的用戶 ID 名,owner 必須是 database_name 所指定的資料庫中的現有用戶 ID,owner 默認為與 database_name 所指定的資料庫中的當前連接相關聯的用戶 ID。如果 CREATE TABLE 語句由 sysadmin 固定伺服器角色成員或 database_name 所指定的資料庫中的 db_dbowner 或 db_ddladmin 固定資料庫角色成員執行,則 owner 可以指定與當前連接的登錄相關聯的用戶 ID 以外的其它用戶 ID。如果與執行 CREATE TABLE 語句的登錄相關聯的用戶 ID 僅具有創建表的許可權,則 owner 必須指定與當前登錄相關聯的用戶 ID。sysadmin 固定伺服器角色成員或別名為 dbo 用戶的登錄與用戶 ID dbo 相關聯;因此,由這些用戶創建的表的默認所有者為 dbo。不是由上述兩種角色的登錄創建的表所有者默認為與該登錄相關聯的用戶 ID。

table_name

是新表的名稱。表名必須符合標識符規則。資料庫中的 owner.table_name 組合必須唯一。table_name 最多可包含 128 個字元,但本地臨時表的表名(名稱前有一個編號符 #)最多隻能包含 116 個字元。

column_name

是表中的列名。列名必須符合標識符規則,並且在表內唯一。以 timestamp 數據類型創建的列可以省略 column_name。如果不指定 column_name,timestamp 列的名稱默認為 timestamp。

computed_column_expression

是定義計算列值的表達式。計算列是物理上並不存儲在表中的虛擬列。計算列由同一表中的其它列通過表達式計算得到。例如,計算列可以這樣定義:cost AS price * qty。表達式可以是非計算列的列名、常量、函數、變數,也可以是用一個或多個運算符連接的上述元素的任意組合。表達式不能為子查詢。

計算列可用於選擇列表、WHERE 子句、ORDER BY 子句或任何其它可使用常規表達式的位置,但下列情況除外:

計算列不能用作 DEFAULT 或 FOREIGN KEY 約束定義,也不能與 NOT NULL 約束定義一起使用。但是,如果計算列由具有確定性的表達式定義,並且索引列中允許計算結果的數據類型,則可將該列用作索引中的鍵列,或用作 PRIMARY KEY 或 UNIQUE 約束的一部分。
例如,如果表中含有整型列 a 和 b,則可以在計算列 a+b 上創建索引。但不能在計算列 a+DATEPART(dd, GETDATE()) 上創建索引,因為在以後的調用中,其值可能發生改變。

計算列不能作為 INSERT 或 UPDATE 語句的目標。

說明 表中計算列所使用的列值因行而異,因此每行的計算列值可能不同。

計算列的為空性是由 SQL Server 根據使用的表達式自動確定的。即使只有不可為空的列,大多數表達式的結果也認為是可為空的,因為可能的下溢或溢出也將生成 NULL 結果。使用 COLUMNPROPERTY 函數(AllowsNull 屬性)查看錶中任何計算列的為空性。通過指定 ISNULL(check_expression, constant),其中常量為替代任何 NULL 結果的非 NULL 值,可為空的表達式 expr 可以轉換為不可為空的表達式。

ON {filegroup | DEFAULT}

指定存儲表的文件組。如果指定 filegroup,則表將存儲在指定的文件組中。資料庫中必須存在該文件組。如果指定 DEFAULT,或者根本未指定 ON 參數,則表存儲在默認文件組中。

ON {filegroup | DEFAULT} 也可以在 PRIMARY KEY 約束或 UNIQUE 約束中指定。這些約束會創建索引。如果指定 filegroup,則索引將存儲在指定的文件組中。如果指定 DEFAULT,則索引將存儲在默認文件組中。如果約束中沒有指定文件組,則索引將與表存儲在同一文件組中。如果 PRIMARY KEY 約束或 UNIQUE 約束創建聚集索引,則表的數據頁將與索引存儲在同一文件組中。

說明 在 ON {filegroup | DEFAULT} 和 TEXTIMAGE_ON {filegroup | DEFAULT} 的上下文中,DEFAULT 並不是關鍵字。DEFAULT 是默認文件組的標識符並需對其進行定界,如 ON "DEFAULT"、ON [DEFAULT] 和 TEXTIMAGE_ON "DEFAULT" 或 TEXTIMAGE_ON [DEFAULT]。

TEXTIMAGE_ON

是表示 text、ntext 和 image 列存儲在指定文件組中的關鍵字。如果表中沒有 text、ntext 或 image 列,則不能使用 TEXTIMAGE ON。如果沒有指定 TEXTIMAGE_ON,則 text、ntext 和 image 列將與表存儲在同一文件組中。

data_type

指定列的數據類型。可以是系統數據類型或用戶定義數據類型。用戶定義數據類型必須先用 sp_addtype 創建,然後才能在表定義中使用。

在 CREATE TABLE 語句中,用戶定義數據類型的 NULL/NOT NULL 賦值可被替代。但長度標准不能更改;不能在 CREATE TABLE 語句中指定用戶定義數據類型的長度。

DEFAULT

如果在插入過程中未顯式提供值,則指定為列提供的值。DEFAULT 定義可適用於除定義為 timestamp 或帶 IDENTITY 屬性的列以外的任何列。除去表時,將刪除 DEFAULT 定義。只有常量值(如字元串)、系統函數(如 SYSTEM_USER())或 NULL 可用作默認值。為保持與 SQL Server 早期版本的兼容,可以給 DEFAULT 指派約束名。

constant_expression

是用作列的默認值的常量、NULL 或系統函數。

IDENTITY

表示新列是標識列。當向表中添加新行時,Microsoft® SQL Server™ 將為該標識列提供一個唯一的、遞增的值。標識列通常與 PRIMARY KEY 約束一起用作表的唯一行標識符。可以將 IDENTITY 屬性指派給 tinyint、smallint、int、bigint、decimal(p,0) 或 numeric(p,0) 列。對於每個表只能創建一個標識列。不能對標識列使用綁定默認值和 DEFAULT 約束。必須同時指定種子和增量,或者二者都不指定。如果二者都未指定,則取默認值 (1,1)。

seed

是裝入表的第一行所使用的值。

increment

是添加到前一行的標識值的增量值。

NOT FOR REPLICATION

表示當復制登錄(如 sqlrepl)向表中插入數據時,不強制 IDENTITY 屬性。復制的行必須保留發布資料庫中所賦予的鍵值;NOT FOR REPLICATION 子句確保不向復制進程所插入的行賦予新的標識值。其它登錄所插入的行仍然具有以通常的方式創建的新標識值。建議同時使用具有 NOT FOR REPLICATION 的 CHECK 約束,以確保賦予的標識值處於當前資料庫所需的范圍內。

ROWGUIDCOL

表示新列是行的全局唯一標識符列。對於每個表只能指派一個 uniqueidentifier 列作為 ROWGUIDCOL 列。ROWGUIDCOL 屬性只能指派給 uniqueidentifier 列。如果資料庫兼容級別小於或等於 65,則 ROWGUIDCOL 關鍵字無效。有關更多信息,請參見 sp_dbcmptlevel。

ROWGUIDCOL 屬性並不強制列中所存儲值的唯一性。該屬性也不會為插入到表中的新行自動生成值。若要為每列生成唯一值,那麼或者在 INSERT 語句中使用 NEWID 函數,或者將 NEWID 函數指定為該列的默認值。

collation_name

指定列的排序規則。排序規則名稱既可以是 Windows 排序規則名稱,也可以是 SQL 排序規則名稱。collation_name 僅適用於數據類型為 char、varchar、text、nchar、nvarchar 及 ntext 的列。如果沒有指定該參數,那麼如果列的數據類型是用戶定義的,則該列的排序規則就是用戶定義數據類型的排序規則,否則就是資料庫的默認排序規則。

有關 Windows 和 SQL 排序規則名稱的更多信息,請參見 COLLATE。

CONSTRAINT

是可選關鍵字,表示 PRIMARY KEY、NOT NULL、UNIQUE、FOREIGN KEY 或 CHECK 約束定義的開始。約束是特殊屬性,用於強制數據完整性並可以為表及其列創建索引。

constrain_name

是約束的名稱。約束名在資料庫內必須是唯一的。

NULL | NOT NULL

是確定列中是否允許空值的關鍵字。從嚴格意義上講,NULL 不是約束,但可以使用與指定 NOT NULL 同樣的方法指定。

PRIMARY KEY

是通過唯一索引對給定的一列或多列強制實體完整性的約束。對於每個表只能創建一個 PRIMARY KEY 約束。

UNIQUE

是通過唯一索引為給定的一列或多列提供實體完整性的約束。一個表可以有多個 UNIQUE 約束。

CLUSTERED | NONCLUSTERED

是表示為 PRIMARY KEY 或 UNIQUE 約束創建聚集或非聚集索引的關鍵字。PRIMARY KEY 約束默認為 CLUSTERED,UNIQUE 約束默認為 NONCLUSTERED。

在 CREATE TABLE 語句中只能為一個約束指定 CLUSTERED。如果在為 UNIQUE 約束指定 CLUSTERED 的同時又指定了 PRIMARY KEY 約束,則 PRIMARY KEY 將默認為 NONCLUSTERED。

[ WITH FILLFACTOR = fillfactor ]

指定 SQL Server 存儲索引數據時每個索引頁的充滿程度。用戶指定的 fillfactor 取值范圍從 1 到 100。如果沒有指定 fillfactor,則默認為 0。創建索引時,fillfactor 的值越低,不必分配新空間即可由新索引項使用的空間就越多。

FOREIGN KEY...REFERENCES

是為列中的數據提供引用完整性的約束。FOREIGN KEY 約束要求列中的每個值在被引用表中對應的被引用列中都存在。FOREIGN KEY 約束只能引用被引用表中為 PRIMARY KEY 或 UNIQUE 約束的列或被引用表中在 UNIQUE INDEX 內引用的列。

ref_table

是 FOREIGN KEY 約束所引用的表名。

(ref_column[,...n])

是 FOREIGN KEY 約束所引用的表中的一列或多列。

ON DELETE {CASCADE | NO ACTION}

指定當要創建的表中的行具有引用關系,並且從父表中刪除該行所引用的行時,要對該行採取的操作。默認設置為 NO ACTION。

如果指定 CASCADE,則從父表中刪除被引用行時,也將從引用表中刪除引用行。如果指定 NO ACTION,SQL Server 將產生一個錯誤並回滾父表中的行刪除操作。

例如,在 Northwind 資料庫中,Orders 表和 Customers 表之間有引用關系。Orders.CustomerID 外鍵引用 Customers.CustomerID 主鍵。

如果對 Customers 表的某行執行 DELETE 語句,並且為 Orders.CustomerID 指定 ON DELETE CASCADE 操作,則 SQL Server 將在 Orders 表中檢查是否有與被刪除的行相關的一行或多行。如果存在相關行,則 Orders 表中的相關行將隨 Customers 表中的被引用行一同刪除。

反之,如果指定 NO ACTION,若在 Orders 表中至少有一行引用 Customers 表中要刪除的行,則 SQL Server 將產生一個錯誤並回滾 Customers 表中的刪除操作。

ON UPDATE {CASCADE | NO ACTION}

指定當要創建的表中的行具有引用關系,並且在父表中更新該行所引用的行時,要對該行採取的操作。默認設置為 NO ACTION。

如果指定 CASCADE,則在父表中更新被引用行時,也將在引用表中更新引用行。如果指定 NO ACTION,SQL Server 將產生一個錯誤並回滾父表中的行更新操作。

例如,在 Northwind 資料庫中,Orders 表和 Customers 表之間有引用關系:Orders.CustomerID 外鍵引用 Customers.CustomerID 主鍵。

如果對 Customers 表的某行執行 UPDATE 語句,並且為 Orders.CustomerID 指定 ON UPDATE CASCADE 操作,則 SQL Server 將在 Orders 表中檢查是否有與被更新行相關的一行或多行。如果存在相關行,則 Orders 表中的相關行將隨 Customers 表中的被引用行一同更新。

反之,如果指定 NO ACTION,若在 Orders 表中至少有一行引用 Customers 行,則 SQL Server 將產生一個錯誤並回滾對 Customers 行的更新操作。

CHECK

是通過限制可輸入到一列或多列中的可能值強制域完整性的約束。

NOT FOR REPLICATION

是用於防止在復制所使用的分發過程中強制 CHECK 約束的關鍵字。當表是復制發布的訂戶時,請不要直接更新訂閱表,而要更新發布表,然後讓復制進程將數據分發回訂閱表。可以在訂閱表上定義 CHECK 約束,以防用戶修改訂閱表。但是如果不使用 NOT FOR REPLICATION 子句,CHECK 約束同樣會防止復制進程將修改從發布表分發給訂閱表。NOT FOR REPLICATION 子句表示對用戶的修改(而不是對復制進程)強加約束。

NOT FOR REPLICATION CHECK 約束適用於被更新記錄的前像和後像,以防在復制范圍中添加記錄或從復制范圍中刪除記錄。將檢查所有刪除和插入操作;如果操作在復制范圍內,則拒絕執行該操作。

如果對標識符列使用此約束,則當復制用戶更新標識列時,SQL Server 將允許不必重新計算表標識列的種子值。

logical_expression

是返回 TRUE 或 FALSE 的邏輯表達式。

column

是用括弧括起來的一列或多列,在表約束中表示這些列用在約束定義中。

[ASC | DESC]

指定加入到表約束中的一列或多列的排序次序。默認設置為 ASC。

n

是表示前面的項可重復 n 次的佔位符。

注釋
SQL Server 的每個資料庫最多可存儲 20 億個表,每個表可以有 1024 列。表的行數及總大小僅受可用存儲空間的限制。每行最多可以存儲 8,060 位元組。如果創建具有 varchar、nvarchar 或 varbinary 列的表,並且列的位元組總數超過 8,060 位元組,雖然仍可以創建此表,但會出現警告信息。如果試圖插入超過 8,060 位元組的行或對行進行更新以至位元組總數超過 8,060,將出現錯誤信息並且語句執行失敗。

包含 sql_variant 列的 CREATE TABLE 語句可以生成下列警告:

The total row size (xx) for table 'yy' exceeds the maximum number of bytes per row (8060). Rows that exceed the maximum number of bytes will not be added.
出現該警告是因為 sql_variant 的最大長度只能為 8016 位元組。當某個 sql_variant 列包含與最大長度接近的值時,它可以超過行的最大大小限制。

每個表最多可以有 249 個非聚集索引和一個聚集索引。其中包括所有為支持表中所定義的 PRIMARY KEY 和 UNIQUE 約束而生成的索引。

SQL Server 在列定義中並不強制以特定的順序指定 DEFAULT、IDENTITY、ROWGUIDCOL 或列約束。

臨時表
可以創建本地和全局臨時表。本地臨時表僅在當前會話中可見;全局臨時表在所有會話中都可見。

本地臨時表的名稱前面有一個編號符 (#table_name),而全局臨時表的名稱前面有兩個編號符 (##table_name)。

SQL 語句使用 CREATE TABLE 語句中為 table_name 指定的名稱引用臨時表:

CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)
INSERT INTO #MyTempTable VALUES (1)

如果本地臨時表由存儲過程創建或由多個用戶同時執行的應用程序創建,則 SQL Server 必須能夠區分由不同用戶創建的表。為此,SQL Server 在內部為每個本地臨時表的表名追加一個數字後綴。存儲在 tempdb 資料庫的 sysobjects 表中的臨時表,其全名由 CREATE TABLE 語句中指定的表名和系統生成的數字後綴組成。為了允許追加後綴,為本地臨時表指定的表名 table_name 不能超過 116 個字元。

除非使用 DROP TABLE 語句顯式除去臨時表,否則臨時表將在退出其作用域時由系統自動除去:

當存儲過程完成時,將自動除去在存儲過程中創建的本地臨時表。由創建表的存儲過程執行的所有嵌套存儲過程都可以引用此表。但調用創建此表的存儲過程的進程無法引用此表。

所有其它本地臨時表在當前會話結束時自動除去。

全局臨時表在創建此表的會話結束且其它任務停止對其引用時自動除去。任務與表之間的關聯只在單個 Transact-SQL 語句的生存周期內保持。換言之,當創建全局臨時表的會話結束時,最後一條引用此表的 Transact-SQL 語句完成後,將自動除去此表。
在存儲過程或觸發器中創建的本地臨時表與在調用存儲過程或觸發器之前創建的同名臨時表不同。如果查詢引用臨時表,而同時有兩個同名的臨時表,則不定義針對哪個表解析該查詢。嵌套存儲過程同樣可以創建與調用它的存儲過程所創建的臨時表同名的臨時表。嵌套存儲過程中對表名的所有引用都被解釋為是針對該嵌套過程所創建的表,例如:

CREATE PROCEDURE Test2
AS
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (2)
SELECT Test2Col = x FROM #t
GO
CREATE PROCEDURE Test1
AS
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (1)
SELECT Test1Col = x FROM #t
EXEC Test2
GO
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (99)
GO
EXEC Test1
GO

下面是結果集:

(1 row(s) affected)

Test1Col
-----------
1

(1 row(s) affected)

Test2Col
-----------
2

當創建本地或全局臨時表時,CREATE TABLE 語法支持除 FOREIGN KEY 約束以外的其它所有約束定義。如果在臨時表中指定 FOREIGN KEY 約束,該語句將返回警告信息,指出此約束已被忽略,表仍會創建,但不具有 FOREIGN KEY 約束。在 FOREIGN KEY 約束中不能引用臨時表。

考慮使用表變數而不使用臨時表。當需要在臨時表上顯式地創建索引時,或多個存儲過程或函數需要使用表值時,臨時表很有用。通常,表變數提供更有效的查詢處理。有關更多信息,請參見 table。

PRIMARY KEY 約束
一個表只能包含一個 PRIMARY KEY 約束。

由 PRIMARY KEY 約束生成的索引不能使表中的非聚集索引超過 249 個,聚集索引超過 1 個。

如果沒有在 PRIMARY KEY 約束中指定 CLUSTERED 或 NONCLUSTERED,並且沒有為 UNIQUE 約束指定聚集索引,則將對該 PRIMARY KEY 約束使用 CLUSTERED。

在 PRIMARY KEY 約束中定義的所有列都必須定義為 NOT NULL。如果沒有指定為空性,加入 PRIMARY KEY 約束的所有列的為空性都將設置為 NOT NULL。
UNIQUE 約束
如果 UNIQUE 約束中沒有指定 CLUSTERED 或 NONCLUSTERED,則默認為 NONCLUSTERED。

每個 UNIQUE 約束都生成一個索引。由 UNIQUE 約束生成的索引不能使表中的非聚集索引超過 249 個,聚集索引超過 1 個。
FOREIGN KEY 約束
如果在 FOREIGN KEY 約束的列中輸入非 NULL 值,則此值必須在被引用的列中存在,否則將返回違反外鍵約束的錯誤信息。

FOREIGN KEY 約束應用於前面所講的列,除非指定了源列。

FOREIGN KEY 約束僅能引用位於同一伺服器上的同一資料庫中的表。資料庫間的引用完整性必須通過觸發器實現。有關更多信息,請參見 CREATE TRIGGER。

FOREIGN KEY 可以引用同一表中的其它列(自引用)。

列級 FOREIGN KEY 約束的 REFERENCES 子句僅能列出一個引用列,且該列必須與定義約束的列具有相同的數據類型。

表級 FOREIGN KEY 約束的 REFERENCES 子句中引用列的數目必須與約束列列表中的列數相同。每個引用列的數據類型也必須與列表中相應列的數據類型相同。

如果 timestamp 類型的列是外鍵或被引用鍵的一部分,則不能指定 CASCADE。

可以在相互間具有引用關系的表上組合使用 CASCADE 和 NO ACTION。如果 SQL Server 遇到 NO ACTION,將終止執行語句並回滾相關的 CASCADE 操作。當 DELETE 語句導致 CASCADE 和 NO ACTION 組合操作時,在 SQL Server 檢查 NO ACTION 操作之前將執行所有 CASCADE 操作。

一個表最多可包含 253 個 FOREIGN KEY 約束。

對於臨時表不強制 FOREIGN KEY 約束。

每個表在其 FOREIGN KEY 約束中最多可以引用 253 個不同的表。

FOREIGN KEY 約束只能引用被引用表的 PRIMARY KEY 或 UNIQUE 約束中的列或被引用表上 UNIQUE INDEX 中的列。
DEFAULT 定義
每列只能有一個 DEFAULT 定義。

DEFAULT 定義可以包含常量值、函數、SQL-92 niladic 函數或 NULL。下表顯示 niladic 函數及其在執行 INSERT 語句時返回的默認值。 SQL-92 niladic 函數 返回的值
CURRENT_TIMESTAMP 當前日期和時間。
CURRENT_USER 執行插入操作的用戶名。
SESSION_USER 執行插入操作的用戶名。
SYSTEM_USER 執行插入操作的用戶名。
USER 執行插入操作的用戶名。

DEFAULT 定義中的 constant_expression 不能引用表中的其它列,也不能引用其它表、視圖或存儲過程。

不能在數據類型為 timestamp 的列或具有 IDENTITY 屬性的列上創建 DEFAULT 定義。

如果用戶定義數據類型綁定到默認對象,則不能在該用戶定義數據類型的列上創建 DEFAULT 定義。
CHECK 約束
列可以有任意多個 CHECK 約束,並且約束條件中可以包含用 AND 和 OR 組合起來的多個邏輯表達式。列上的多個 CHECK 約束按創建順序進行驗證。

搜索條件必須取值為布爾表達式,並且不能引用其它表。

列級 CHECK 約束只能引用被約束的列,表級 CHECK 約束只能引用同一表中的列。
當執行 INSERT 和 DELETE 語句時,CHECK CONSTRAINTS 和規則具有相同的數據驗證功能。

當列上存在規則和一個或多個 CHECK 約束時,將驗證所有限制。
其它約束信息
為約束創建的索引不能用 DROP INDEX 語句除去;必須用 ALTER TABLE 語句除去約束。可以用 DBCC DBREINDEX 語句重建為約束創建的並由其使用的索引。

約束的名稱必須符合標識符規則,但其名稱的首字元不能為 #。如果沒有提供 constraint_name,則使用系統生成的名稱。約束名將出現在所有與違反約束有關的錯誤信息中。

當 INSERT、UPDATE 或 DELETE 語句違反約束時,將終止執行該語句。但將繼續處理事務(如果此語句為顯式事務的組成部分)。可以通過檢查系統函數 @@ERROR,在事務定義中使用 ROLLBACK TRANSACTION 語句。
如果某個表具有 FOREIGN KEY 或 CHECK CONSTRAINTS 及觸發器,則將在觸發器執行前先檢查約束條件。

若要獲得關於表及其列的報表,請使用 sp_help 或 sp_helpconstraint。若要重命名表,請使用 sp_rename。若要獲得與表相關的視圖和存儲過程的報表,請使用 sp_depends。

通常情況下,為表和索引分配空間時,每次以一個擴展盤區為增量單位。當創建表或索引時,首先從混合擴展盤區為其分配頁,直到它具有足夠的頁填滿一個統一擴展盤區。當有足夠的頁填滿統一擴展盤區後,每當當前分配的擴展盤區填滿時,將再為其分配另一個擴展盤區。若要獲得關於由表分配和佔用的空間量的報表,請執行 sp_spaceused。

表定義中的為空性規則
列的為空性規則決定該列中是否允許以空值 (NULL) 作為其數據。NULL 不是零或空白:它表示沒有輸入任何內容,或提供了一個顯式 NULL 值,通常表示該值未知或不適用。

當用 CREATE TABLE 或 ALTER TABLE 語句創建或更改表時,資料庫或會話設置會影響且可能替代列定義中數據類型的為空性。建議始終將列顯式定義為非計算列的 NULL 或 NOT NULL,如果使用用戶定義數據類型,則建議允許該列使用此數據類型的默認為空性。

在沒有顯式指定時,列的為空性遵循以下規則:

如果該列以用戶定義數據類型定義:
SQL Server 使用在創建數據類型時指定的為空性。使用 sp_help 可獲得該數據類型的默認為空性。
如果該

③ 寫了一個oracle 存儲過程,有許多表,我怎麼知道關聯的是哪個表啊,很多表裡面得屬性有交叉

這個很容易判斷的,首先如果有E-R圖你可以對照它看存儲過程,一般看on後面的條件,比如on A.ID= B.ID 這很明顯是A 和B關聯了,復雜點的 select * from A join B on A.id = B.id join C on B.name=C.name 我想這個你應該會看懂了把

④ 如何利用SQL語句查看某一個表全部列或單個列的屬性

exec sp_columns 表名 --返回某個表列的信息

exec sp_help 表名 --查看某個表的所有信息

這些是系統的存儲過程

例如:

用SQL語句查詢一個數據表所有欄位的類型可以參考下面的代碼:

SELECT

name AS column_name,TYPE_NAME(system_type_id) AS column_type,

(4)利用存儲過程查看錶屬性擴展閱讀:

更新:update table1 set field1=value1 where 范圍

查找:select * from table1 where field1 like 』%value1%』 (所有包含『value1』這個模式的字元串)

排序:select * from table1 order by field1,field2 [desc]

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

⑤ 2005資料庫的存儲過程

金橋書城
http://book.jqcq.com/advanced_search_result.php?keywords=sql%202000
http://book.jqcq.com/proct/800530.html

軟體入門與提高叢書——SQL Server 2000中文版入門與提高

出版/發行時間: 2005-01-01
出版社: 清華大學出版社
作者: 周緒等
ISBM: 7-302-04468-6
版次: 1
開本: 16開
頁數: 450

本書針對Microsoft公司最新推出的大型關系資料庫管理系統SQL Server 2000編寫,循序漸進地介紹了從入門到深入掌握SQL Server 2000所需的各方面知識。內容包括SQL Server 2000的新特點;安裝、配置SQL Server 2000的方法;SQL Server 2000日常管理方法和技巧;Transact-SQL語言程序設計;存儲過程,觸發器等資料庫對象的設計方法和使用策略;SQL Server 2000分布式管理、自動管理和數據輿服務等高級應用;應用高級程序開發語言開發基於SQL Server 2000的應用程序;使用Web向導快速生成HTML頁面。
本書介紹了大量SQL Server的使用經驗,對使用中的重點、難點進行了專門的講解,是一本有效實用的入門指南。本書的提高部分,內容有一定深度,對有SQL Server使用基礎但希望進一步提高的讀者來說也有一定幫助。

目錄: 第1章 SQL Server 2000概述

1.1 SQL Server的發展簡史
1.2 SQL Server 2000的特點
1.3 SQL Server 2000的體系結構
1.4 SQL Server 2000的新特點
1.5 本章小結

第2章 關系資料庫基礎

2.1 關系資料庫的基本概念
2.2 SQL Server的資料庫對象
2.3 SQL和Transact-SQL
2.4 本章小結

第3章 安裝SQL Server 2000

3.1 SQL Server實例
3.2 安裝SQL Server 2000所需的軟硬體配置
3.3 安裝SQL Server 2000必須注意的若幹事項
3.4 遠程安裝SQL Server 2000
3.5 本地安裝SQL Server 2000軟體
3.6 升級到SQL Server 2000
3.7 企業管理器介紹
3.8 本章小結

第4章 SQL Server的系統組成

4.1 SQL Server 2000的系統資料庫
4.2 SQL Server 2000的系統表
4.3 SQL Server 2000的系統存儲過程
4.4 SQL Server 2000的示例資料庫
4.5 本章小結

第5章 SQL Server伺服器管理與使用

5.1 管理SQL Server伺服器組
5.2 SQL Server伺服器的連接和注冊
5.3 注冊SQL Server伺服器的注意事項
5.4 配置SQL Server伺服器
5.5 啟動和關閉SQL Server服務
5.6 本章小結

第6章 查詢分析器使用方法

6.1 登錄到伺服器
6.2 查詢分析器的菜單命令
6.3 配置查詢分析器
6.4 對象瀏覽器的使用
6.5 模板的使用
6.6 本章小結

第7章 SQL Server資料庫管理

7.1 文件和文件組
7.2 創建資料庫
7.3 查看資料庫的信息
7.4 管理資料庫
7.5 刪除SQL Server資料庫
7.6 資料庫的存儲結構
7.7 本章小結

第8章 SQL Server的命名規則

8.1 SQL Server的標識符
8.2 對象命名規則
8.3 關於實例的命名習慣
8.4 本章小結

第9章 表的管理和使用

9.1 創建表
9.2 刪除表格
9.3 修改表格定義
9.4 查看錶屬性
9.5 表格重命名
9.6 索引
9.7 本章小結

第10章 Transact-SQL查詢基礎

10.1 簡單的SELECT查詢
10.2 使用TOP關鍵字
10.3 使用DISTINCT關鍵字
10.4 使用計算列
10.5 操作查詢的列名
10.6 使用WHERE子句
10.7 使用LIKE子句進行模糊查詢
10.8 使用ORDER BY給數據排序
10.9 本章小結

第11章 編輯維護表格數據

11.1 使用INSERT添加表格數據
11.2 使用RPDATE實現數據的修改
11.3 使用DELETE刪除表中數據
11.4 使用TRUNCATE TABLE清空表格
11.5 使用企業管理器管理表格數據
11.6 本章小結

第12章 視圖

12.1 視圖的優點
12.2 視圖的創建與刪除
12.3 修改視圖的定義
12.4 瀏覽視圖信息
12.5 使用視圖來簡化查詢
12.6 在視圖上使用INSERT語句
12.7 使用UPDATE更新視圖中的數據
12.8 刪除視圖中的數據
12.9 WITH CHECK OPTION的視圖
12.10 對視圖進行加密
12.11 使用視圖加強數據安全
12.12 本章小結

第13章 SQL Server的數據類型

13.1 3種新的數據類型
13.2 整數數據類型
13.3 貨幣數據類型
13.4 數字數據類型
13.5 浮點數據類型
13.6 日期/時間數據類型
13.7 字元數據類型
13.8 二進制數據類型
13.9 統一碼數據類型
13.10 圖像、文本數據的使用
13.11 sql_variant數據類型及使用
13.12 table數據類型及使用
13.13 用戶自定義數據類型及使用
13.14 本章小結

第14章 Transact-SQL高級查詢

14.1 多表查詢和笛卡兒乘積
14.2 使用表格別名
14.3 使用UNION子句
14.4 使用統計函數
14.5 使用GROUP BY子句
14.6 使用COMPUTE和COMPUTE BY子句
14.7 使用嵌套查詢
14.8 本章小結

第15章 設計數據完整性

15.1 數據完整性基礎
15.2 使用約束實施數據完整性
15.3 使用規則
15.4 使用默認值
15.5 使用IDENTITY列
15.6 本章小結

第16章 SQL Server編程結構

16.1 程序注釋語句
16.2 批處理
16.3 局部變數
16.4 全局變數
16.5 IF…ELSE條件判斷結構
16.6 BEGIN…END語句塊
16.7 WHILE循壞結構
16.8 CASE
16.9 RETURN
16.10 游標
16.11 事務
16.12 本章小結

第17章 SQL Server函數

17.1 SQL Server的數學函數
17.2 SQL Server的字元串函數
17.3 SQL Server的日期函數
17.4 SQL Server的系統函數
17.5 其他常用函數
17.6 設置查詢屬性
17.7 用戶自定義函數
17.8 本章小結

第18章 存儲過程與觸發器

18.1 存儲過程概述
18.2 存儲過程的使用和管理
18.3 觸發器概述
18.4 觸發器使用與管理
18.5 觸發器的特殊功能
18.6 利用存儲過程和觸發器維護數據完整性
18.7 本章小結

第19章 管理SQL Server的安全性

19.1 SQL Server的安全性機制
19.2 SQL Server標准登錄模式
19.3 SQL Server集成登錄模式
19.4 使用企業管理器建立登錄賬戶
19.5 SQL Server資料庫安全性
19.6 角色
19.7 許可權
19.8 本章小結

第20章 備份與恢復

20.1 資料庫備份概念
20.2 資料庫備份策略與規劃
20.3 執行數據備份與恢復
20.4 本章小結

第21章 SQL Server的數據傳輸服務

21.1 DTS概述
21.2 數據轉換服務導入向導和數據轉換服務導出向導
21.3 使用DTS設計器
21.4 本章小結

第22章 SQL Server自動化管理

22.1 SQL Server自動化管理基礎
22.2 使用SQL郵件
22.3 創建操作員
22.4 設置警報
22.5 創建作業
22.6 本章小結

第23章 SQL Server分布式數據管理

23.1 復制技術概述
23.2 配置出版伺服器
23.3 創建出版物
23.4 設計訂閱
23.5 本章小結

第24章 通過Web助手發布數據

24.1 SQL Server與Web頁的交互
24.2 使用SQL Server Web助手建立Web頁
24.3 本章小結

第25章 SQL Server 2000應用編程

25.1 SQL Server 2000應用編程概述
25.2 ADO概述
25.3 SQL Server 2000與ADO編程舉例
25.4 SQL-DMO概述
25.5 使用SQL-DMO對象
25.6 SQL-DMO應用舉例
25.7 本章小結

⑥ 如何查詢出一個存儲過程中所用到表所對應的欄位 請各路高手指點。

樓主水平很高啊,單從問題本身來看涉及很多底層的操作啊,首先得遍歷所有視頻設備,然後獲取設備名,最後再進行捕獲,如果這時候拔掉攝像頭,程序肯定出錯啊,所以應該找到某個函數里的一個事件來引發攝像頭已經移出,然後在你的程序里捕獲此事件進行處理,結束視頻捕獲,並等待另一個新的攝像頭接入事件,才能完成預定功能。想想都很難,祝你成功。

⑦ 如何用sql的存儲過程或者sql來查詢一個表中不同屬性的欄位個數

如何用sql的存儲過程或者sql來查詢一個表中不同屬性的欄位個數
用group by就可以解決。
比如表名為test,數據如下
id grade
1 10
1 20
2 40
2 30

⑧ 如果希望查看資料庫的屬性,可以使用的系統存儲過程是哪個

在網路上直接搜索「SqlServer系統存儲過程」,呵呵呵~
sp_databases
列出伺服器上的所有資料庫

sp_server_info
列出伺服器信息,如字元集,版本和排列順序

sp_stored_proceres
列出當前環境中的所有存儲過程

sp_tables
列出當前環境中所有可以查詢的對象

sp_password
添加或修改登錄帳戶的密碼

sp_configure
顯示(不帶選項)或更改(帶選項)當前伺服器的全局配置設置

sp_help
返回表的列名,數據類型,約束類型等

sp_helptext
顯示規則,默認值,未加密的存儲過程,用戶定義的函數,觸發器或視圖的實際文本

sp_helpfile
查看當前資料庫信息

sp_dboption
顯示或更改資料庫選項

sp_detach_db
分離資料庫

sp_attach_db
附加資料庫

sp_admpdevice
添加設備

sp_dropdevice
刪除設備

sp_pkeys
查看主鍵

sp_fkeys
查看外鍵

sp_helpdb
查看指定資料庫相關文件信息

sp_addtype
自建數據類型

sp_droptype
刪除自建數據類型

sp_rename
重新命名資料庫

sp_executesql
執行SQL語句

sp_addlogin
添加登陸

sp_droplogin
刪除登錄

sp_grantdbaccess
把用戶映射到登錄,即添加一個資料庫安全帳戶並授予塔訪問許可權

sp_revokedbaccess
撤銷用戶的數據訪問權,即從資料庫中刪除一個安全帳戶

sp_addrole
添加角色

sp_addrolemember
向角色中添加成員,使其成為資料庫角色的成員

sp_addsrvrolemember
修改登錄使其成為固定伺服器角色的成員

sp_grantlogin
允許使用組帳戶或系統用戶使用Windows身份驗證連接到SQL

sp_defaultdb
修改一個登錄的默認資料庫

sp_helpindex
用於查看錶的索引

sp_cursoropen
定義與游標和游標選項相關的SQL語句,然後生成游標

sp_cursorfetch
從游標中提取一行或多行

sp_cursorclose
關閉並釋放游標

sp_cursoroption
設置各種游標選項

sp_cursor
用於請求定位更新

sp_cursorprepare
把與游標有關的T-SQL語句或批處理編譯成執行計劃,但並不創建游標

sp_cursorexecute
從由sp_cursorprepare創建的執行計劃中創建並填充游標

sp_cursorunprepare
廢棄由sp_cursorprepare生成的執行計劃

sp_settriggerorder
指定第一個或最後一個激發的、與表關聯的AFTER 觸發器。在第一個和最後一個觸發器之間激發的AFTER 觸發器將按未定義的順序執行

sp_start_job
立即啟動自動化任務

sp_stop_job
停止正在執行的自動化任務

⑨ sql中創建存儲過程根據參數查詢並顯示表中數據

創建一個存儲過程 傳學號,然後 存儲過程裡面 寫一個select 按學號查詢的語句就好了。
create porcere 存儲過程名
@學號 varchar(30)

as
begin
select * from student where 學號=@學號

end

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:333
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:374
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:610
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:31
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:940
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:737
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:801
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:509
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:370