PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

So sánh các kiểu cột cơ sở dữ liệu trong MySQL, PostgreSQL và SQLite? (Bản đồ chéo)

Danh sách những việc tôi sẽ làm khác đi:

MEDIUMINT trong MySQL là một con vịt kỳ quặc (3 byte). Tôi sẽ tránh nó, nhưng nếu không thì cũng ánh xạ nó với INTEGER.

MySQL BOOLEAN (bí danh BOOL, bí danh TINYINT (1)) không tương thích với kiểu boolean pg. Bạn có thể chuyển hoặc không thể chuyển ứng dụng tùy thuộc vào những gì chúng sử dụng dưới dạng ký tự boolean. Trong MySQL, TRUE và FALSE ánh xạ tới các giá trị số nguyên 1 và 0. Có vẻ như kiểu pg BOOLEAN sử dụng ký hiệu chữ chuỗi. Vì vậy, các ứng dụng có thể có hoặc có thể không di động - ít nhất thì nó không thể thay thế được.

Cuối cùng, đối với dòng cuối cùng trong tabl của bạn, tôi nghĩ cụm từ SQLite nên đọc:

INTEGER PRIMARY KEY AUTOINCREMENT

Điều này gần tương đương với

BIGINT PRIMARY KEY AUTO_INCREMENT

trong MySQL. Trong postgres, kiểu dữ liệu SERIAL dẫn đến cột INTEGER và cột này sẽ giống với cột của MySQL

INTEGER PRIMARY KEY AUTO_INCREMENT

Postgres cũng có kiểu BIGSERIAL, giống như SERIAL nhưng có kiểu BIGINT thay vì kiểu INT.

Những gì tôi đã bỏ lỡ:

Tôi thiếu INTEGER (bí danh INT) cho MySQL. Nó có thể so sánh với INTEGER trong pg. Các thiếu sót rất quan trọng:VARCHAR và CHAR. Về mặt ngữ nghĩa, VARCHAR trong MySQL và PG, và CHAR trong MySQL và PG đều giống nhau, nhưng trong MySQL, các kiểu này có độ dài tối đa ngắn hơn nhiều. Trong MySQL, các loại này có thể có tối đa nhỏ hơn 64kb một chút, tính bằng pg 1Gb (byte). Bộ chỉ định độ dài thực tế được biểu thị bằng số ký tự, vì vậy nếu bạn có bộ ký tự nhiều byte, bạn phải chia độ dài tối đa cho số ký tự tối đa để có được độ dài tối đa theo lý thuyết được chỉ định cho bộ ký tự đó. Trong SQLite, VARCHAR và CHAR ánh xạ cả hai thành TEXT

Các kiểu dữ liệu BIT trong MySQL và PG có ngữ nghĩa gần giống nhau, nhưng trong MySQL, độ dài tối đa của kiểu dữ liệu BIT là 64 (bit)

Tôi nghĩ rằng kiểu dữ liệu VARBINARY của MySQL có thể so sánh tốt nhất với kiểu dữ liệu BYTEA của PG. (nhưng thực sự các kiểu BLOB của MySQL cũng ánh xạ đến điều đó)

Kiểu FLOAT trong MySQL phải tương đương với REAL trong postgres (và REAL trong SQLite cũng vậy) Kiểu DECIMAL trong MySQL tương đương với DECIMAL trong postgres, ngoại trừ rằng trong postgres, kiểu này không áp đặt giới hạn thừa về độ chính xác, trong khi MySQL có độ chính xác tối đa là (tôi tin là) 70. (nghĩa là 70 vị trí số) Đối với cả MySQL và Postgres, NUMERIC là bí danh cho kiểu 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. PostgreSQL:Hiển thị các bảng trong PostgreSQL

  2. Không thể cài đặt PG gem trên máy Mac của tôi với Mavericks

  3. Cài đặt postgresql với NSIS

  4. Cách pg_sleep_until () hoạt động trong PostgreSQL

  5. Làm cách nào để chọn giá trị trước đó một cách hiệu quả?