Tablo (Transact-sql) oluştur

Yeni bir tablo oluşturur SQL Server 2012.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

CREATE TABLE 
    [ database_name . [ schema_name ] . | schema_name . ] table_name 
    [ AS FileTable ]
    ( { <column_definition> | <computed_column_definition> 
        | <column_set_definition> | [ <table_constraint> ] [ ,...n ] } )
    [ ON { partition_scheme_name ( partition_column_name ) | filegroup 
        | "default" } ] 
    [ { TEXTIMAGE_ON { filegroup | "default" } ] 
    [ FILESTREAM_ON { partition_scheme_name | filegroup 
        | "default" } ]
    [ WITH ( <table_option> [ ,...n ] ) ]
[ ; ]

<column_definition> ::=
column_name <data_type>
    [ FILESTREAM ]
    [ COLLATE collation_name ] 
    [ NULL | NOT NULL ]
    [ 
        [ CONSTRAINT constraint_name ] DEFAULT constant_expression ] 
      | [ IDENTITY [ ( seed ,increment ) ] [ NOT FOR REPLICATION ] 
    ]
    [ ROWGUIDCOL ] [ <column_constraint> [ ...n ] ] 
    [ SPARSE ] 

<data type> ::= 
[ type_schema_name . ] type_name 
    [ ( precision [ , scale ] | max | 
        [ { CONTENT | DOCUMENT } ] xml_schema_collection ) ] 

<column_constraint> ::= 
[ CONSTRAINT constraint_name ] 
{     { PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
        [ 
            WITH FILLFACTOR = fillfactor  
          | WITH ( < index_option > [ , ...n ] ) 
        ] 
        [ ON { partition_scheme_name ( partition_column_name ) 
            | filegroup | "default" } ]
  | [ FOREIGN KEY ] 
        REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ] 
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ NOT FOR REPLICATION ] 
  | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) 
} 

<computed_column_definition> ::=
column_name AS computed_column_expression 
[ PERSISTED [ NOT NULL ] ]
[ 
    [ CONSTRAINT constraint_name ]
    { PRIMARY KEY | UNIQUE }
        [ CLUSTERED | NONCLUSTERED ]
        [ 
            WITH FILLFACTOR = fillfactor 
          | WITH ( <index_option> [ , ...n ] )
        ]
    | [ FOREIGN KEY ] 
        REFERENCES referenced_table_name [ ( ref_column ) ] 
        [ ON DELETE { NO ACTION | CASCADE } ] 
        [ ON UPDATE { NO ACTION } ] 
        [ NOT FOR REPLICATION ] 
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) 
    [ ON { partition_scheme_name ( partition_column_name ) 
        | filegroup | "default" } ]
] 

<column_set_definition> ::=
column_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS

< table_constraint > ::=
[ CONSTRAINT constraint_name ] 
{ 
    { PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
        (column [ ASC | DESC ] [ ,...n ] ) 
        [ 
            WITH FILLFACTOR = fillfactor 
           |WITH ( <index_option> [ , ...n ] ) 
        ]
        [ ON { partition_scheme_name (partition_column_name)
            | filegroup | "default" } ] 
    | FOREIGN KEY 
        ( column [ ,...n ] ) 
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ] 
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ NOT FOR REPLICATION ] 
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) 
} 
<table_option> ::=
{
    [DATA_COMPRESSION = { NONE | ROW | PAGE }
      [ ON PARTITIONS ( { <partition_number_expression> | <range> } 
      [ , ...n ] ) ]]
    [ FILETABLE_DIRECTORY = <directory_name> ] 
    [ FILETABLE_COLLATE_FILENAME = { <collation_name> | database_default } ]
    [ FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME = <constraint_name> ]
    [ FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME = <constraint_name> ]
    [ FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME = <constraint_name> ]
}

<index_option> ::=
{ 
    PAD_INDEX = { ON | OFF } 
  | FILLFACTOR = fillfactor 
  | IGNORE_DUP_KEY = { ON | OFF } 
  | STATISTICS_NORECOMPUTE = { ON | OFF } 
  | ALLOW_ROW_LOCKS = { ON | OFF} 
  | ALLOW_PAGE_LOCKS ={ ON | OFF} 
  | DATA_COMPRESSION = { NONE | ROW | PAGE }
       [ ON PARTITIONS ( { <partition_number_expression> | <range> } 
       [ , ...n ] ) ]
}
<range> ::= 
<partition_number_expression> TO <partition_number_expression>

