Jawaban:
Mereka sama. Numerik secara fungsional setara dengan desimal.
MSDN: desimal dan numerik
decimal
adalah persis setepat menyatakan, sementara numeric
ini setidaknya setepat dinyatakan. Dalam SQL Server keduanya sama persis dengan yang dinyatakan, yaitu tidak menggunakan fleksibilitas untuk numeric
standar yang memungkinkan.
Column '<referencedColumn>' is not the same data type as referencing column '<parentTable>.<parentColumn>' in foreign key '<yourKeyName>'
. Keduanya harus NUMERIC (x, y), atau keduanya DECIMAL (x, y).
decimal
adalah setidaknya setepat menyatakan, sedangkan numeric
adalah persis setepat dinyatakan.
Inilah yang kemudian dikatakan standar SQL2003 (ยง6.1 Tipe Data) tentang keduanya:
<exact numeric type> ::=
NUMERIC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
| DECIMAL [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
| DEC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
| SMALLINT
| INTEGER
| INT
| BIGINT
...
21) NUMERIC specifies the data type
exact numeric, with the decimal
precision and scale specified by the
<precision> and <scale>.
22) DECIMAL specifies the data type
exact numeric, with the decimal scale
specified by the <scale> and the
implementation-defined decimal
precision equal to or greater than the
value of the specified <precision>.
Sepengetahuan saya tidak ada perbedaan antara tipe data NUMERIC dan DECIMAL. Mereka identik satu sama lain dan salah satunya dapat digunakan. Tipe data DECIMAL dan NUMERIC adalah tipe data numerik dengan presisi dan skala tetap.
Edit:
Berbicara dengan beberapa kolega mungkin ada hubungannya dengan DECIMAL sebagai standar SQL ANSI dan NUMERIC menjadi salah satu yang disukai Mircosoft karena lebih umum ditemukan dalam bahasa pemrograman. ...Mungkin ;)
Mereka adalah sinonim, tidak ada perbedaan sama sekali. Tipe data numerik dan numerik adalah tipe data numerik dengan presisi dan skala tetap.
-- Initialize a variable, give it a data type and an initial value
declare @myvar as decimal(18,8) or numeric(18,8)----- 9 bytes needed
-- Increse that the vaue by 1
set @myvar = 123456.7
--Retrieve that value
select @myvar as myVariable
Jawaban Joakim Backman spesifik, tetapi ini dapat memberikan kejelasan tambahan untuknya.
Ada perbedaan kecil. Sesuai SQL Untuk Dummies, Edisi ke-8 (2013):
Tipe data DECIMAL mirip dengan NUMERIC. ... Perbedaannya adalah bahwa implementasi Anda dapat menentukan presisi lebih besar dari apa yang Anda tentukan - jika demikian, implementasi menggunakan presisi yang lebih besar. Jika Anda tidak menentukan presisi atau skala, implementasi menggunakan nilai default, seperti halnya dengan tipe NUMERIC.
Tampaknya perbedaan pada beberapa implementasi SQL adalah dalam integritas data. DECIMAL memungkinkan overflow dari apa yang didefinisikan berdasarkan pada beberapa sistem default, sedangkan NUMERIC tidak.