Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Membuat Alias ​​​​Tipe Data Buatan Pengguna di SQL Server menggunakan T-SQL

Selain banyak tipe data yang tersedia di SQL Server, Anda juga memiliki opsi untuk membuat tipe data Anda sendiri. Beberapa di antaranya disebut sebagai "tipe data yang ditentukan pengguna", sementara yang lain disebut sebagai "tipe data alias".

Tipe data yang ditentukan pengguna diimplementasikan melalui kelas perakitan di Microsoft.NET Framework common language runtime (CLR).

Tipe data alias didasarkan pada tipe sistem asli SQL Server. Dengan kata lain, Anda menggunakan tipe data yang ada sebagai dasar tipe data alias Anda.

Karena itu, saya telah melihat Microsoft menggunakan istilah "alias tipe data yang ditentukan pengguna" ketika merujuk ke tipe data alias. Saya juga melihatnya disebut hanya sebagai "alias tipe data".

Either way, artikel ini menunjukkan cara membuat alias tipe data yang ditentukan pengguna menggunakan Transact-SQL.

Contoh 1 – Membuat Tipe Data Alias

Untuk membuat tipe data alias, jalankan CREATE TYPE pernyataan terhadap database yang ingin Anda buat tipe data alias.

Berikut adalah contoh kode yang membuat alias tipe data yang ditentukan pengguna berdasarkan varchar SQL Server tipe data:

USE Test;

CREATE TYPE clientcode  
FROM varchar(8) NOT NULL;

Hasil:

Commands completed successfully.
Total execution time: 00:00:00.028

Dalam hal ini, saya membuat tipe data alias bernama kode klien dalam database bernama Uji .

Alias ​​​​saya didasarkan pada varchar(8) , yang berarti dapat berupa string dengan panjang variabel hingga 8 byte. Untuk set karakter encoding byte tunggal (seperti Latin), ini akan menyimpan hingga 8 karakter. Namun, untuk kumpulan karakter penyandian multi-byte, jumlah karakter mungkin lebih sedikit.

Contoh 2 – Melihat Tipe Data Alias

Anda dapat menggunakan sys.types untuk memeriksa detail tipe data alias Anda:

SELECT * FROM sys.types
WHERE name = 'clientcode';

Hasil:

name              | clientcode
system_type_id    | 167
user_type_id      | 257
schema_id         | 1
principal_id      | NULL
max_length        | 8
precision         | 0
scale             | 0
collation_name    | SQL_Latin1_General_CP1_CI_AS
is_nullable       | 0
is_user_defined   | 1
is_assembly_type  | 0
default_object_id | 0
rule_object_id    | 0
is_table_type     | 0

Kita dapat melihat bahwa is_user_defined tanda untuk tipe data ini adalah 1 , artinya ini adalah tipe data yang ditentukan pengguna.

Dalam contoh ini saya mempersempit hasilnya menjadi clientcode tipe data. Anda dapat menggunakan sys.types untuk mengembalikan informasi tentang semua tipe data dalam database. Lihat Cara Mengembalikan Daftar Tipe Data di SQL Server untuk informasi selengkapnya.

Sekarang setelah tipe data alias telah dibuat, kita dapat melanjutkan dan menggunakannya.

Contoh 3 – Membuat Tabel yang Menggunakan Alias

Dalam contoh ini saya membuat tabel yang menggunakan alias tipe data yang baru saya buat di salah satu definisi kolomnya.

USE Test;

CREATE TABLE Client
(
    ClientCode clientcode PRIMARY KEY,
    FirstName varchar(50),
    LastName varchar(50)
);

Kita dapat melihat sekilas kolom dalam tabel:

SELECT 
  c.name,  
  c.system_type_id,
  c.user_type_id,
  c.max_length,
  c.is_nullable
FROM sys.columns c
INNER JOIN sys.tables t
ON t.object_id = c.object_id
WHERE t.name = 'Client';

Hasil:

+------------+------------------+----------------+--------------+---------------+
| name       | system_type_id   | user_type_id   | max_length   | is_nullable   |
|------------+------------------+----------------+--------------+---------------|
| ClientCode | 167              | 257            | 8            | 0             |
| FirstName  | 167              | 167            | 50           | 1             |
| LastName   | 167              | 167            | 50           | 1             |
+------------+------------------+----------------+--------------+---------------+

Ada banyak lagi kolom data, tetapi saya telah mempersempitnya menjadi hanya beberapa yang relevan dengan artikel ini.

Contoh 4 – Sisipkan Data

Sekarang saatnya memasukkan data ke dalam kolom yang menggunakan alias tipe data yang ditentukan pengguna.

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

Dan sekarang pilih barisnya:

SELECT * FROM Client;

Hasil:

+--------------+-------------+------------+
| ClientCode   | FirstName   | LastName   |
|--------------+-------------+------------|
| aaa00001     | Satoshi     | Nakamoto   |
+--------------+-------------+------------+

Jadi kita bisa melihat bahwa tipe data alias kita telah menerima data seperti yang ditentukan.

Tapi itu tidak akan menjadi ujian yang layak kecuali kita mencoba memecahkannya.

Mari kita coba memasukkan nilai yang tidak sesuai dengan alias kita:

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

Hasil:

Msg 8152, Level 16, State 30, Line 1
String or binary data would be truncated.

Dalam hal ini saya mencoba memasukkan nilai yang membutuhkan 9 byte untuk disimpan, tetapi alias hanya menerima nilai hingga 8 byte, jadi ditolak.

Jika saya menghapus salah satu karakter, itu berfungsi dengan baik:

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

SELECT * FROM Client;

Hasil:

+--------------+-------------+------------+
| ClientCode   | FirstName   | LastName   |
|--------------+-------------+------------|
| aaa00001     | Satoshi     | Nakamoto   |
| aaa00002     | Mikko       | Linnamäki  |
+--------------+-------------+------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghubungkan Delphi di Linux ke SQL Server

  2. Nilai eksplisit untuk kolom identitas dalam tabel hanya dapat ditentukan saat daftar kolom digunakan dan IDENTITY_INSERT AKTIF SQL Server

  3. Daftar semua kolom indeks &indeks di SQL Server DB

  4. Cara Menghapus Kolom di SQL Server menggunakan T-SQL

  5. Kinerja SQL Server TOP CPU Query -2