Bağımsız değişkenler

  • database_name
    Tabloyu oluşturulduğu veritabanı adıdır. database_nameVarolan bir veritabanı adı belirtmeniz gerekir. Belirtilmezse, database_namegeçerli veritabanının varsayılan. Geçerli bağlantı için oturum açma belirtilen veritabanında varolan bir kullanıcı kimliği ile ilişkilendirilmiş olması gerekir database_name, ve o kullanıcı kimliği create table izni olması gerekir.

  • schema_name
    Yeni tablonun ait olduğu şema addır.

  • table_name
    Yeni tablonun adıdır. Tablo adları için kuralları izleyin gerekir tanımlayıcıları. table_nameen çok 116 karakteri geçemez yerel geçici tablo adları (adları tek sayı işareti (#) ile öneki) dışında 128 karakter olabilir.

  • OLARAK FileTable
    Bir FileTable yeni bir tablo oluşturur. Çünkü bir FileTable sabit bir şema sütun belirtmeyin. FileTables hakkında daha fazla bilgi için bkz: FileTables (SQL Server).

  • column_name
    Tablodaki bir sütunun adıdır. Sütun adları için kuralları izleyin gerekir tanımlayıcıları ve tablo içinde benzersiz olmalıdır. column_nameen fazla 128 karakter olabilir. column_name ile oluşturulan sütunlar için atlanmış bir timestampveri türü. Eğer column_namebelirtilmemiş, adı bir timestampsütunun varsayılan değeri timestamp.

  • computed_column_expression
    Hesaplanan bir sütunun değerini tanımlayan bir ifadedir. Hesaplanmış bir sütun tablosunda fiziksel olarak depolanmayan bir sanal sütunun sürece PERSISTED sütun işaretlenir. Sütunu hesaplanan ifadeden aynı tabloda diğer sütunları kullanır. Örneğin, hesaplanmış bir sütun tanımı olabilir: Maliyet as Fiyat * Miktar. İfade noncomputed sütun adı, sabit, işlev, değişken ve bunlar tarafından bir veya daha çok işleç bağlı herhangi bir birleşimi olabilir. İfade, bir alt sorgu veya diğer veri türlerini içeren yapamazsınız.

    Hesaplanan sütunlar seçin listeleri, where yan tümceleri, order by yan tümceleri veya hangi normal ifadeler, aşağıdaki istisnalar kullanılabilir diğer konumlarda kullanılabilir:

    • Hesaplanmış bir sütun, default veya FOREIGN key kısıtlaması tanımı veya not null kısıtlaması tanımı ile kullanılamaz. Ancak, hesaplanmış bir sütun içinde dizin anahtar sütunu veya herhangi bir birincil anahtar veya benzersiz kısıtlama, bir parçası olarak hesaplanmış bir sütun değeri deterministik bir ifade tarafından tanımlanır ve sonuç veri türü dizin sütunları izin kullanılabilir.

      Örneğin, Tablo tamsayı sütunlar varsa bir ve b, hesaplanmış bir sütun a + b , hesaplanmış bir sütun indekslenecek a + datepart (dd, getdate()) değeri change in subsequent invocations için dizin oluşturulamaz.

    • Hesaplanmış bir sütun, bir INSERT veya update deyimi hedef olamaz.

    [!NOT]

    Bir tablodaki her satır için hesaplanan bir sütun katılan sütunlar farklı değerleri olabilir; Bu nedenle, hesaplanan sütun her satır için aynı değere sahip olmayabilir.

    Kullanılan ifadelerini temel, hesaplanan sütun nullability otomatik tarafından belirlenir Veritabanı Altyapısı. Çünkü olası sayımında veya taşmaları da boş sonuçlar nonnullable sütunlar mevcut olsa bile çoğu ifadeleri sonucu null olarak kabul edilir. columnproperty işlevi ile AllowsNull tablodaki herhangi bir hesaplanan sütun nullability araştırmak için özellik. NULL olabilecek ifade-ebilmek salınmak IsNull ile belirterek nonnullable bir tek check_expressionsürekli, sabit bir nonnull değer olduğu için herhangi bir boş sonuç değiştirdi. Hesaplanan sütunlar, ortak dil çalışma zamanı (clr) kullanıcı tanımlı türü ifadelerini alan türüne başvurular izni gereklidir.

  • KALICI
    Belirleyen SQL Server Veritabanı Altyapısıfiziksel olarak hesaplanan değerleri tabloda depolamaya ve hesaplanan sütun bağımlı olduğu diğer sütunlara güncelleştirilme zamanını değerleri güncelleştirin. Hesaplanmış bir sütun PERSISTED sağlar işaretleme deterministic ancak değil kesin, hesaplanmış bir sütun üzerinde dizin oluşturma. Daha fazla bilgi için, bkz. Hesaplanan sütun dizinlerde. Bölümleme bölümlenmiş bir tabloya sütun olarak kullanılan hesaplanmış sütunları açıkça PERSISTED işaretlenmelidir. computed_column_expressionPERSISTED belirtildiğinde deterministik olması gerekir.

  • on { <partition_scheme> | filegroup | "default" }
    Bölüm düzenini veya filegroup tablonun depolandığı belirtir. Eğer <partition_scheme> belirtilen, tablo bölümlenmiş bir tablo olan bölümleri bir kümesi üzerinde depolanmış olan olmak ya da daha fazla filegroups belirtilen <partition_scheme>. Eğer filegroupbelirtilirse, tabloda depolanan adlandırılmış filegroup. Filegroup veritabanı içinde bulunması gerekir. Eğer "varsayılan" belirtilen veya on her belirtilmezse, tablo üzerinde varsayılan filegroup depolanır. create TABLE'nda belirtilen tablo depolama mekanizması sonradan değiştirilemez.

    on {<partition_scheme> | filegroup | "varsayılan"} PRIMARY key veya BENZERSIZ kısıtlama da belirtilebilir. Bu kısıtlamalar, dizinler oluşturun. Eğer filegroupbelirtilirse, dizin depolanan adlandırılmış filegroup. Eğer "varsayılan" belirtilen veya on hiç belirtilmemişse, dizin aynı filegroup tablo olarak depolanır. PRIMARY key veya UNIQUE sınırlaması kümelenmiş bir dizin oluşturur, dizin aynı filegroup tablo için veri sayfalarında depolanır. clustered belirtilirse veya başka türlü kısıtlamayı kümelenmiş bir dizin oluşturur ve bir <partition_scheme> dan farklıdır, belirtilen <partition_scheme> ya filegroup Tablo tanımı, veya tersi, yalnızca kısıtlama tanımı onur ve diğer sayılacak.

    [!NOT]

    Bu bağlamda default bir anahtar sözcük değildir. Bu varsayılan filegroup tanımlayıcısı ve, içinde olarak ayrılmış gerekir "varsayılan" ya da on varsayılan[]. Eğer "varsayılan" belirtilirse, quoted_ıdentıfıer seçeneği geçerli oturum için on olması gerekir. Bu, varsayılan ayardır. Daha fazla bilgi için, bkz. set QUOTED_IDENTIFIER (Transact-sql).

    [!NOT]

    Bölümlenmiş bir tablo oluşturduğunuzda, tablo için LOCK_ESCALATION seçeneği otomatik olarak ayarlama düşünün. Bu tablonun yerine bölüm (HoBT) seviyesine yükselmek kilitleri etkinleştirerek eşzamanlılık geliştirebilir. Daha fazla bilgi için, bkz. ALTER TABLE (Transact-SQL).

  • TEXTIMAGE_ON { filegroup | "default" }
    Gösteren text, ntext, image, xml, varchar(max), nvarchar(max), varbinary(max), ve clr türü kullanıcı tanımlı sütunlar (coğrafya ve geometrisi dahil) üzerinde belirtilen filegroup depolanır.

    TEXTIMAGE_ON izin verilmez tabloda hiçbir büyük değer sütun varsa. Eğer TEXTIMAGE_ON belirtilen <partition_scheme> belirtilir. Eğer "varsayılan" belirtilen veya TEXTIMAGE_ON hiç belirtilmemişse, büyük bir değer sütun varsayılan filegroup içinde depolanır. create table içinde belirtilen herhangi bir büyük değere sütun veri depolama sonradan değiştirilemez.

    [!NOT]

    Bu bağlamda default bir anahtar sözcük değildir. Bu varsayılan filegroup tanımlayıcısı ve, TEXTIMAGE_ON gibi ayrılmış gerekir "varsayılan" ya da TEXTIMAGE_ON varsayılan[]. Eğer "varsayılan" belirtilirse, quoted_ıdentıfıer seçeneği geçerli oturum için on olması gerekir. Bu, varsayılan ayardır. Daha fazla bilgi için, bkz. set QUOTED_IDENTIFIER (Transact-sql).

  • FILESTREAM_ON { partition_scheme_name | filegroup |"default" }
    FILESTREAM veri filegroup belirtir.

    Tablo FILESTREAM veri içeriyorsa ve tablo bölümlenmiş FILESTREAM_ON fıkra eklenmesi ve bir bölüm düzeni FILESTREAM filegroups belirtmeniz gerekir. Bu bölüm düzeni aynı bölüm işlevi ve bölümleme sütunlar bölüm düzeni için tablo kullanmanız gerekir; Aksi durumda, bir hata oluşturulur.

    Tablo bölümlere ayrılmışsa, FILESTREAM sütun bölümlenmesi edemiyor. Tek bir filegroup FILESTREAM veri tablosu depolanması gerekir. Bu filegroup FILESTREAM_ON yan tümcesinde belirtilir.

    Tablo bölümlenmiş değil ve FILESTREAM_ON yan tümcesi belirtilen, varsayılan özelliği FILESTREAM filegroup kullanılır. Hiçbir FILESTREAM dosya grubu yoksa, bir hata oluşur.

    • Gibi on ve TEXTIMAGE_ON FILESTREAM_ON değiştirilemez için create table kullanarak değeri hariç aşağıdaki durumlarda:

    • A create INDEX deyimi kümelenmiş bir dizin bir yığın dönüştürür. Bu durumda, bir farklı FILESTREAM filegroup, bölüm düzenini veya null belirtilebilir.

    • A drop INDEX deyimi, bir yığın kümelenmiş bir dizin dönüştürür. Bu durumda, farklı FILESTREAM filegroup, bölüm düzeni, ya da "varsayılan" belirtilebilir.

    FILESTREAM_ON filegroup <filegroup> yan tümcesi veya bölüm düzeni adı her filegroup FILESTREAM filegroup için tanımlanmış bir dosya olmalıdır. Bu dosyayı kullanarak tanımlanması gerekir bir create database veya alter database deyimi; Aksi durumda, bir hata oluşturulur.

    İlgili FILESTREAM Konular için bkz: İkili büyük nesne (Blob) veri (SQL Server).

  • [ type_schema_name**.** ] type_name
    Veri türü sütunu ve ait olduğu şema belirtir. Veri türü aşağıdakilerden biri olabilir:

    • Sistem veri türü.

    • Ad türü dayalı bir SQL Serversistem veri türü. Bir tablo tanımında kullanılabilmeleri için diğer adlı veri türlerinin önce CREATE TYPE deyimi ile oluşturulmaları gerekir. create table deyimi sırasında null veya not null atama ad veri türü için geçersiz kılınabilir. Ancak, uzunluğu belirtimi değiştirilemez; diğer ad veri türü için uzunluk, create table deyiminde belirtilemez.

    • Kullanıcı tanımlı bir clr türü. Kullanıcı tanımlı clr türleri, tablo tanımında kullanılmadan önce create type deyimi ile oluşturulur. clr kullanıcı tanımlı türü üzerinde bir sütun oluşturmak için başvurular izni türü gereklidir.

    Eğer type_schema_namebelirtilmemiş, SQL Server Veritabanı Altyapısıbaşvuruları type_nameaşağıdaki sırayla:

    • SQL ServerSistem veri türü.

    • Geçerli kullanıcının geçerli veritabanındaki varsayılan şeması.

    • Dbo geçerli veritabanı şeması.

  • precision
    Belirtilen veri türünü kesinliğidir. Geçerli kesinlik değerleri hakkında daha fazla bilgi için bkz: duyarlık, ölçek ve uzunluk.

  • scale
    Belirtilen veri türünü ölçeğidir. Geçerli ölçek değerleri hakkında daha fazla bilgi için bkz: duyarlık, ölçek ve uzunluk.

  • Max
    Yalnızca için geçerlidir varchar, nvarchar, ve varbinaryveri türlerini depolamak 2 ^ 31 bayt karakter ve ikili veri ve 2 ^ 30 bayt Unicode veri.

  • İÇERİK
    Belirtir her örneği xmlveri türü column_namebirden çok üst düzey öğeleri içerebilir. İÇERİK geçerlidir yalnızca xmlveri yazın ve yalnızca, belirtilen xml_schema_collectionAyrıca belirtilir. Aksi takdirde belirtildiğinde, içerik varsayılan davranıştır.

  • BELGE
    Belirtir her örneği xmlveri türü column_nametek bir üst düzey öğe içerebilir. Yalnızca geçerli belge xml veri yazın ve yalnızca, belirtilen xml_schema_collectionAyrıca belirtilir.

  • xml_schema_collection
    Yalnızca için geçerlidir xmlveri türü için xml şema koleksiyonu türü ile ilişkilendirme. Yazmadan önce bir xml sütun için bir şema, şema önce kullanarak veritabanı oluşturulmalıdır create xml şema KOLEKSIYONU.

  • DEFAULT
    Bir ekleme sırasında açıkça bir değer sağlanmazsa, sütun için sağlanan değeri belirtir. default tanımları olarak tanımlanan olanlar dışında tüm sütunları uygulanabilir timestamp, ya da bu kimlik özelliği ile. Bir kullanıcı tanımlı türü sütun için varsayılan bir değer belirtilirse, bir örtük dönüştürme türünü desteklemesi gereken constant_expressionkullanıcı tanımlı türü. DEFAULT tanımlar tablo bırakıldığında kaldırılır. Yalnızca sabit bir değer, bir karakter dizesi gibi; skalar fonksiyon (sistem, kullanıcı tanımlı veya clr işlevi); veya null varsayılan olarak kullanılabilir. Önceki sürümleri ile uyumluluk sağlamak için SQL Server, bir varsayılan kısıtlama adı atanabilir.

  • constant_expression
    Bir sabit, null veya sütun için varsayılan değer olarak kullanılan bir sistem işlevi olduğunu.

  • IDENTITY
    Yeni sütunun bir kimlik sütunu olduğunu belirtir. Tabloya yeni bir satır eklendiğinde Veritabanı Altyapısısütun için bir benzersiz, artımlı değer sunar. Kimlik sütunları genellikle PRIMARY key kısıtlamaları ile tablo benzersiz satır tanımlayıcısı olarak kullanılır. IDENTITY özelliği tinyint, smallint, int, bigint, decimal(p,0) veya numeric(p,0) sütunlarına atanabilir. Tablo başına yalnızca bir kimlik sütunu oluşturulabilir. Bağlı varsayılan değerler ve DEFAULT kısıtlamaları bir kimlik sütunu ile kullanılamaz. Hem çekirdek ve Artım veya her ikisi de belirtilmelidir. Hiçbiri belirtilmezse, varsayılan değer (1,1) olur.

  • seed
    Tabloya yüklenen ilk satır için kullanılan değerdir.

  • increment
    Önceki satır kimlik değerini eklenen artımlı değeri yüklendi.

  • NOT FOR REPLICATION
    create table deyiminde, not for REPLICATION yan kimlik özelliği, FOREIGN key kısıtlamaları ve check kısıtlamaları belirtilebilir. KİMLİK özelliği bu yan tümcesi belirtilirse, çoğaltma aracıları ekler gerçekleştirdiğinizde değerleri kimlik sütunları artırılır değil. Bu yan sınırlama için belirtilirse, çoğaltma aracıları Ekle gerçekleştirdiğinizde kısıtlaması zorlanmaz, güncelleştirme veya silme işlemleri.

  • ROWGUIDCOL
    Yeni sütunu satır GUID sütun olduğunu gösterir. Tek bir uniqueidentifier sütun her tablo ROWGUIDCOL sütun olarak İçilir. ROWGUIDCOL özelliği uygulamak $ROWGUID kullanılarak başvurulan sütun sağlar. ROWGUIDCOL özelliği yalnızca atanabilir bir uniqueidentifiersütun. Kullanıcı tanımlı veri türü sütunları ROWGUIDCOL ile belirlenecek olamaz.

    ROWGUIDCOL özelliği, sütunda depolanan değerleri benzersiz olmaya zorlamaz. ROWGUIDCOL da otomatik olarak tabloya eklenen yeni satırlar için değerleri oluşturmaz. Ya her sütunun benzersiz değerler üretmek için kullanmak NEWID ya NEWSEQUENTIALID Tarih fonksiyonu Ekle deyimleri veya bu işlevler sütun için varsayılan olarak kullanmak.

  • SPARSE
    Sütunun seyrek bir sütun olduğunu gösterir. Seyrek sütunların depolanması null değerler için iyileştirilir. Seyrek sütunlar NOT NULL olarak atanamaz. Ek kısıtlamalar ve seyrek sütunları hakkında daha fazla bilgi için bkz: Seyrek sütunlar kullanma.

  • FILESTREAM
    Yalnızca geçerli varbinary(max)sütun. FILESTREAM depolama belirtir varbinary(max)blob verileri.

    Tablo ayrıca bir sütun olmalıdır uniqueidentifierROWGUIDCOL özniteliğine sahip veri türü. Bu sütun boş değerlere izin vermemelidirler ve UNIQUE veya PRIMARY key kısıtlaması tek sütun olması gerekir. Bir uygulama veri eklerken veya NEWID () işlevini kullanan varsayılan kısıtlama sütun GUID değeri sağlanmalıdır.

    ROWGUIDCOL sütun bırakılan ve FILESTREAM sütun tablo için tanımlanmış olmakla ilgili kısıtlamalar değiştirilemez. Yalnızca son FILESTREAM sütun bırakılan sonra ROWGUIDCOL sütun kesilmesini.

    FILESTREAM depolama özniteliği için bir sütun belirtildiğinde, ilgili sütun için tüm değerleri FILESTREAM veri kapsayıcısı dosya sisteminde depolanır.

  • HARMANLAcollation_name
    Sütunun harmanlamasını belirtir. Harmanlama adı, bir Windows harmanlaması adı ya da bir sql harmanlaması adı olabilir. collation_nameyalnızca sütunlar için uygun char, varchar, text, nchar, nvarchar, ve ntextveri türlerini. Belirtilmezse, sütun sütun kullanıcı tanımlı veri türü ise kullanıcı tanımlı veri türü, harmanlama veya veritabanının varsayılan harmanlama atanır.

    Windows ve sql harmanlamayı adları hakkında daha fazla bilgi için bkz: Windows harmanlaması adı ve sql harmanlaması adı.

    collate yan tümcesi hakkında daha fazla bilgi için bkz: HARMANLAMA (Transact-sql).

  • KISITLAMA
    BİRİNCİL anahtar, değil null, UNIQUE, FOREIGN key veya check kısıtlaması tanımı gösterir isteğe bağlı bir anahtar sözcük iş.

  • constraint_name
    Bir kısıtlamanın adıdır. CONSTRAINT ad tablonun ait olduğu şema içinde benzersiz olmalıdır.

  • NULL | NOT NULL
    Sütunda null değerlere izin verilip verilmediğini belirler. NULL tam olarak bir kısıtlama değildir, ancak NOT NULL gibi belirtilebilir. NOT NULL deyimi, hesaplanan sütunlar için yalnızca PERSISTED deyimi de belirtilirse belirtilebilir.

  • PRIMARY KEY
    Belirtilen sütun veya sütunları ile benzersiz bir dizin için varlık tutarlılığını zorlayan bir sınırlamadır. Tablo başına yalnızca bir PRIMARY KEY kısıtlaması oluşturulabilir.

  • UNIQUE
    Belirli bir sütunda veya sütunlarda benzersiz bir dizin yoluyla varlık bütünlüğü sağlayan bir kısıtlamadır. Bir tablonun birden fazla UNIQUE kısıtlaması olabilir.

  • CLUSTERED | NONCLUSTERED
    PRIMARY KEY veya UNIQUE kısıtlaması için kümelenmiş veya kümelenmemiş bir dizin oluşturulduğunu belirtir. BİRİNCİL anahtar kısıtlamaları varsayılan kümelenmiş ve UNIQUE kısıtlamaları varsayılan nonclustered için.

    create table deyiminde yalnızca bir kısıtlamayı kümelenmiş belirtilebilir. clustered için benzersiz kısıtlama belirtilir ve PRIMARY key kısıtlaması da belirtilirse, birincil anahtar nonclustered için varsayılan kullanılır.

  • FOREIGN KEY REFERENCES
    Sütun veya sütunları veri tutarlılığı sağlayan bir sınırlamadır. FOREIGN key kısıtlamaları, her değer sütununda karşılık gelen başvurulan sütun veya sütunları başvurulan tablodaki var gerektirir. FOREIGN key kısıtlamaları, PRIMARY key veya UNIQUE kısıtlamaları başvurulan tablodaki sütunlar veya başvurulan tablo üzerinde benzersiz bir dizin içinde başvurulan sütunları başvuruda bulunabilir. Hesaplanan sütunlar üzerinde yabancı anahtarları da PERSISTED işaretlenmelidir.

  • [ schema_name**.**] referenced_table_name]
    FOREIGN key kısıtlaması ve ait olduğu şema tarafından başvurulan tablonun adıdır.

  • **(**ref_column [ ,... n ] )
    Bir sütun veya sütunları FOREIGN key kısıtlaması tarafından başvurulan tablodan listesi iş.

  • on delete { eylem | ART ARDA SIRALI | NULL AYARLAMA | SET DEFAULT}
    Eylemi, oluşturulan satırları başvurusal ilişki ve başvurulan satır ana tablodan silinir tablodaki satırların olur belirtir. Eylem varsayılandır.

    • EYLEM YOK
      Veritabanı AltyapısıHata ve üst tablodaki satır silme eylemi geri haddelenmiş yükseltir.

    • ART ARDA SIRALI
      Ana tablodan satır silinirse başvuru tablosundan karşılık gelen satırlar silinir.

    • NULL AYARLAMA
      Üst tablodaki karşılık gelen satır silinirse, yabancı anahtarı oluşturan tüm değerlerini null olarak ayarlanır. Bu sınırlama yürütmek yabancı anahtar sütunları NULL olmalıdır.

    • VARSAYILAN OLARAK AYARLA
      Üst tablodaki karşılık gelen satır silinirse, yabancı anahtarı oluşturan tüm değerler varsayılan değerlerine ayarlanır. Bu sınırlama yürütmek default tanımları tüm yabancı anahtar sütunları olması gerekir. Bir sütun NULL olabilecek ve açık varsayılan değeri ayarlanmış yok, sütunun örtük varsayılan değer null olur.

    Tablonun mantıksal kayıtları kullanan bir birleştirme yayını dahil edilecek, cascade belirtmeyin. Mantıksal kayıtları hakkında daha fazla bilgi için bkz: Grup değişiklikleri'mantıksal kayıtları ile ilgili satırları.

    delete cascade tanımlı INSTEAD of tetikleyici on delete tablo önceden varsa.

    Örneğin, AdventureWorks2012 veritabanı, ProductVendor tablo vardır bilgi tutarlılığına ilişkisi olan Satıcı tablosu. ProductVendor.BusinessEntityID yabancı anahtar başvuruları Vendor.BusinessEntityID birincil anahtar.

    delete deyimi içinde bir satırda yürütülür Satıcı tablo ve on delete cascade eylemi belirtilen için ProductVendor.BusinessEntityID, Veritabanı Altyapısıkontrol için bir veya daha fazla bağımlı satır ProductVendor tablosu. Varsa, bağımlı olarak satırları ProductVendor tablo silinir ve satır da başvurulan Satıcı tablosu.

    Buna karşılık, hayır eylem belirttiyseniz, Veritabanı Altyapısıhata yükseltir ve silme eylemi geri alır Satıcı varsa en az bir satır satır ProductVendor başvurduğu tablo.

  • Update { eylem | ART ARDA SIRALI | NULL AYARLAMA | SET DEFAULT}
    O sıralar bilgi tutarlılığına bir ilişki var ve başvurulan satır Ana tabloda güncelleştirilir değişmiş tablodaki satırların ne olur belirtir. Eylem varsayılandır.

    • EYLEM YOK
      Veritabanı AltyapısıHata ve üst tablodaki satır güncelleştirme eylemini geri haddelenmiş yükseltir.

    • ART ARDA SIRALI
      Ana tabloda satır güncelleştirildiğinde başvuru tablosunda karşılık gelen satırlar güncelleştirilir.

    • NULL AYARLAMA
      Üst tablodaki karşılık gelen satır güncelleştirildiğinde yabancı anahtarı oluşturan tüm değerlerini null olarak ayarlanır. Bu sınırlama yürütmek yabancı anahtar sütunları NULL olmalıdır.

    • VARSAYILAN OLARAK AYARLA
      Üst tablodaki karşılık gelen satır güncelleştirildiğinde yabancı anahtarı oluşturan tüm değerler varsayılan değerlerine ayarlanır. Bu sınırlama yürütmek default tanımları tüm yabancı anahtar sütunları olması gerekir. Bir sütun NULL olabilecek ve açık varsayılan değeri ayarlanmış yok, sütunun örtük varsayılan değer null olur.

    Tablonun mantıksal kayıtları kullanan bir birleştirme yayını dahil edilecek, cascade belirtmeyin. Mantıksal kayıtları hakkında daha fazla bilgi için bkz: Grup değişiklikleri'mantıksal kayıtları ile ilgili satırları.

    on update cascade, set null veya default set bir INSTEAD of tetikleyici on update değiştirilmiş tablo zaten varsa tanımlanamaz.

    Örneğin, AdventureWorks2012 veritabanı, ProductVendor tablo vardır bilgi tutarlılığına ilişkisi olan Satıcı tablo: ProductVendor.BusinessEntity yabancı anahtar başvuruları Vendor.BusinessEntityID birincil anahtar.

    Bir update deyimi içinde bir satırda yürütülür Satıcı tablo ve bir on update cascade eylemi belirtilen için ProductVendor.BusinessEntityID, Veritabanı Altyapısıkontrol için bir veya daha fazla bağımlı satır ProductVendor tablosu. Varsa, bağımlı olarak satırları ProductVendor tablosu güncelleştirilir ve satır da başvurulan Satıcı tablosu.

    Buna karşılık, hayır eylem belirttiyseniz, Veritabanı Altyapısıhata yükseltir ve Güncelleştir eylemi geri alır Satıcı varsa en az bir satır satır ProductVendor başvurduğu tablo.

  • CHECK
    Etki alanı bütünlüğünü bir sütuna veya sütunlara girilebilecek olası değerleri sınırlayarak zorlayan bir kısıtlamadır. KONTROL kısıtlamaları hesaplanmış sütunları da PERSISTED işaretlenmelidir.

  • logical_expression
    TRUE veya FALSE döndüren mantıksal bir ifadedir. Diğer veri türleri, ifadenin bir parçası olamaz.

  • column
    Bir sütun veya Tablo kısıtlamaları kısıtlaması tanımında kullanılan sütunları belirtmek için kullanılan parantez içinde sütunlar listesi iş.

  • ASC | DESC]
    Sütun veya Tablo kısıtlamaları katılan nasıl sıralanacağı belirtir. Varsayılan değer ASC'tur.

  • partition_scheme_name
    Bölüm düzeni bölümlenmiş bir tablo eşlenir filegroups tanımlayan addır. Bölüm düzeni veritabanı içinde bulunması gerekir.

  • [ partition_column_name**.** ]
    Hangi karşı bölümlenmiş bir tablo bölümlenmesi sütun belirtir. Sütun bölümünde belirtilen eşleşmesi gerekir, işlev partition_scheme_nameveri türü, uzunluk ve hassasiyet açısından kullanıyor. Bölüm işlevi içinde yer aldığı bir hesaplanmış sütunları açıkça PERSISTED işaretlenmelidir.

    Önemli notÖnemli

    Bölümleme sütununda bölümlenmiş tablolar ve kaynakları nonpartitioned tablo veya alter table hedefleri değil null belirtmek öneririz...GEÇİŞ işlemleri. Böylece bölümleme sütunları üzerinde herhangi bir denetim kısıtlamalarını boş değerler için kontrol gerekmez sağlar.

  • FILLFACTOR ile **=**fillfactor
    Nasıl tam belirtir Veritabanı Altyapısıher dizin sayfasının dizin verileri depolamak için kullanılan yapmalısınız. Kullanıcı tarafından belirtilen fillfactordeğerleri 1 ile 100 arasında olabilir. Bir değer belirtilmezse, varsayılan değer 0'dır. Doldurma faktörü değerleri 0 ve 100 her açıdan aynıdır.

    Önemli notÖnemli

    Documenting ile FILLFACTOR = fillfactorPRIMARY key veya UNIQUE kısıtlamaları uygulanır yalnızca dizin seçeneği geriye dönük uyumluluk için korunur, ancak bu şekilde gelecekte belgelenen değil serbest.

  • column_set_nameXML COLUMN_SET FOR ALL_SPARSE_COLUMNS
    Sütun kümesinin adıdır. Bir sütun kümesi, bir tablonun tüm seyrek sütunlarını yapılandırılmış bir çıktı olarak birleştiren türü olmayan bir XML gösterimidir. Sütun kümeleri hakkında daha fazla bilgi için bkz: Sütun kümelerini kullanma.

  • <table_option> :: =
    Bir veya daha fazla tablo seçenekleri belirtir.

  • DATA_COMPRESSION
    Belirtilen tablo, bölümleme numarası veya bölümleme aralığı için veri sıkıştırma seçeneğini belirtir. Seçenekler aşağıdaki gibidir:

    • NONE
      Tablo veya belirtilen bölümler sıkıştırılmaz.

    • ROW
      Tablo veya belirtilen bölümler satır sıkıştırma kullanılarak sıkıştırılır.

    • PAGE
      Tablo veya belirtilen bölümler sayfa sıkıştırma kullanılarak sıkıştırılır.

    Sıkıştırma hakkında daha fazla bilgi için bkz. Veri Sıkıştırma.

  • BÖLÜMLERİ ( { <partition_number_expression> | <range>} ,...n ] )
    DATA_COMPRESSION ayarının uygulandığı bölümleri belirtir. Tablo bölümlere ayrılmışsa, on BÖLÜMLERI bağımsız bir hata üretecektir. on BÖLÜMLERI yan sağlanmazsa, DATA_COMPRESSION seçeneği bölümlenmiş bir tablonun tüm bölümleri için geçerli olacaktır.

    <partition_number_expression> aşağıdaki şekillerde belirtilebilir:

    • Bir bölüm, bölüm numarasını örneğin sağlar: on BÖLÜMLERI (2).

    • Birkaç ayrı bölümlemenin bölüm numaralarını, virgüllerle ayırarak sağlayın; örneğin: ON PARTITIONS (1, 5).

    • Örneğin aralıkları ve tek tek bölümleri sağlar: on BÖLÜMLERI (2, 4, 6-8)

    <Aralık> sözcüğü, örneğin ayrılmış bölüm numaraları olarak belirtilebilir: on BÖLÜMLERI (6-8).

    Farklı bölümlerde farklı veri sıkıştırma türleri ayarlamak için, DATA_COMPRESSION seçeneğini birden çok kez belirtin; örneğin:

    WITH 
    (
    DATA_COMPRESSION = NONE ON PARTITIONS (1), 
    DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8), 
    DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5)
    )
    
    WITH 
    (
    DATA_COMPRESSION = NONE ON PARTITIONS (1), 
    DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8), 
    DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5)
    )
    
  • <index_option> :: =
    Bir veya daha fazla dizin seçeneklerini belirtir. Bu seçeneklerin tam açıklaması için bkz: Index (Transact-sql) oluştur.

  • PAD_INDEX = {ON | OFF }
    on, yüzdesi ücretsiz tarafından belirtilen alan FILLFACTOR dizin Orta düzey sayfalar için uygulanır. Zaman kapalı veya bir FILLFACTOR değer o belirtilmemiş, Orta düzey sayfalar düşünüldüğünde ara sayfalarında anahtarları kümesi dizini olabilir, en büyük boyutu en az bir satır için yeterli alan bırakarak kapasite near doldurulur. Varsayılan değer OFF'tur.

  • FILLFACTOR **=**fillfactor
    Nasıl tam gösteren bir yüzdesini belirtir Veritabanı Altyapısıyaprak düzeyi her dizin sayfasının dizin oluşturma veya değiştirme sırasında yapmalısınız. fillfactor, 1 ile 100 arasında bir tamsayı olmalıdır. Varsayılan değer 0'dır. Doldurma faktörü değerleri 0 ve 100 her açıdan aynıdır.

  • IGNORE_DUP_KEY = {ON | OFF }
    Bir ekleme işlemi benzersiz bir dizine yinelenen anahtar değerleri eklemeye çalıştığında verilecek hata yanıtını belirtir. IGNORE_DUP_KEY seçeneği yalnızca dizin oluşturulduktan veya yeniden oluşturulduktan sonraki ekleme işlemlerine uygulanır. Yürütürken seçeneğin bir etkisi olmaz create INDEX, alter INDEX, veya güncelleştirme. Varsayılan değer OFF'tur.

    • ON
      Benzersiz bir dizine yinelenen anahtar değerleri eklendiğinde bir uyarı iletisi oluşur. Yalnızca benzersizlik kısıtlamasını ihlal eden satırlar hata verir.

    • OFF
      Benzersiz dizine yinelenen anahtar değerleri eklendiğinde bir hata iletisi oluşur. Tüm INSERT işlemi geri alınır.

    IGNORE_DUP_KEY on bir görünüm oluşturulmuş dizinleri, benzersiz olmayan dizinler, xml dizinler, kayma dizinleri ve filtre uygulanmış dizinler ayarlanamaz.

    IGNORE_DUP_KEY değerini görüntülemek için, sys.indexes'i kullanın.

    WITH IGNORE_DUP_KEY, geriye doğru uyumluluk dizininde WITH IGNORE_DUP_KEY = ON ayarına denktir.

  • STATISTICS_NORECOMPUTE = {on | OFF }
    Ne zaman Tarih, güncel olmayan dizin istatistikleri değil otomatik olarak recomputed. Otomatik istatistik güncelleştirme etkinleştirildiğinde. Varsayılan değer OFF'tur.

  • ALLOW_ROW_LOCKS = { ON | KAPALI}
    Dizin erişirken zaman, satır kilitleri izin verilir. Veritabanı AltyapısıSatır kilitleri ne zaman kullanılacağını belirler. Ne zaman kapalı, satır kilitleri kullanılır. ON varsayılan değerdir.

  • allow_page_locks = { on | KAPALI}
    Dizin erişirken zaman, sayfa kilitlemeleri izin verilir. Veritabanı AltyapısıNe zaman sayfa kilitleri kullanılır belirler. Ne zaman kapalı, sayfa kilitleri kullanılır. ON varsayılan değerdir.

  • FILETABLE_DIRECTORY =directory_name
    Windows uyumlu FileTable dizin adını belirtir. Bu ad, veritabanındaki tüm FileTable dizin adları arasında benzersiz olmalıdır. Harmanlama ayarlarını bağımsız olarak benzersiz karşılaştırma duyarlıdır. Bu değer belirtilmezse, filetable adı kullanılır.

  • FILETABLE_COLLATE_FILENAME = { collation_name| database_default}
    Uygulanacak harmanlama adını belirtir ad FileTable sütununda. Harmanlamayı Windows Dosya semantik adlandırma uymak için duyarlı olmalıdır. Bu değer belirtilmezse, veritabanının varsayılan harmanlama kullanılır. Veritabanının varsayılan harmanlama büyük/küçük harf duyarlıdır, bir hata oluşturulur ve tablo oluşturma işlemi başarısız olur.

    • collation_name
      Büyük küçük harf duyarsız bir harmanlama adı.

    • database_default
      Veritabanı için varsayılan harmanlama kullanılması gerektiğini belirtir. Bu harmanlama duyarlı olmalıdır.

  • FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME =constraint_name
    FileTable oluşturulan birincil anahtar kısıtlaması için kullanılacak adı belirtir. Bu değer belirtilmezse, sistem kısıtlamanın adını oluşturur.

  • FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME =constraint_name
    Otomatik olarak oluşturulur benzersiz kısıtlaması için kullanılacak adı belirtir stream_id FileTable sütununda. Bu değer belirtilmezse, sistem kısıtlamanın adını oluşturur.

  • FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME =constraint_name
    Otomatik olarak oluşturulur benzersiz kısıtlaması için kullanılacak adı belirtir parent_path_locator ve ad FileTable sütunlar. Bu değer belirtilmezse, sistem kısıtlamanın adını oluşturur.

