結構人気(?) のこの記事、ざっとよもうと思ったら最初に誤植(?) があったので、通読してまとめておきます。。。。
SQLの観点から「Oracle Database」「PostgreSQL」 「MySQL」の特徴を整理しよう!(DBonline)
なお、以下二ページ目の閲覧は会員登録(無料)が必要です。
表2:主なデータ型の比較
[誤]
Oracle、PPEE(※) PostgreSQL MySQL
NUMBER NUMERIC VARCHAR
[正]
Oracle、PPEE(※) PostgreSQL MySQL
NUMBER NUMERIC NUMERIC
まぁVARCHARに入らんこともないですが。。。。タイポでしょう。。。
表3:表名・列名の命名規則の比較
[誤]
アンダースコア(_)以外の記号の利用($、#、- など) ○ ○ ×
[正]
アンダースコア(_)以外の記号の利用($、#、- など) ○ ○ ○
``でかこってください。$は囲わなくても可能でしたが。。。。
mysql> create table $meiji(i1 int);
Query OK, 0 rows affected (0.56 sec)
mysql> create table mei$ji(i1 int);
Query OK, 0 rows affected (0.41 sec)
mysql> create table `mei#ji`(i1 int);
Query OK, 0 rows affected (0.41 sec)
mysql> create table `-mei#ji`(i1 int);
Query OK, 0 rows affected (0.43 sec)
mysql> show tables;
+-----------------+
| Tables_in_01mon |
+-----------------+
| $meiji |
| -mei#ji |
| mei#ji |
| mei$ji |
+-----------------+
4 rows in set (0.00 sec)
5.2. スキーマオブジェクト名
表5:連続値の生成機能の比較
[誤]
CREATE TABLE test
(testno NUMERIC(2) AUTO_INCREMENT
PRIMARY KEY);
[正]
CREATE TABLE test
(testno INT AUTO_INCREMENT
PRIMARY KEY);
AUTO_INCREMENTに指定できるのは整数と浮動小数点(float, double)だけで、固定小数点のものはエラーがでます。
mysql> CREATE TABLE test(testno NUMERIC(2) AUTO_INCREMENT PRIMARY KEY);
ERROR 1063 (42000): Incorrect column specifier for column 'testno'
mysql> CREATE TABLE test(testno INT AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.31 sec)
8.1.17. CREATE TABLE 構文
[現在の記述]
PostgreSQLでは、データ型にSERIAL型を指定すると暗黙的に順序が作成され、その順序を使用するように設定されます。
[改善案]
PostgreSQLでは、データ型にSERIAL型を指定すると暗黙的に順序が作成され、その順序を使用するように設定されます。MySQLでもデータ型にSERIAL型を指定でき、SERIAL は BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE の別名です。
6.1.1. 数値型の概要
mysql> CREATE TABLE test
-> (testno SERIAL);
Query OK, 0 rows affected (0.48 sec)
mysql> show create table test¥G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`testno` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
UNIQUE KEY `testno` (`testno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
ありゃ、結構時間がかかったので、今日はここまで。三ページ以降はまた次の機会に。。。。
しかし、土曜日早朝になにやってんだ >> おれ
PlanetMySQL Voting: Vote UP / Vote DOWN
SQLの観点から「Oracle Database」「PostgreSQL」 「MySQL」の特徴を整理しよう!(DBonline)
なお、以下二ページ目の閲覧は会員登録(無料)が必要です。
表2:主なデータ型の比較
[誤]
Oracle、PPEE(※) PostgreSQL MySQL
NUMBER NUMERIC VARCHAR
[正]
Oracle、PPEE(※) PostgreSQL MySQL
NUMBER NUMERIC NUMERIC
まぁVARCHARに入らんこともないですが。。。。タイポでしょう。。。
表3:表名・列名の命名規則の比較
[誤]
アンダースコア(_)以外の記号の利用($、#、- など) ○ ○ ×
[正]
アンダースコア(_)以外の記号の利用($、#、- など) ○ ○ ○
``でかこってください。$は囲わなくても可能でしたが。。。。
mysql> create table $meiji(i1 int);
Query OK, 0 rows affected (0.56 sec)
mysql> create table mei$ji(i1 int);
Query OK, 0 rows affected (0.41 sec)
mysql> create table `mei#ji`(i1 int);
Query OK, 0 rows affected (0.41 sec)
mysql> create table `-mei#ji`(i1 int);
Query OK, 0 rows affected (0.43 sec)
mysql> show tables;
+-----------------+
| Tables_in_01mon |
+-----------------+
| $meiji |
| -mei#ji |
| mei#ji |
| mei$ji |
+-----------------+
4 rows in set (0.00 sec)
5.2. スキーマオブジェクト名
表5:連続値の生成機能の比較
[誤]
CREATE TABLE test
(testno NUMERIC(2) AUTO_INCREMENT
PRIMARY KEY);
[正]
CREATE TABLE test
(testno INT AUTO_INCREMENT
PRIMARY KEY);
AUTO_INCREMENTに指定できるのは整数と浮動小数点(float, double)だけで、固定小数点のものはエラーがでます。
mysql> CREATE TABLE test(testno NUMERIC(2) AUTO_INCREMENT PRIMARY KEY);
ERROR 1063 (42000): Incorrect column specifier for column 'testno'
mysql> CREATE TABLE test(testno INT AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.31 sec)
8.1.17. CREATE TABLE 構文
[現在の記述]
PostgreSQLでは、データ型にSERIAL型を指定すると暗黙的に順序が作成され、その順序を使用するように設定されます。
[改善案]
PostgreSQLでは、データ型にSERIAL型を指定すると暗黙的に順序が作成され、その順序を使用するように設定されます。MySQLでもデータ型にSERIAL型を指定でき、SERIAL は BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE の別名です。
6.1.1. 数値型の概要
mysql> CREATE TABLE test
-> (testno SERIAL);
Query OK, 0 rows affected (0.48 sec)
mysql> show create table test¥G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`testno` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
UNIQUE KEY `testno` (`testno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
ありゃ、結構時間がかかったので、今日はここまで。三ページ以降はまた次の機会に。。。。
しかし、土曜日早朝になにやってんだ >> おれ
JUGEMテーマ:コンピュータ
PlanetMySQL Voting: Vote UP / Vote DOWN