PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Perbandingan tipe kolom database di MySQL, PostgreSQL, dan SQLite? (Pemetaan Lintas)

Daftar hal yang akan saya lakukan secara berbeda:

MEDIUMINT di MySQL adalah bebek aneh (3 byte). Saya akan menghindarinya, tetapi sebaliknya memetakannya ke INTEGER juga.

MySQL BOOLEAN (alias BOOL, alias TINYINT(1) ) tidak kompatibel dengan tipe pg boolean. Anda mungkin atau mungkin tidak dapat mem-port aplikasi tergantung pada apa yang mereka gunakan sebagai literal boolean. Di MySQL, TRUE dan FALSE memetakan ke 1 dan 0 nilai integer. Sepertinya tipe pg BOOLEAN menggunakan notasi literal string. Jadi aplikasi mungkin atau mungkin tidak portabel - setidaknya tidak ada penggantinya.

Akhirnya, untuk baris terakhir di tabl Anda, saya pikir frasa SQLite seharusnya berbunyi:

INTEGER PRIMARY KEY AUTOINCREMENT

Ini kira-kira setara dengan

BIGINT PRIMARY KEY AUTO_INCREMENT

di MySQL. Di postgres, tipe data SERIAL menghasilkan kolom INTEGER, dan ini akan hampir sama dengan

MySQL
INTEGER PRIMARY KEY AUTO_INCREMENT

Postgres juga memiliki tipe BIGSERIAL, yang sama dengan SERIAL tetapi dengan tipe BIGINT, bukan tipe INT.

Yang saya lewatkan:

Saya kehilangan INTEGER (alias INT) untuk MySQL. Ini sebanding dengan INTEGER di pg. Penghilangan yang sangat penting:VARCHAR dan CHAR. Secara semantik, VARCHAR di MySQL dan PG, dan CHAR di MySQL dan PG adalah sama, tetapi di MySQL jenis ini memiliki panjang maksimum yang jauh lebih pendek. Di MySQL jenis ini dapat memiliki maksimal sedikit kurang dari 64kb, di pg 1Gb (byte). Penentu panjang sebenarnya dinyatakan dalam jumlah karakter, jadi jika Anda memiliki set karakter multi-byte, Anda harus membagi panjang maksimum dengan jumlah karakter maksimum untuk mendapatkan panjang maksimum teoretis yang ditentukan untuk kumpulan karakter itu. Di SQLite, VARCHAR dan CHAR memetakan keduanya ke TEXT

Tipe data BIT di MySQL dan PG memiliki semantik yang kurang lebih sama, tetapi di MySQL panjang maksimum tipe data BIT adalah 64 (bit)

Saya pikir tipe data MySQL VARBINARY paling baik dibandingkan dengan tipe data BYTEA PG. (tapi memang tipe BLOB MySQL juga memetakannya)

Tipe FLOAT di MySQL harus setara dengan REAL di postgres (dan REAL di SQLite juga)Tipe DECIMAL di MySQL setara dengan DECIMAL di postgres, kecuali bahwa di postgres, tipenya tidak memaksakan batas arbitrer pada presisi, sedangkan di MySQL presisi maksimum adalah (saya percaya) 70. (yaitu, 70 posisi angka) Untuk MySQL dan Postgres, NUMERIC adalah alias untuk tipe DECIMAL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kesalahan aplikasi uji django - Mendapat kesalahan saat membuat basis data uji:izin ditolak untuk membuat basis data

  2. Cara Membandingkan Kinerja PostgreSQL Menggunakan Sysbench

  3. LOWER() – Konversikan ke Huruf Kecil di PostgreSQL

  4. Django-DB-Migrations:tidak dapat MENGUBAH TABLE karena memiliki peristiwa pemicu yang tertunda

  5. Cara Menyisipkan ke dalam Array di PostgreSQL