Açıklamalar

İzin verilen tablolar, sütunlar, kısıtlamalar ve dizinler sayısı hakkında daha fazla bilgi için bkz: SQL Server için En Yüksek Kapasite Belirtimleri.

Alanı genellikle tablolar ve dizinler bir ölçüde artışlarla bir anda tahsis edilir. Tablo veya dizin oluşturulduğunda, Tekdüzen ölçüde doldurmak için yeterli sayfaları olana kadar o sayfaları karışık kapsamlarını tahsis edilir. O Tekdüzen ölçüde doldurmak için yeterli sayfaları vardır sonra şu anda ayrılmış kapsamlarını tam olmak her zaman başka bir ölçüde tahsis edilir. Ayrılan ve bir tablo tarafından kullanılan alan miktarını hakkında bir rapor için yürütme sp_spaceused.

Veritabanı AltyapısıHangi varsayılan, kimlik, ROWGUIDCOL veya sütun kısıtlamaları bir sütunu tanımında belirtilir sipariş zorlamaz.

Bir tablo oluşturduğunuzda, tablo oluşturulduğunda için off seçeneği ayarlanmış olsa bile, tırnak içine alınmış TANIMLAYICI seçeneği her zaman on tablo meta veri depolanır.

Geçici tablolar

Yerel ve genel geçici tablolar oluşturabilirsiniz. Yerel geçici tablolar yalnızca geçerli oturumda görünür durumdadır ve genel geçici tablolar için tüm oturumlara görünür. Geçici tablo bölümlenmesi edemiyor.

