啪啪拉拉噼里啪啦

          初學(xué)者天堂資料匯集

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            16 隨筆 :: 73 文章 :: 16 評論 :: 0 Trackbacks
          創(chuàng)建數(shù)據(jù)庫表
          作者:unknown 更新時間:2005-03-17  
           


              在使用數(shù)據(jù)庫的過程中,接觸最多的就是數(shù)據(jù)庫中的表。表是數(shù)據(jù)存儲的地方。是數(shù)據(jù)庫中最重要的部分,管理好表也就管理好了數(shù)據(jù)庫。本章將介紹如何創(chuàng)建和管理數(shù)據(jù)庫表。

          表是由行和列組成的。創(chuàng)建表的過程主要就是定義表的列的過程,為此,應(yīng)先了解表的列的屬性。

          7.1.1 列的屬性
              表的列名在同一個表中具有惟一性,同一列的數(shù)據(jù)屬于同一種數(shù)據(jù)類型。除了用列名和數(shù)據(jù)類型來指定列的屬性外,還可以定義其它屬性:NULL 或NOT NULL 屬性和IDENTITY 屬性。

          (1) NULL 或NOT NULL
          如果表的某一列被指定具有NULL 屬性,那么就允許在插入數(shù)據(jù)時省略該列的值。反之,如果表的某一列被指定具有NOT NULL 屬性,那么就不允許在沒有指定列缺省值的情況下插入省略該列值的數(shù)據(jù)行。在SQL Server 中,列的缺省屬性是NOT NULL。要設(shè)置缺省屬性為NULL 或NOT NULL,可以在Enterprise Manager 中修改數(shù)據(jù)庫屬性選項中的“ANSI null default”為真或假。也可以使用如下兩種語句來設(shè)定:

          • set ansi_null_dflt_on 或set ansi_null_dflt_off;
          • sp_dboption database_name, ‘ANSI null default’, true/false。

          (2) IDENTITY
              IDENTITY 屬性可以使表的列包含系統(tǒng)自動生成的數(shù)字。這種數(shù)字在表中可以惟一標(biāo)識表的每一行,即表中的每一行數(shù)據(jù)在指定為IDENTITY 屬性的列上的數(shù)字均不相同。指定了IDENTITY 屬性的列稱為IDENTITY 列。當(dāng)用IDENTITY 屬性定義一個列時,可以指定一個初始值和一個增量。插入數(shù)據(jù)到含有IDENTITY 列的表中時,初始值在插入第一行數(shù)據(jù)時使用,以后就由SQL Server 根據(jù)上一次使用的IDENTITY 值加上增量得到新的IDENTITY值。如果不指定初始值和增量值,則其缺省值均為1。
              IDENTITY 屬性適用于INT、 SMALLINT、 TINYINT、 DECIMAL (P,0)、N::::::?
          UMERIC (P,0)數(shù)據(jù)類型的列。
          注意:一個列不能同時具有NULL屬性和IDENTITY屬性,只能二者選其一。

          7.1.2 用CREATE TABLE 命令創(chuàng)建表
          用CREATE TABLE 命令創(chuàng)建表快捷、明了。其語法如下:
          CREATE TABLE [database_name.[owner].| owner.] table_name
          ( {<column_definition> | column_name AS computed_column_expression |
          <table_constraint>} [,...n] )
          [ON {filegroup | DEFAULT} ]
          [TEXTIMAGE_ON {filegroup | DEFAULT} ]
          <column_definition> ::= { column_name data_type }
          [ [ DEFAULT constant_expression ]
          | [ IDENTITY [(seed, increment ) [NOT FOR REPLICATION] ] ] ]
          [ ROWGUIDCOL ]
          [ COLLATE < collation_name > ]
          [ <column_constraint>] [ ...n]
          各參數(shù)說明如下:

          • database_name
            指定新建的表屬于哪個數(shù)據(jù)庫。如果不指定數(shù)據(jù)庫名,就會將所創(chuàng)建的表存放在當(dāng)前數(shù)據(jù)庫中。
          • owner
            指定數(shù)據(jù)庫所有者的用戶名。
          • table_name
            指定新建的表的名稱,最長不超過128 個字符。
            對數(shù)據(jù)庫來說,database_name.owner_name.object_name 應(yīng)該是惟一的。
          • column_name
            指定新建的表的名稱,最長不超過128 個字符。
            對數(shù)據(jù)庫來說,database_name.owner_name.object_name 應(yīng)該是惟一的。
          • computed_column_expression
            指定計算列(Computed column)的列值的表達(dá)式。表達(dá)式可以是列名、常量、變量、函數(shù)等或它們的組合。所謂計算列是一個虛擬的列,它的值并不實際存儲在表中,而是通過對同一個表中其它列進(jìn)行某種計算而得到的結(jié)果。例如:員工信息表中存儲了員工的雇傭日期,那么員工的工齡就可以通過表達(dá)式“雇傭日期當(dāng)前日期”計算出來,則工齡列就可作為一個計算列。
          • ON {filegroup | DEFAULT}
            指定存儲表的文件組名。如果使用了DEFAULT 選項或省略了ON 子句,則新建的表會存儲在默認(rèn)文件組中。
          • TEXTIMAGE_ON
            指定TEXT、NTEXT、 和IMAGE 列的數(shù)據(jù)存儲的文件組。如果無此子句,這些類型的數(shù)據(jù)就和表一起存儲在相同的文件組中。
          • data_type
            指定列的數(shù)據(jù)類型
          • DEFAULT
            指定列的缺省值。當(dāng)輸入數(shù)據(jù)時,如果用戶沒有指定列值,系統(tǒng)就會用設(shè)定的缺省值作為列值。如果該列沒有指定缺省值但允許NULL 值,則NULL 值就會作為缺省值。其中缺省值可以為常數(shù)、NULL 值、SQL Server 內(nèi)部函數(shù)(如GETDATE()函數(shù))、NILADIC 函數(shù)等。
          • constant_expression
            列缺省值的常量表達(dá)式,可以為一個常量或系統(tǒng)函數(shù)或NULL。
          • IDENTITY
            指定列為IDENTITY 列。一個表中只能有一個IDENTITY 列。
          • seed
            指定IDENTITY 列的初始值。
          • increment
            指定IDENTITY 列的增量。
          • NOT FOR REPLICATION
            指定列的IDENTITY 屬性在把從其它表中復(fù)制的數(shù)據(jù)插入到表中時不發(fā)生作用,即不足的生成列值,使得復(fù)制的數(shù)據(jù)行保持原來的列值。
          • ROWGUIDCOL
            指定列為全球惟一鑒別行號列(ROWGUIDCOL是Row Global Unique Identifier Column 的縮寫)。此列的數(shù)據(jù)類型必須為UNIQUEIDENTIFIER 類型。一個表中數(shù)據(jù)類型為UNIQUEIDENTIFIER 的列中只能有一個列被定義為ROWGUIDCOL 列。ROWGUIDCOL 屬性不會使列值具有惟一性,也不會自動生成一個新的數(shù)值給插入的行。需要在INSERT 語句中使用NEWID()函數(shù)或指定列的缺省值為NEWID()函數(shù)。
          • COLLATE指明表使用的校驗方式。
          • column_constraint 和table_constraint
            指定列約束和表約束,我們將在下一節(jié)中介紹其具體定義。
            其余參數(shù)將在后面的章節(jié)中逐步講述。

          注意:一個表至少有一列,但最多不超過1024個列。 每個數(shù)據(jù)庫中最多可以創(chuàng)建200萬個表。 表在存儲時使用的計量單位是盤區(qū)(Extent)。一個盤區(qū)分為8個數(shù)據(jù)頁,每頁8KB字節(jié)。在創(chuàng)建新表時,會分配給它一個初始只為一個盤區(qū)的存儲空間。當(dāng)增加表的存儲空間時,以盤區(qū)為單位增加。





          7.1.3 用Enterprise Manager 創(chuàng)建表
          在Enterprise Manager 中創(chuàng)建表按以下步驟進(jìn)行:
          (1) 在要創(chuàng)建表的數(shù)據(jù)庫中選擇“Tables” 對象后,單擊右鍵,從快捷菜單中選擇“New Table” 選項,或在工具欄中選擇圖標(biāo),即會出現(xiàn)如圖7-1 所示的定義列對話框。在此可以是設(shè)定表的列名、數(shù)據(jù)類型、精度、缺省值等屬性。



          (2) 單擊圖7-1 工具欄中的保存按鈕,即出現(xiàn)如圖7-2 所示的輸入新建表名的對話框。

          (3) 輸入表名后單擊“OK”按鈕,即會將表保存到數(shù)據(jù)庫中。然后圖7-1 中工具欄右邊原來不可用的幾個按鈕將變?yōu)榭捎茫梢允褂盟鼈儊碓O(shè)置表的其它信息,在以后的章節(jié)中將講到它們的使用。

          7.1.4 創(chuàng)建臨時表
          可以用CREATE TABLE 命令創(chuàng)建表局部的或全局作用的臨時表。其語法與創(chuàng)建一般表基本相同,只是在局部臨時表的表名前要使用符號“#”,全局臨時表的表名前要使用符號“##”以便與一般的表相區(qū)別。由于SQL Server 將臨時表的表名存儲到Tempdb數(shù)據(jù)庫中sysobjects 表中時,會自動在其后面添加一個系統(tǒng)產(chǎn)生的12 位的數(shù)字后綴,因此臨時表的表名最長只能指定116 個字符,以不超過128 個字符的命名限制。
          例7-2 創(chuàng)建一個局部臨時表test123
          create table #test123 (
          test_id smallint ,
          test_name char(10) ,
          ) on [primary

          posted on 2005-04-07 14:20 噼里啪啦的世界 閱讀(270) 評論(0)  編輯  收藏 所屬分類: SQL SERVER
          主站蜘蛛池模板: 泊头市| 民县| 泗阳县| 新源县| 新建县| 綦江县| 华阴市| 沾化县| 安泽县| 漳浦县| 澎湖县| 汝城县| 双鸭山市| 香港| 郁南县| 荥阳市| 宕昌县| 滦平县| 慈溪市| 喜德县| 达日县| 漳浦县| 恩施市| 琼海市| 子洲县| 当雄县| 宣城市| 中牟县| 永丰县| 荣成市| 寿光市| 台山市| 许昌县| 富顺县| 新建县| 图们市| 华阴市| 台山市| 唐山市| 萨嘎县| 乾安县|