Aracılığıyla paylaş


Özel veri türleri'ni kullanma

Bu bölümde kullanılabilir olan özel veri türleri açıklanmıştırSQL Server.Özel veri türleri herhangi başka bir veri türü kategorisi uyma olanlardır.InSQL Server, özel veri türleribit,hierarchyid,sql_variant,sysname,table,timestampdiğer ad ad veri türleri.

bit

The bitdata type is a numeric data type that stores either 0 or 1.Dize değerlerini true ve false için dönüştürülebilirbit, aşağıdaki örnekte gösterildiği gibi değerleri:

SELECT CONVERT (bit, 'true')
SELECT CONVERT(bit, 'false')

In this example, true is converted to 1 and false is converted to 0.bit data does not have to be enclosed in single quotation marks.

hierarchyid

The hierarchyid data type is used to manage hierarchical data and tables that have a hierarchical structure.Hiyerarşik veriyle çalışmak içinTransact-SQLkod vehierarchyid işlevleri.Daha fazla bilgi için bkz: Hierarchyid veri türleri (Veritabanı Altyapısı) kullanma.

sql_variant

The sql_variant data type enables a single column, parameter, or variable to store data values of different data types.Her birsql_variantsütun kayıt değeri ve meta veriler açıklayan değeri.Aşağıdaki meta veriler kullanılabilir:

  • Temel veri türü

  • En büyük boyutu

  • Ölçek

  • duyarlık

  • Harmanlama

Belirli bir meta veriler almak içinsql_variantörnek, kullanınSQL_VARIANT_PROPERTY işlev.

Aşağıdaki örnekte, ikinci tablo içeren birsql_variantsütun:

CREATE TABLE ObjectTable (
   ObjectID int CONSTRAINT PKObjectTable PRIMARY KEY,
   ObjectName nvarchar(80),
   ObjectWeight decimal(10,3),
   ObjectColor nvarchar(20))
CREATE TABLE VariablePropertyTable (
   ObjectID int REFERENCES ObjectTable(ObjectID),
   PropertyName nvarchar(100),
   PropertyValue sql_variant,
   CONSTRAINT PKVariablePropertyTable
   PRIMARY KEY(ObjectID, PropertyName))

sysname

The sysname data type is used for table columns, variables, and stored procedure parameters that store object names.Tam tanımısysnametanımlayıcılar için kurallar ilgiliTherefore, it can vary between instances of SQL Server.sysname is functionally the same as nvarchar(128) except that, by default, sysname is NOT NULL.Önceki sürümlerindeSQL Server,sysnameolarak tanımlanmışvarchar(30).

Important noteImportant Note:

Veritabanlarında, büyük küçük durum veya, bir ikili alfabesysnameolarak tanınan birSQL ServerSistem veri türü yalnızca, görüntülenen küçük.

tablo

The table data type functions like a temporary table.Bir sonuç kümesi daha sonra işlenmek üzere saklamak için kullanılır.Bu veri türü yalnızca için kullanılabilir tür yerel değişkenler tanımlamaktabledönüş değeri bir kullanıcı tanımlı işlev.

Tanımını bir tablo değişken veya dönüş değeri, sütun, veri türü, duyarlık ve ölçeği her sütun ve isteğe bağlı birincil anahtar, UNIQUE, null ve CHECK) kısıtlamaları tanımlarını içerir.Tablo kullanıcı tanımlı veri türü olarak kullanılamaz.

Saklanan satır biçiminde birtabledeğişken veya tarafından döndürülen değişkeni olarak bildirilen veya işlev oluşturulan kullanıcı tanımlı bir işlev tanımlanmalıdır.Sözdizimi CREATE tablo sözdizimi hakkında örneğin dayanır:

DECLARE @TableVar TABLE (Cola int PRIMARY KEY, Colb char(3))
INSERT INTO @TableVar VALUES (1, 'abc')
INSERT INTO @TableVar VALUES (2, 'def')
SELECT * FROM @TableVar
GO

table variables and user-defined functions that return a table can be used only in certain SELECT and INSERT statements, and where tables are supported in the UPDATE, DELETE, and DECLARE CURSOR statements.table variables and user-defined functions that return a table cannot be used in any other Transact-SQL statements.

Dizin veya uygulanan diğer sınırlamalara tablo DECLARE değişken ya da CREATE işlev ifadesini bir parçası olarak tanımlanmalıdır.CREATE INDEX veya ALTER TABLE deyimi Tablo değişkenlerini ve kullanıcı tanımlı işlevler başvuru yapamazsınız, çünkü bunlar daha sonra uygulanamaz.

Tanımlamak için kullanılan sözdizimi hakkında daha fazla bilgi içintabledeğişkenler ve kullanıcı tanımlı işlevler, bkz:@ Local_variable (Transact-SQL) BILDIRIR.ve(Transact-SQL) işlev CREATE.

Timestamp

The timestamp data type has nothing to do with times or dates.timestamp values are binary numbers that indicate the relative sequence in which data modifications have occurred in a database.

Asla kullanmatimestamptuşları, özellikle birincil anahtar sütunları içintimestampher satır değiştirilen değerini değiştirir.

Veri değişiklikleri olduğunda saatleri kaydetmek için bir tablo, ya da kullanan birdatetime2orsmalldatetimeolayları ve değerleri herhangi bir değişiklik meydana geldiğinde otomatik olarak güncelleştirmek için tetikleyici kaydetmek için veri türü.

diğer ad ad veri türleri

diğer ad ad veri türlerini etkinleştirmek, genişletmek birSQL Servertemel veri türü, örneğinvarchar, açıklayıcı bir ad ve biçimi, özelleştirilmiş belirli bir kullanım.Örneğin, aşağıdaki ifadeyi kullanan birbirthdaytemel alan kullanıcı tanımlı veri türüdatetimeverileri yazın ve için null değerlere izin verir ( NULL):

EXEC sp_addtype birthday, datetime, 'NULL'

Kullanıcı tanımlı veri türleri uygulamak için taban türü seçtiğinizde dikkatli olun.Örneğin, ABD, sosyal güvenlik numarası olan bir biçimdennn-nn-nnnn.Sosyal Güvenlik numarası numaraları içerir, ancak sayıları bir tanımlayıcı oluşturmak ve matematiksel işlemleri tabi.Nedenle, genellikle bir sosyal güvenlik numarası kullanıcı tanımlı veri türü olarak oluşturulacak olanvarcharve aşağıdaki örnekte gösterildiği gibi tabloda saklanan sosyal güvenlik numaralarının biçimi uygulamak için bir CHECK kısıtlaması:

EXEC sp_addtype SSN, 'VARCHAR(11)', 'NOT NULL'
GO
CREATE TABLE ShowSSNUsage (EmployeeID int PRIMARY KEY, EmployeeSSN SSN, CONSTRAINT CheckSSN CHECK ( EmployeeSSN LIKE '[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]' )
)
GO

SSK sütunları, genellikle anahtar sütunlar, dizinler, özellikle kümelenmiş dizinler kullanılıyorsa, SSK kullanıcı tanımlı veri türü kullanarak uygulandığında anahtarların boyutu 11 bayt 4 azaltılabilirintveri türü yerine temel.Bu anahtar boyutunu azaltma veri artırır.Geliştirilmiş veri alımı ve sağlanmasına yönelik olarak gerekli CHECK kısıtlaması verimliliğini genellikle outweigh işlemesini ek dönüştürmeintSSK değerleri olan bir karakter biçimi için görüntülenen veya değiştirilmiş.