Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да създадете псевдоним на потребителски дефиниран тип данни в SQL Server с помощта на T-SQL

В допълнение към многото типове данни, налични в SQL Server, имате и възможността да създадете свой собствен тип данни. Някои от тях се наричат ​​„дефинирани от потребителя типове данни“, докато други се наричат ​​„типове данни с псевдоним“.

Дефиниран от потребителя тип данни се внедрява чрез клас на сборка в Microsoft.NET Framework обща езикова среда за изпълнение (CLR).

тип данни псевдоним се основава на собствен тип система на SQL Server. С други думи, вие използвате съществуващ тип данни за основа на вашия тип данни за псевдоним.

След като казах това, видях Microsoft да използва термина „псевдоним от потребителски дефиниран тип данни“, когато се позовава на тип данни за псевдоним. Виждал съм също така да го наричат ​​просто „псевдоним на тип данни“.

Така или иначе, тази статия демонстрира как да създадете псевдоним на дефиниран от потребителя тип данни с помощта на Transact-SQL.

Пример 1 – Създайте псевдоним тип данни

За да създадете псевдоним тип данни, изпълнете CREATE TYPE израз спрямо базата данни, че искате да създадете псевдоним тип данни.

Ето пример за код, който създава псевдоним на дефиниран от потребителя тип данни въз основа на varchar на SQL Server тип данни:

ИЗПОЛЗВАЙТЕ Тест; СЪЗДАЙТЕ ТИП клиентски код ОТ varchar(8) НЕ NULL;

Резултат:

Командите завършени успешно. Общо време за изпълнение:00:00:00.028

В този случай създавам псевдоним тип данни, наречен clientcode в база данни, наречена Тест .

Псевдонимът ми е базиран на varchar(8) , което означава, че може да бъде низ с променлива дължина с дължина до 8 байта. За набори от символи за еднобайтово кодиране (като латиница) това ще съхранява до 8 знака. Въпреки това, за многобайтови кодиращи набори от символи, броят на знаците може да е по-малък.

Пример 2 – Преглед на типа данни за псевдоним

Можете да използвате sys.types за да проверите подробностите за вашия тип данни за псевдоним:

SELECT * FROM sys.typesWHERE name ='clientcode';

Резултат:

<предварително име | clientcodesystem_type_id | 167идентификатор_тип_потребител | 257schema_id | 1главна_идентификация | NULLmax_length | 8прецизност | 0мащаб | 0име_на_колекция | SQL_Latin1_General_CP1_CI_ASis_nullable | 0is_user_defined | 1е_тип_сглобка | 0default_object_id | 0rule_object_id | 0е_тип_таблица | 0

Можем да видим, че is_user_defined флагът за този тип данни е 1 , което означава, че това е потребителски дефиниран тип данни.

В този пример стесних резултатите само до клиентския код тип данни. Можете да използвате sys.types за връщане на информация за всички типове данни в базата данни. Вижте Как да върнете списък с типове данни в SQL Server за повече информация.

Сега, когато типът данни псевдоним е създаден, можем да продължим и да го използваме.

Пример 3 – Създайте таблица, която използва псевдонима

В този пример създавам таблица, която използва новосъздадения ми псевдоним на тип данни в една от дефинициите на колони.

ИЗПОЛЗВАЙТЕ тест;СЪЗДАЙТЕ ТАБЛИЦА Client( ClientCode clientcode PRIMARY KEY, FirstName varchar(50), LastName varchar(50));

Можем да разгледаме бързо колоните в таблицата:

ИЗБЕРЕТЕ c.name, c.system_type_id, c.user_type_id, c.max_length, c.is_nullableFROM sys.columns CINNER JOIN sys.tables tON t.object_id =c.object_idWHERE t.name ='Client';
>

Резултати:

+------------+-----------------+-------------- --+--------------+--------------+| име | system_type_id | user_type_id | максимална_дължина | is_nullable ||------------+-----------------+--------------- -+--------------+--------------|| Клиентски код | 167 | 257 | 8 | 0 || Име | 167 | 167 | 50 | 1 || Фамилия | 167 | 167 | 50 | 1 |+-----------+------------------+--------------- -+--------------+--------------+

Има още много колони с данни, но я стесних само до някои, които са свързани с тази статия.

Пример 4 – Вмъкване на данни

Сега е време да вмъкнете данни в колоната, която използва нашия дефиниран от потребителя псевдоним на тип данни.

INSERT INTO Client VALUES ('aaa00001', 'Satoshi', 'Nakamoto');

И сега изберете реда:

ИЗБЕРЕТЕ * ОТ клиента;

Резултат:

+--------------+------------+-----------+| Клиентски код | Име | Фамилия ||--------------+------------+------------|| aaa00001 | Сатоши | Накамото |+--------------+------------+------------+

Така можем да видим, че нашият тип данни за псевдоним е приел данните, както са посочени.

Но няма да е подходящ тест, освен ако не се опитаме да го нарушим.

Нека се опитаме да вмъкнем стойност, която не се придържа към нашия псевдоним:

INSERT INTO Client VALUES ('aaaa00002', 'Mikko', 'Linnamäki');

Резултат:

Съобщение 8152, ниво 16, състояние 30, ред 1 низ или двоични данни ще бъдат съкратени.

В този случай се опитах да вмъкна стойност, която изисква 9 байта за съхранение, но псевдонимът приема само стойности до 8 байта, така че го отхвърли.

Ако премахна един от знаците, той работи добре:

INSERT INTO Client VALUES ('aaa00002', 'Mikko', 'Linnamäki');ИЗБЕРЕТЕ * ОТ Client;

Резултат:

+--------------+------------+-----------+| Клиентски код | Име | Фамилия ||--------------+------------+------------|| aaa00001 | Сатоши | Накамото || aaa00002 | Мико | Линамяки |+--------------+------------+------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да вмъкнете резултатите от съхранена процедура във временна таблица в SQL Server

  2. Прехвърляне на данни от една база данни в друга база данни

  3. Използвайте @@IDENTITY, за да върнете последно въведената стойност на самоличността в SQL Server

  4. COT() Примери в SQL Server

  5. Преобразувайте „datetime2“ в „time“ в SQL Server (T-SQL примери)