PDO および SQL 4D

# 4D で使える SQL

(No version information available, might only be in Git)

4D で使える SQL — PDO および SQL 4D

### 説明

4D は ANSI 89 標準規格を厳密に実装しています。 使えるコマンドについて学ぶには 4D SQL ドキュメントを読むことを推奨します。 マニュアルの URL は » http://doc.4d.com/ です。以下に 4D SQL 独特の特徴をまとめました。 包括的なものではありませんが、導入としては使えるでしょう。

4D SQL 独特の特徴
特徴 | 代替策 | 注意
--- | --- | ---
INTEGER | INT を使うよう SQL を変更する | 4Dv12.0 で整数をサポートする型は INT です。
CHAR | かわりに VARCHAR を使う | 4Dv12.0 ではサポートしていません。
UNION | 未サポート。クエリを分割する | 4Dv12.0 ではサポートしていません。
SELECT 1 + 1; | SELECT 1 + 1 FROM _USER_SCHEMAS; | FROM は必須です。
FLOAT | FLOAT 値を SQL 4D 関数 (CAST, ROUND, TRUNC あるいは TRUNCATE) で FLOAT あるいは STRING にキャストする | 現在のバージョンの PDO_4D ドライバではサポートしていません。
強い型付け | SQL クエリの作成時に気をつけ、PHP のコードがきちんと期待通りの型のデータを渡すようにする | 正しい型を 4D に渡さなければなりません。'1' (文字列) を INTEGER のカラムに挿入することはできません。
PDO::execute($row)() は、テーブルのすべてのカラムが TEXT 型あるいは VARCHAR 型のときのみ動作する | プリペアドステートメントを使い、正しい型を渡す | PDO 拡張モジュールは、execute() の実行時にすべての値を文字列へキャストします。そして SQL データベース側で値をパースさせようとします。
SELECT NULL FROM TABLE | 定数 NULL を使わず、テーブルから取り出す | select のリストに定数 NULL を使うことはできません。
SELECT * FROM TABLE WHERE 1 | WHERE 1 = 1 を使う | WHERE 句で定数を使うことはできません。
SHOW TABLES | システムテーブルを使う | テーブルやスキーマ、インデックスなどの一覧は、 _USER_TABLES, _USER_COLUMNS, _USER_INDEXES, _USER_CONSTRAINTS, _USER_IND_COLUMNS, _USER_CONS_COLUMNS および _USER_SCHEMAS といったシステムテーブルから取得します。
SQL 構文の区切り文字 | 次の関数を使って SQL の要素を保護する function sqlEscapeElement(elem) { return '[' . str_replace(']',']]', $elem) . ']'; } | SQL の要素名 (テーブル、フィールド、ユーザー、グループ、 スキーマ、主キーなど) をエスケープするには、 識別子全体を角括弧で囲み、さらに閉じ角括弧 ']' は二重にしておかなければなりません。