Quantcast
Channel: Planet MySQL
Viewing all articles
Browse latest Browse all 1081

[勝手に補足]SQLの観点から「Oracle Database」「PostgreSQL」 「MySQL」の特徴を整理しよう!

$
0
0
結構人気(?) のこの記事、ざっとよもうと思ったら最初に誤植(?) があったので、通読してまとめておきます。。。。

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

Viewing all articles
Browse latest Browse all 1081

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>