Beberapa tahun yang lalu saya harus menulis mesin terjemahan; Anda memberinya satu set sql dan itu diterjemahkan ke dialek mesin yang saat ini terhubung. Mesin saya berfungsi di Postgres (AKA PostgreSql), Ingres, DB2, Informix, Sybase, dan Oracle - oh, dan ANTS. Terus terang, Oracle adalah yang paling tidak saya sukai (lebih lanjut tentang itu di bawah)... Sayangnya untuk Anda, mySql dan SQL Server tidak ada dalam daftar (pada saat itu keduanya tidak dianggap sebagai RDBMS yang serius - tetapi waktu dapat berubah).
Tanpa memperhatikan kualitas atau kinerja mesin - dan kemudahan membuat dan memulihkan cadangan - berikut adalah perbedaan utama:
- tipe data
- batas
- tidak valid
- kata-kata khusus
- semantik nol (lihat di bawah)
- semantik kutipan (kutipan tunggal ', kutipan ganda ", atau keduanya)
- semantik penyelesaian pernyataan
- fungsi semantik
- penanganan tanggal (termasuk kata kunci konstan seperti 'sekarang' dan format fungsi input / output)
- apakah komentar sebaris diizinkan
- panjang atribut maksimum
- jumlah maksimum atribut
- paradigma semantik koneksi / keamanan.
Tanpa membuat Anda bosan dengan semua data konversi, berikut ini contoh untuk satu tipe data, lvarchar:
oracle=varchar(%x) sybase=text db2="long varchar" informix=lvarchar postgres=varchar(%x) ants=varchar(%x) ingres=varchar(%x,%y)
Kesepakatan terbesar dari semuanya, menurut saya, adalah penanganan nol; Oracle SILENTLY mengonversi string input kosong ke nilai null. ...Di suatu tempat, LAMA yang lalu, saya membaca tulisan yang telah dilakukan seseorang tentang "Tujuh Belas Arti Null" atau semacamnya dan poin sebenarnya adalah bahwa nol sangat berharga dan perbedaan antara string nol dan string kosong adalah berguna dan tidak sepele! Saya pikir Oracle membuat kesalahan besar yang satu ini; tidak ada yang memiliki perilaku ini (yang pernah saya lihat).
Favorit kedua saya adalah SEMUT karena tidak seperti yang lainnya, mereka MELAKUKAN aturan konyol untuk sintaks sempurna yang sama sekali tidak dilakukan orang lain dan meskipun mereka mungkin satu-satunya perusahaan DB yang memberikan kepatuhan sempurna terhadap standar, mereka juga sangat merepotkan pantat untuk menulis kode.
Jauh dan jauh favorit saya adalah Postgres; itu sangat cepat dalam situasi _real_world_, memiliki dukungan besar, dan open source / gratis.