在使用數據庫的過程中,接觸最多的就是數據庫中的表。表是數據存儲的地方。是數據庫中最重要的部分,管理好表也就管理好了數據庫。本章將介紹如何創建和管理數據庫表。
表是由行和列組成的。創建表的過程主要就是定義表的列的過程,為此,應先了解表的列的屬性。
7.1.1 列的屬性
表的列名在同一個表中具有惟一性,同一列的數據屬於同一種數據類型。除了用列名和數據類型來指定列的屬性外,還可以定義其它屬性:NULL 或NOT NULL 屬性和IDENTITY 屬性。
(1) NULL 或NOT NULL
如果表的某一列被指定具有NULL 屬性,那麼就允許在插入數據時省略該列的值。反之,如果表的某一列被指定具有NOT NULL 屬性,那麼就不允許在沒有指定列缺省值的情況下插入省略該列值的數據行。在SQL Server 中,列的缺省屬性是NOT NULL。要設置缺省屬性為NULL 或NOT NULL,可以在Enterprise Manager 中修改數據庫屬性選項中的“ANSI null default”為真或假。也可以使用如下兩種語句來設定:
- set ansi_null_dflt_on 或set ansi_null_dflt_off;
- sp_dboption database_name, ‘ANSI null default’, true/false。
(2) IDENTITY
IDENTITY 屬性可以使表的列包含系統自動生成的數字。這種數字在表中可以惟一標識表的每一行,即表中的每一行數據在指定為IDENTITY 屬性的列上的數字均不相同。指定了IDENTITY 屬性的列稱為IDENTITY 列。當用IDENTITY 屬性定義一個列時,可以指定一個初始值和一個增量。插入數據到含有IDENTITY 列的表中時,初始值在插入第一行數據時使用,以後就由SQL Server 根據上一次使用的IDENTITY 值加上增量得到新的IDENTITY值。如果不指定初始值和增量值,則其缺省值均為1。
IDENTITY 屬性適用於INT、 SMALLINT、 TINYINT、 DECIMAL (P,0)、N::::::?
UMERIC (P,0)數據類型的列。
注意:一個列不能同時具有NULL屬性和IDENTITY屬性,只能二者選其一。
7.1.2 用CREATE TABLE 命令創建表
用CREATE TABLE 命令創建表快捷、明了。其語法如下:
CREATE TABLE [database_name.[owner].| owner.] table_name
( {
| column_name AS computed_column_expression |
} [,...n] )
[ON {filegroup | DEFAULT} ]
[TEXTIMAGE_ON {filegroup | DEFAULT} ]
::= { column_name data_type }
[ [ DEFAULT constant_expression ]
| [ IDENTITY [(seed, increment ) [NOT FOR REPLICATION] ] ] ]
[ ROWGUIDCOL ]
[ COLLATE < collation_name > ]
[ ] [ ...n]
各參數說明如下:
- database_name
指定新建的表屬於哪個數據庫。如果不指定數據庫名,就會將所創建的表存放在當前數據庫中。
- owner
指定數據庫所有者的用戶名。