✓実行する SQL 文 BEGIN; INSERT INTO table1 VALUES (100, 'data1'); BEGIN; ROLLBACK; RDBMS 実行結果 備考 Oracle Database - BEGIN 文無し PostgreSQL ROLLBACK WARNING (there is already a transaction in progress) が発生 MySQL COMMIT SQL Server ROLLBACK BEGIN TRANSACTION 文を使用 SQLite ROLLBACK Runtime error: cannot start a transaction within a transaction が発生 ✓実行結果
✓実行する SQL 文 CREATE TABLE table1(column1 INTEGER, column2 VARCHAR(10)); SELECT CASE column1 WHEN 100 THEN 'Value#1' ELSE column1 END FROM table1; RDBMS 実行可否 備考 Oracle Database Error ORA-00932: incompatible with expected data type CHAR PostgreSQL Error ERROR: invalid input syntax for type integer MySQL Success SQL Server Error Conversion failed when converting the varchar value Spanner Error No matching signature for operator CASE for argument types SQLite Success ✓実行結果
✓予約語とオブジェクト名の変換 RDBMS 予約語数 エスケープ文字 大文字/小文字変換 Oracle Database 110 ダブルクォーテーション 大文字に変換 PostgreSQL 101 ダブルクォーテーション 小文字に変換 MySQL 264 バッククォート デフォルトはプラットフォームに依存 Linux では大文字/小文字は区別される SQL Server 185 ダブルクォーテーション 名前は大文字・小文字を維持、SQL では無視 mysql> CREATE TABLE condition(id INT PRIMARY KEY, category TEXT); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition(id INT PRIMARY KEY, category TEXT)' at line 1 ✓予約語を使ったテーブル作成