Önek yerel geçici tablo adları tek sayı işareti (#table_name) ve genel geçici tablo adları çift sayı işareti ile önek (##table_name).

sql deyimleri için belirtilen değeri kullanarak geçici tablo başvuru table_namecreate table deyiminde, örneğin:

CREATE TABLE #MyTempTable (cola INT PRIMARY KEY);

INSERT INTO #MyTempTable VALUES (1);

Birden fazla geçici tablo tek bir saklı yordam veya toplu iş içinde oluşturduysanız, bunlar farklı adlara sahip olmalıdır.

Bir saklı yordam veya aynı anda birden fazla kullanıcı tarafından yürütülen uygulama yerel geçici tablo oluşturduysanız Veritabanı Altyapısıfarklı kullanıcılar tarafından oluşturulan tablolar ayırt edebilmek gerekir. Veritabanı AltyapısıDahili olarak her yerel geçici tablo adına sayısal bir sonek ekleyerek yapar. Geçici tablo olarak saklanan tam adı sysobjects içinde tablo tempdb TABLEdeyimi ve sistem tarafından oluşturulan sayısal sonek belirtilen tablo adı oluşur. Soneki, izin veren table_namebelirtilen yerel geçici ad 116 karakteri geçemez.

Kapsam dışına gittiğinizde geçici tablolara otomatik olarak açıkça drop table kullanarak bırakılan sürece bırakılır:

  • Yerel geçici tablo oluşturulan bir saklı yordam, saklı yordamı tamamlandığında otomatik olarak bırakılır. Tabloda, tablo oluşturulan saklı yordam tarafından yürütülen herhangi bir iç içe saklı yordamlar tarafından başvurulabilir. Tabloyu Tablo oluşturulan saklı yordamı çağıran işlem tarafından başvurulamaz.

  • Tüm diğer yerel geçici tablolar otomatik olarak geçerli oturumun sonunda bırakılır.

  • Genel geçici tablolar tablo oluşturulan oturum sona erdiğinde otomatik olarak bırakılır ve tüm diğer görevleri bunlara durduruldu. Görev ve tablo arasındaki ilişkiyi sadece tek bir yaşam için tutulan Transact-SQLdeyimi. Genel geçici tablo son bitiminde düşer yani Transact-SQLzaman oluşturma oturumu sona erdi aktif tabloya başvuran ifadesi.

Yerel geçici tablo içinde saklı bir yordam oluşturulur veya tetikleyici önce saklı yordam oluşturulduğu geçici bir tablo adıyla aynı olabilir veya tetikleyici olarak bilinir. Ancak, geçici bir tablo sorgu başvuran ve o zaman aynı ada sahip iki geçici tablolar var, o hangi tablo sorgu karşı çözülmüştür tanımlı değil. İç içe geçmiş bir saklı yordamlar da denilen saklı yordam tarafından oluşturulan geçici bir tablo adıyla aynı geçici tablolar oluşturabilirsiniz. Ancak, iç içe yordam oluşturulduğu tabloyu çözümlemek değişiklikler için aynı yapıyla aynı sütun adları, arama yordamı oluşturulan tablo tablo olmalıdır. Bu, aşağıdaki örnekte gösterilmiştir.

CREATE PROCEDURE dbo.Test2
AS
    CREATE TABLE #t(x INT PRIMARY KEY);
    INSERT INTO #t VALUES (2);
    SELECT Test2Col = x FROM #t;
GO

CREATE PROCEDURE dbo.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

Sonuç kümesi buradadır.

(1 row(s) affected)

Test1Col

-----------

1

(1 row(s) affected)

Test2Col

-----------

2

Yerel veya genel geçici tablolar oluşturmak için create table sözdizimi kısıtlaması tanımı FOREIGN key kısıtlamaları haricinde destekler. Geçici bir Tablo FOREIGN key kısıtlaması belirtilmişse kısıtlamaya bildiren bir uyarı iletisi geçildi deyimi döndürür. Tablo FOREIGN key kısıtlamaları hala oluşturulur. Geçici tablolara FOREIGN key kısıtlamaları başvurulamaz.

Geçici bir tablo ile adlandırılmış bir kısıtlama oluşturulur ve geçici bir tablo kullanıcı tanımlı bir işlem kapsamı içinde oluşturulur, bir seferde yalnızca bir kullanıcı geçici tabloyu yaratan ifadenin yürütebilirsiniz. Örneğin, bir saklı yordam adlı birincil anahtar kısıtlaması ile geçici bir tablo oluşturursa, saklı yordam aynı anda birden çok kullanıcı tarafından yürütülemiyor.

Bölümlenmiş Tablolar

create table kullanarak bölümlenmiş bir tablo oluşturmadan önce nasıl tablo bölümlenmiş hale belirtmek için bir bölüm işlevi önce oluşturmanız gerekir. Bölüm işlevi kullanılarak oluşturulan create PARTITION FUNCTION. İkinci olarak, Bölüm işlevi tarafından belirtilen bölümler yapacak filegroups belirtmek için bir bölüm düzeni oluşturmanız gerekir. Bir bölüm düzeni kullanılarak oluşturulan create PARTITION düzeni. PRIMARY key veya UNIQUE kısıtlamaları ayrı filegroups yerleştirme bölümlenmiş tablolar için belirtilemez. Daha fazla bilgi için, bkz. Bölümlenmiş tablolar ve dizinler.

PRIMARY key kısıtlamaları

  • Bir tablo yalnızca bir birincil anahtar kısıtlaması içerebilir.

  • PRIMARY key kısıtlaması tarafından üretilen dizin sayısını aşan 999 kümelendirilmemiş dizinler tabloyu dizinlerde ve 1 Kümelenmiş dizin neden olamaz.

  • clustered veya nonclustered için bir birincil anahtar kısıtlaması belirtilmemişse, kümelenmiş kümelenmiş dizin UNIQUE kısıtlamaları için belirtilen varsa kullanılır.

  • PRIMARY key kısıtlaması içinde tanımlanan tüm sütunlar tanımlanmalıdır olarak not null. Nullability belirtilmezse, tüm sütunları PRIMARY key kısıtlaması içinde katılan ayarlamak kendi nullability varsa not null.

  • Birincil anahtar bir clr kullanıcı tanımlı türü sütun tanımlanmışsa, ikili sıralama türü uygulanması desteklemelidir. Daha fazla bilgi için, bkz. clr kullanıcı tanımlı türler.

UNIQUE kısıtlamaları

  • nonclustered, clustered veya nonclustered için UNIQUE sınırlamasıyla belirtilmemişse, varsayılan olarak kullanılır.

  • Her benzersiz kısıtlama bir dizin oluşturur. UNIQUE kısıtlamaları sayısı 999 kümelendirilmemiş dizinler aşmak için tabloyu dizinlerde ve 1 Kümelenmiş dizin sayısı neden olamaz.

  • UNIQUE sınırlamasıyla bir clr kullanıcı tanımlı türü sütun tanımlanmışsa, ikili ya da operatör tabanlı sipariş türü uygulanması desteklemelidir. Daha fazla bilgi için, bkz. clr kullanıcı tanımlı türler.

FOREIGN key kısıtlamaları

  • FOREIGN key kısıtlaması sütuna null dışında bir değer girildiğinde, başvurulan sütun değeri bulunmalıdır; Aksi takdirde, bir yabancı anahtar ihlali hata iletisi döndürülür.

  • Kaynak sütun belirtilmedikçe FOREIGN key kısıtlamaları önceki sütuna uygulanır.

  • FOREIGN key kısıtlamaları yalnızca tabloları aynı sunucuda aynı veritabanı içinde başvuruda bulunabilir. Geçici veritabanı tutarlılığı Tetikleyiciler ile uygulanmalıdır. Daha fazla bilgi için, bkz. CREATE TRIGGER (Transact-SQL).

  • FOREIGN key kısıtlamaları aynı tablodaki başka sütun başvuruda bulunabilir. Bu bir başvurusu adlandırılır.

  • Sütun düzeyinde FOREIGN key kısıtlaması başvurular yan tek bir başvuru sütunu listeleyebilirsiniz. Bu sütunda aynı veri türü sütun kısıtlaması tanımlandığı olmalıdır.

  • Tablo düzeyi FOREIGN key kısıtlaması başvurular yan başvuru sütunları aynı sayıda sütun sayısı kısıtlaması sütun listesinde olması gerekir. Her başvuru sütunun veri türünü de ilgili sütunun sütun listesi ile aynı olmalıdır.

  • cascade, set null veya default set belirtilen bir sütun türü, timestampyabancı anahtar veya başvurulan anahtarı bir parçası.

  • cascade, set null, set default ve eylem yok, birbirleri ile bilgi tutarlılığına ilişkisi olan tablolar birleştirilebilir. Eğer Veritabanı AltyapısıEylem yok, karşılaştığında durur ve ilgili cascade, set null ve set default eylemleri geri alır. set null ve set default eylemleri bir arada cascade, set null, set default ve eylem eylemler, cascade delete deyimi neden olduğunda önce uygulanan Veritabanı Altyapısıkontrol için herhangi bir eylem yok.

  • Veritabanı AltyapısıDiğer tablolarda başvuru içeren bir Tablo FOREIGN key kısıtlamaları sayısı veya belirli bir tabloya başvuran diğer tablolar ait olan FOREIGN key kısıtlamaları sayısı önceden tanımlanmış bir sınırlama yok.

    Yine de kullanılabilir FOREIGN key kısıtlamaları gerçek sayısı donanım yapılandırması ve uygulama ve veritabanı tasarımı sınırlıdır. Tablo fazla 253 FOREIGN key kısıtlamaları içeren ve en fazla 253 FOREIGN key kısıtlamaları tarafından başvurulan olabilir öneririz. Etkili sınır sizin için daha fazla veya daha az uygulama ve donanım bağlı olabilir. Veritabanınızı ve uygulamaları tasarlarken FOREIGN key kısıtlamaları zorlamayı maliyeti düşünün.

  • FOREIGN key kısıtlamaları üzerinde geçici tablolara zorlanmaz.

  • FOREIGN key kısıtlamaları, PRIMARY key veya UNIQUE kısıtlamaları başvurulan tablodaki veya benzersiz bir dizin içinde başvurulan tabloyu yalnızca sütun başvuruda bulunabilir.

  • Yabancı anahtar bir clr kullanıcı tanımlı türü sütun tanımlanmışsa, ikili sıralama türü uygulanması desteklemelidir. Daha fazla bilgi için, bkz. clr kullanıcı tanımlı türler.

  • Bir sütun türü varchar(max)sadece başvuran birincil anahtar da türü olarak tanımlanırsa, FOREIGN key kısıtlaması katılabilirsiniz varchar(max).

default tanımları

  • Bir sütun yalnızca bir varsayılan tanım olabilir.

  • Sabit değerler, fonksiyonları, sql-92 parametresiz işlevler veya null default tanımını içerir. Parametresiz işlevler ve onlar için varsayılan bir INSERT deyimi sırasında dönüş değerleri aşağıdaki tabloda gösterilmektedir.

    sql-92 parametresiz işlevi

    Döndürülen değer

    CURRENT_TIMESTAMP

    Geçerli tarih ve Saat.

    CURRENT_USER

    INSERT gerçekleştiren kullanıcının adı.

    SESSION_USER

    INSERT gerçekleştiren kullanıcının adı.

    SYSTEM_USER

    INSERT gerçekleştiren kullanıcının adı.

    KULLANICI

    INSERT gerçekleştiren kullanıcının adı.

  • constant_expressionVarsayılan tanımını tablodaki başka sütun veya diğer tablolar, görünümler, başvuramaz veya saklı yordamları.

  • default tanımları ile sütunları oluşturulamıyor bir timestampveri türü veya sütunları IDENTITY özelliği ile.

  • Diğer ad veri türü için bir varsayılan nesne ilişkili ise default tanımları, diğer veri türlerini içeren sütunlar için oluşturulamaz.

check kısıtlamaları

  • Bir sütun, check kısıtlamaları herhangi bir sayı olabilir ve koşulu ile birlikte birden çok mantıksal ifadeler içerebilir ve ve veya. Birden fazla check kısıtlamaları bir sütunu için oluşturuldukları sıraya göre doğrulanır.

  • Arama koşulu bir Boolean ifadesi oluşturmalı ve başka bir tabloya başvuru yapamazsınız.

  • Sütun düzeyi check kısıtlaması yalnızca kısıtlanmış sütun başvurabilir ve tablo düzeyi check kısıtlaması yalnızca aynı tablodaki sütunlara başvurabilir.

    check kısıtlamaları ve kuralları Ekle ve GÜNCELLEŞTIR deyimleri sırasında veri doğrulama aynı işlevi hizmet vermektedir.

  • Bir sütun veya sütunları için bir kural ve bir veya daha fazla check kısıtlamaları var, tüm kısıtlamalar değerlendirilir.

  • KONTROL kısıtlamaları tanımlanamaz text, ntext, ya imagesütun.

Ek kısıtlama bilgi

  • Bir kısıtlama için oluşturulmuş bir dizini Bırakma dizini kullanarak bırakılan; CONSTRAINT alter table kullanarak bırakılan gerekir. Kullanılarak oluşturulan ve bir kısıtlaması tarafından kullanılan bir dizin oluşturulması dbcc DBREINDEX.

  • Kısıtlama adları için kuralları izlemeniz gerekir tanımlayıcılarıdışında adı bir sayı işareti (#) ile başlayamaz. Eğer constraint_nameise sağlanan değil, sistem tarafından oluşturulan bir ad kısıtlaması atanır. Kısıtlama adı kısıtlama ihlalleri ile ilgili herhangi bir hata iletisi görüntülenir.

  • Bir INSERT, update veya delete deyimi bir kısıtlamayı ihlal olduğunda, deyimi sona erer. set xact_abort için off ayarlandığında, deyimi açık işlem, bir bölümü ise ancak hareket işleme devam eder. set xact_abort on olarak ayarlandığında, tüm işlem geri alınır. Kontrol ederek hareket tanımı ile rollback TRANSACTION deyimi kullanabilirsiniz **@**hata sistem işlevi.

  • Ne zaman allow_row_locks = on ve allow_page_lock = on, satır, sayfa-, ve tablo düzeyi kilitleri dizin erişim verilir. Veritabanı Altyapısı uygun kilidi seçer ve kilidi satır veya sayfa kilidinden bir tablo kilidine yükseltebilir. ALLOW_ROW_LOCKS = OFF ve ALLOW_PAGE_LOCK = OFF seçenekleri belirlendiğinde, dizine eriştiğinizde yalnızca tablo düzeyi bir kilide izin verilir.

  • Eğer bir Tablo FOREIGN key veya check kısıtlamaları ve Tetikleyiciler, tetikleyici yürütülmeden önce kısıtlaması koşullar değerlendirilir.

Bir tabloyu ve sütunlarını bir rapor için kullanmak sp_help ya sp_helpconstraint. Bir tabloyu yeniden adlandırmak için kullanın sp_rename. Görünümler ve saklı yordamlar bir tabloda bağımlı bir rapor için kullanmak sys.dm_sql_referenced_entities ve sys.dm_sql_referencing_entities.

Nullability kuralları içinde tablo tanımı

Bu sütunu boş izin verip bir sütun nullability belirleyen değer (null) olarak o sütundaki verileri. null sıfır veya boş değil: null giriş yapıldığı veya açık bir null sağlandı ve genellikle değeri bilinmeyen ya da uygulanamaz olduğunu ima ediyor demektir.

Bir tabloyu değiştirmek veya oluşturmak için create table veya alter TABLE'ı kullandığınızda, veritabanı ve oturum ayarları etkisi ve muhtemelen nullability sütun tanımında kullanılan veri türü geçersiz. Biz size her zaman açıkça sütun null veya not null noncomputed sütunlar tanımlamanız tavsiye veya bir kullanıcı tanımlı veri türü kullanıyorsanız, sütun veri türü varsayılan nullability kullanmak izin. Seyrek sütunlar her zaman null izin vermelidir.

Sütun nullability açıkça belirtilmediği durumlarda, Sütun nullability aşağıdaki tabloda gösterilen kuralları izler.

Sütun veri türü

Kural

Diğer ad veri türü

Veritabanı AltyapısıVeri türü oluşturulduğunda, belirtilen nullability kullanır. Veri türü varsayılan nullability belirlemek için sp_help.

CLR kullanıcı tanımlı türü

Nullability sütun tanımına göre belirlenir.

Sistem tarafından sağlanan veri türü

Sistem tarafından sağlanan veri türü yalnızca bir seçenek varsa, öncelik kazanır. timestampveri türleri olmalıdır null.

Ne zaman oturum ayarları kümesi kullanarak on ayarlanır:

  • ANSI_NULL_DFLT_ON = on, null atanır.

  • ANSI_NULL_DFLT_OFF = on, not null atanır.

  • Ne zaman herhangi bir veritabanı ayarlarını alter database kullanarak yapılandırılır:

  • ANSI_NULL_DEFAULT_ON = on, null atanır.

  • ANSI_NULL_DEFAULT_OFF = on, not null atanır.

  • ANSI_NULL_DEFAULT veritabanı ayarını görüntülemek için sys.databases Katalog görünümü

Ne zaman ANSI_NULL_DFLT seçeneklerin hiçbiri oturumu için ayarlanır ve veritabanının varsayılan (ANSI_NULL_DEFAULTis off), varsayılan değer olan değil ayarlamak null atanır.

Sütunu hesaplanan sütun ise, onun nullability her zaman otomatik olarak belirlenir Veritabanı Altyapısı. Bu tür bir sütun nullability bulmak için kullanın columnproperty işlevi ile AllowsNull özelliği.

[!NOT]

Hem ANSI_NULL_DFLT_ON on olarak ayarlanmış olan varsayılan SQL Server için Microsoft ole db sağlayıcısı ve SQL Server odbc sürücüsü. odbc ve ole db kullanıcıları bu odbc veri kaynaklarında ya da bağlantı öznitelikleri ya da uygulama tarafından ayarlanan özellikleri yapılandırabilirsiniz.

Veri Sıkıştırma

Sistem tablolarında sıkıştırma etkinleştirilemez. Tablo oluştururken, veri sıkıştırma yok, aksi belirtilmedikçe ayarlanır. Bölüm veya Aralık dışı bir bölüm listesini belirtirseniz, bir hata oluşturulur. Veri sıkıştırma hakkında daha fazla bilgi için bkz: Veri Sıkıştırma.

Sıkıştırma durumunu değiştirme tablo, dizin veya bölüm nasıl etkileyeceğini değerlendirmek için sp_estimate_data_compression_savings saklı yordamı.

İzinler

create table izni veritabanında ve tabloyu oluşturulduğu şema alter izni gerektirir.

Tüm sütunları create table deyimi içinde kullanıcı tanımlı bir clr türü olarak tanımlanır, bu başvurular izni ya da mülkiyet türü gereklidir.

create table deyimi her sütun ilişkili xml şema koleksiyonu varsa, xml şema koleksiyonu sahipliğini, ya da onu başvurular izni gereklidir.

Örnekler

A.PRIMARY key kısıtlamaları kullanma

Aşağıdaki örnek ile kümelenmiş bir dizin PRIMARY key kısıtlaması sütun tanımı gösterir EmployeeIDsütununda Employeetablo (kısıtlama adı sağlamak sistem izin) AdventureWorksörnek veritabanı.

EmployeeID int
PRIMARY KEY CLUSTERED

EmployeeID int
PRIMARY KEY CLUSTERED

B.FOREIGN key kısıtlamaları kullanma

FOREIGN key kısıtlaması, başka bir tablo başvurmak için kullanılır. Yabancı anahtarlar, tek sütunlu tuflları ya sütunlu olabilir. Aşağıdaki örnekte bir tek sütun yabancı anahtar kısıtlaması gösterir SalesOrderHeaderbaşvuran tablosuna SalesPersontablosu. Yalnızca başvuru yan tümcesini tek sütun yabancı anahtar kısıtlamasını için gereklidir.

SalesPersonID int NULL
REFERENCES SalesPerson(SalesPersonID)

SalesPersonID int NULL
REFERENCES SalesPerson(SalesPersonID)

Ayrıca açıkça yabancı anahtar yan tümcesi ve sütun özniteliği restate kullanabilirsiniz. Not sütun adı her iki tablodaki aynı olmak zorunda değil.

FOREIGN KEY (SalesPersonID) REFERENCES SalesPerson(SalesPersonID)

FOREIGN KEY (SalesPersonID) REFERENCES SalesPerson(SalesPersonID)

Birden çok sütun anahtar kısıtlamaları tablo kısıtlamaları olarak oluşturulur. De AdventureWorks2012 veritabanı, SpecialOfferProducttablo, sütunlu birincil anahtarı içerir. Aşağıdaki örnek, başka bir tablodan bu anahtara başvuruda gösterilmiştir; bir açık kısıtlama adı seçime bağlıdır.

CONSTRAINT FK_SpecialOfferProduct_SalesOrderDetail FOREIGN KEY
 (ProductID, SpecialOfferID)
REFERENCES SpecialOfferProduct (ProductID, SpecialOfferID)

CONSTRAINT FK_SpecialOfferProduct_SalesOrderDetail FOREIGN KEY
 (ProductID, SpecialOfferID)
REFERENCES SpecialOfferProduct (ProductID, SpecialOfferID)

C.UNIQUE kısıtlamaları kullanma

UNIQUE kısıtlamaları, benzersizliği nonprimary anahtar sütunları için kullanılır. Aşağıdaki örnek bir kısıtlamayı zorlar, Namesütununda Producttablo benzersiz olması gerekir.

Name nvarchar(100) NOT NULL
UNIQUE NONCLUSTERED

Name nvarchar(100) NOT NULL
UNIQUE NONCLUSTERED

D.default tanımları kullanılarak

Varsayılan bir değeri (Ekle ve GÜNCELLEŞTIR deyimleri) sağlamak için ne zaman değer sağlanan. Örneğin, AdventureWorks2012 veritabanı çalışanlar Doldur şirket farklı işler listeleme arama tablosuna dahil etmek. Gerçek bir açıklama açıkça değil girildiğinde her işi tanımlayan bir sütun altında açıklama karakter dize varsayılan kaynağı.

DEFAULT 'New Position - title not formalized yet'

DEFAULT 'New Position - title not formalized yet'

Sabitler yanı sıra, default tanımları işlevleri içerebilir. Aşağıdaki örnek, geçerli tarih girişi için almak için kullanın.

DEFAULT (getdate())

DEFAULT (getdate())

Parametresiz fonksiyonlu tarama da veri bütünlüğünü geliştirebilir. Bir satır eklenen kullanıcı izlemek için kullanıcı için parametresiz işlevini kullanın. Parametresiz işlevler ile parantez içine almayın.

DEFAULT USER

DEFAULT USER

E.check kısıtlamaları kullanma

Aşağıdaki örnek, içine girilen değerler yapılan kısıtlama gösterir CreditRatingsütun Vendortablo. İsimsiz bir sınırlamadır.

CHECK (CreditRating >= 1 and CreditRating <= 5)

CHECK (CreditRating >= 1 and CreditRating <= 5)

Bu örnek tablo sütununa girilen karakter veri deseni kısıtlama adlandırılmış sınırlamayla gösterir.

CONSTRAINT CK_emp_id CHECK (emp_id LIKE 
'[A-Z][A-Z][A-Z][1-9][0-9][0-9][0-9][0-9][FM]' 
OR emp_id LIKE '[A-Z]-[A-Z][1-9][0-9][0-9][0-9][0-9][FM]')

CONSTRAINT CK_emp_id CHECK (emp_id LIKE 
'[A-Z][A-Z][A-Z][1-9][0-9][0-9][0-9][0-9][FM]' 
OR emp_id LIKE '[A-Z]-[A-Z][1-9][0-9][0-9][0-9][0-9][FM]')

Bu örnekte, değerlerin belirli bir liste içinde olması gerekir veya belirli bir desen takip belirtir.

CHECK (emp_id IN ('1389', '0736', '0877', '1622', '1756')
OR emp_id LIKE '99[0-9][0-9]')

CHECK (emp_id IN ('1389', '0736', '0877', '1622', '1756')
OR emp_id LIKE '99[0-9][0-9]')

F.Gösterilen tam tablo tanımı

Aşağıdaki örnek tabloda tüm kısıtlama tanımları ile tam tablo tanımları gösterir PurchaseOrderDetailoluşturulan AdventureWorks2012 veritabanı. Örneği çalıştırmak için tablo şema değiştirilir, Not dbo.

CREATE TABLE dbo.PurchaseOrderDetail
(
    PurchaseOrderID int NOT NULL
        REFERENCES Purchasing.PurchaseOrderHeader(PurchaseOrderID),
    LineNumber smallint NOT NULL,
    ProductID int NULL 
        REFERENCES Production.Product(ProductID),
    UnitPrice money NULL,
    OrderQty smallint NULL,
    ReceivedQty float NULL,
    RejectedQty float NULL,
    DueDate datetime NULL,
    rowguid uniqueidentifier ROWGUIDCOL  NOT NULL
        CONSTRAINT DF_PurchaseOrderDetail_rowguid DEFAULT (newid()),
    ModifiedDate datetime NOT NULL 
        CONSTRAINT DF_PurchaseOrderDetail_ModifiedDate DEFAULT (getdate()),
    LineTotal  AS ((UnitPrice*OrderQty)),
    StockedQty  AS ((ReceivedQty-RejectedQty)),
    CONSTRAINT PK_PurchaseOrderDetail_PurchaseOrderID_LineNumber
               PRIMARY KEY CLUSTERED (PurchaseOrderID, LineNumber)
               WITH (IGNORE_DUP_KEY = OFF)
) 
ON PRIMARY;

G.xml şema koleksiyonu için yazılan bir xml sütun tablo oluşturma

Aşağıdaki örnek içeren bir tablo oluşturur bir xmlsütun, xml şema koleksiyonu için yazılan HRResumeSchemaCollection. DOCUMENTAnahtar belirtir her örneği xmlveri türü column_nametek bir üst düzey öğe içerebilir.

USE AdventureWorks2012;
GO
CREATE TABLE HumanResources.EmployeeResumes 
   (LName nvarchar(25), FName nvarchar(25), 
    Resume xml( DOCUMENT HumanResources.HRResumeSchemaCollection) );

H.Bölümlenmiş bir tablo oluşturma

Aşağıdaki örnek, bir tablo veya dizin dört bölüm bölüm bölüm işlevi oluşturur. Sonra örnek filegroups olan her dört bölüm tutmak belirten bir bölüm düzeni oluşturur. Son olarak, örnek bölüm düzeni kullanan bir tablo oluşturur. Bu örnek filegroups veritabanında zaten varsayar.

CREATE PARTITION FUNCTION myRangePF1 (int)
    AS RANGE LEFT FOR VALUES (1, 100, 1000) ;
GO

CREATE PARTITION SCHEME myRangePS1
    AS PARTITION myRangePF1
    TO (test1fg, test2fg, test3fg, test4fg) ;
GO

CREATE TABLE PartitionTable (col1 int, col2 char(10))
    ON myRangePS1 (col1) ;
GO

Sütun değerlerine dayalı col1, PartitionTable, bölümler aşağıdaki şekillerde atanır.

Filegroup

test1fg

test2fg

test3fg

test4fg

Bölüm

1

2

3

4

Değerleri

Col 1 <= 1

col1 > 1 ve col1 <= 100

col1 > 100 ve col1 <= 1,000

col1 > 1000

I.Sütun benzersiztanıtıcı veri türünü kullanarak

Aşağıdaki örnek içeren bir tablo oluşturur bir uniqueidentifiersütun. Örnek tablo yinelenen değerleri ekleme kullanıcılara karşı korumak için PRIMARY key kısıtlaması kullanır ve kullanır NEWSEQUENTIALID()olarak işlev DEFAULTyeni satırlar için değerleri sağlamak için kısıtlama. ROWGUIDCOL özelliği uygulanır uniqueidentifierböylece o $ROWGUID anahtar sözcüğü kullanılarak başvurulabilir sütun.

CREATE TABLE dbo.Globally_Unique_Data
    (guid uniqueidentifier CONSTRAINT Guid_Default DEFAULT NEWSEQUENTIALID() ROWGUIDCOL,
    Employee_Name varchar(60)
    CONSTRAINT Guid_PK PRIMARY KEY (guid) );

J.Hesaplanmış bir sütun için ifade kullanma

Aşağıdaki örnek, bir deyim kullanımını gösterir ((low + high)/2) hesaplamak için myavghesaplanan sütun.

CREATE TABLE dbo.mytable 
    ( low int, high int, myavg AS (low + high)/2 ) ;

K.Bir kullanıcı tanımlı türü sütunu temel alan hesaplanmış bir sütun oluşturma

Aşağıdaki örnek, kullanıcı tanımlı türünde tanımlanmış bir sütunla tablo oluşturur utf8string, türünün derleme ve türü, geçerli veritabanı içinde zaten oluşturulmuş varsayarsak. İkinci bir sütun temel alınarak tanımlanır utf8stringve yöntemini kullanır ToString(), type(class) utf8stringsütun için bir değer hesaplamak için.

CREATE TABLE UDTypeTable 
    ( u utf8string, ustr AS u.ToString() PERSISTED ) ;

L.Hesaplanmış bir sütun user_name işlevini kullanma

Aşağıdaki örnek USER_NAME()olarak işlev myuser_namesütun.

CREATE TABLE dbo.mylogintable
    ( date_in datetime, user_id int, myuser_name AS USER_NAME() ) ;

M.FILESTREAM sütun olan bir tablo oluşturma

Aşağıdaki örnek olan bir tablo oluşturur bir FILESTREAMsütun Photo. Bir veya daha fazla tablo varsa, FILESTREAMsütun, tabloda olması gerekir ROWGUIDCOLsütun.

CREATE TABLE dbo.EmployeePhoto
    (
    EmployeeId int NOT NULL PRIMARY KEY
    ,Photo varbinary(max) FILESTREAM NULL
    ,MyRowGuidColumn uniqueidentifier NOT NULL ROWGUIDCOL
        UNIQUE DEFAULT NEWID()
    );

N.Satır sıkıştırma kullanan bir tablo oluşturma

Aşağıdaki örnek, satır sıkıştırması kullanan bir tablo oluşturur.

CREATE TABLE dbo.T1 
(c1 int, c2 nvarchar(200) )
WITH (DATA_COMPRESSION = ROW);

Ek veri sıkıştırma örnekler için bkz: Veri Sıkıştırma.

O.Seyrek sütun ve belirlenen bir sütuna sahip tablo oluşturma

Aşağıdaki örnekler, nasıl seyrek sütunu olan bir tablo ve iki seyrek sütun ve belirlenen bir sütuna sahip tablo oluşturma Örnekler, temel sözdizimi kullanmaktadır. Daha karmaşık örnekler için bkz: Seyrek sütunlar kullanmave Sütun kümelerini kullanma.

Bu örnek, seyrek sütunu olan bir tablo oluşturur.

CREATE TABLE dbo.T1
    (c1 int PRIMARY KEY,
    c2 varchar(50) SPARSE NULL ) ;

Bu örnek, iki seyrek sütunları ve adlandırılmış ayarlamak sütunu olan bir tablo oluşturur CSet.

CREATE TABLE T1
    (c1 int PRIMARY KEY,
    c2 varchar(50) SPARSE NULL,
    c3 int SPARSE NULL,
    CSet XML COLUMN_SET FOR ALL_SPARSE_COLUMNS ) ;

Ayrıca bkz.

Başvuru

ALTER TABLE (Transact-SQL)

columnproperty (Transact-sql)

Index (Transact-sql) oluştur

CREATE VIEW (Transact-SQL)

Veri Türleri (Transact-SQL)

drop INDEX (Transact-sql)

sys.dm_sql_referenced_entities (Transact-sql)

sys.dm_sql_referencing_entities (Transact-sql)

drop table (Transact-sql)

PARTITION FUNCTION (Transact-sql) oluştur

PARTITION düzeni (Transact-sql) oluştur

CREATE TYPE (Transact-SQL)

eventdata (Transact-sql)

sp_help (Transact-sql)

sp_helpconstraint (Transact-sql)

sp_rename (Transact-sql)

sp_spaceused (Transact-sql)