2011-05-06

Portable SQL

如果想達成符合標準 ANSI SQL,並應用至可各種不同的 DBMS 的 SQL 查詢的話,只能實作非常基本的功能,並將大部份功能的交給應用層來處理。
下列資訊以 SQLite 、 MySQL 、 PostgreSQL 資料庫為主。
  • 共同支援的資料型別
    • 文字
      • CHAR
      • VARCHAR 65536
      • TEXT
    • 數字
      • INT 
      • BIGINT (非標準 MySQL、PostgreSQL 都有支援)
    • 日期時間
      • DATETIME 用文字取代,依 ISO 8601 分析為時間日期
        • PostgreSQL 不支援
      • TIMESTAMP 用整數 INT 或 BIGINT 取代,代表 1970-01-01T00:00:00 GMT 至今的秒數(或毫秒數)
        • MySQL 的 DATETIME 與 TIMESTAMP 只精確到秒數
      • 預設值 MySQL 、 SQLite 、 PostgreSQL 都使用 CURRENT_TIME、 CURRENT_DATE 、 CURRENT_TIMESTAMP 等常數
  • AUTO INCREMENT 
    • MySQL 用關鍵字 AUTO_INCREMEN
    • SQLite 用關鍵字 AUTOINCREMEN
    • PostgreSQL 用 serial 資料型別
    • 替代方式
      • 整數 自行撰寫下一值的函式
      • 文字 用 uniqid() 這類的函式
  • 內建函式
    • 將計算交給應用層處理
  • 註解
    • ANSI SQL 使用雙短線 (--CommentSomething)
  • 字串註記
    • ANSI SQL 使用雙引號 ("Keyword")
  • 分頁

No comments:

Post a Comment