- ベストアンサー
どのSQLでも、文法は同じでしょうか?
MYSQLであろうがPostgreSQLであろうが、同じですか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
基本的なところは同じですが、単純に同じかと問われたら同じではないと答えますね。 例えばWITH句はSQL99の標準仕様ですが、MySQLではサポートされていなかったはずです。 あとは"と'の解釈が違ったりとか、LIMITの仕様が違ったりとか、色々と細かな違いがあります。 複数のRDBMSを切り替える可能性がある場合は、SQLを直書きするのではなく、ORMを使うほうがいいです。
その他の回答 (5)
- mayoke
- ベストアンサー率25% (16/62)
SELECT,FROM,WHERE,GROUPBYとかの書き方はおおむね同じですよ。 ただし、スキーマやユーザーの考え方がDBごとに違ったりします。 特に結合、集合演算子、関数は大きくは異なりませんが若干は違いがちらほらあります。 とわいえSQLとして考える方向性はいずれも一緒ですのでまずは1つのDBに精通しておけば、Oracleで言うところのSUBSTRはSQLSERVERでは~とか検索するとすぐに情報がネットで拾えて対応できると思いますよ。
お礼
回答頂きありがとうございました。
- IDii24
- ベストアンサー率24% (1597/6506)
言い忘れましたが同じOracleでもDBのバージョンによって使える文法が違います。例えばJOIN文が使えないバージョンもあります。さらにテーブルでSELECTしたものだけをUPDATEする場合もSQLserverの方が単純です。ORACLEの場合はすごーく複雑になります。 https://ja.wikipedia.org/wiki/SQL このリンクにあるように最初はカーソルもサポートしていません。92バージョンぐらいからPCDBを意識して変わってきています。SQL3になると今のバージョンに近い構文を受け付けます。 僕らはIBMで最初からSQLに関わってきているのでここまで普及するとは思っていませんでした。手続き型プログラム言語で抜き出してDBファイルを関連づける処理から、リレーショナルで関連づけられるようになっても殆どのコンピューターが持っているDBはRDBではありませんでしたから。SYSTEM38がクエリー言語でSQLを一般的にしてからORACLEなどが出始めどんどん普及していきました。その進歩はめまぐるしく、昔のSQL文を書いても効率が悪くなるばかりになっていきました。常に最新の構文を身につける努力が必要だと思います。
お礼
回答頂きありがとうございました。
- bardfish
- ベストアンサー率28% (5029/17766)
基本的な文法は同じですよ。 でも、ソリューション独自の命令とか独自拡張命令があったりするので完全に一致はしません。 少なくとも、OracleとSQL Serverを使っていてそう感じました。
お礼
回答頂きありがとうございました。
- IDii24
- ベストアンサー率24% (1597/6506)
SQL文法にはANSI、ISOなどで決められたバージョンがありそのどれを採用するかでDBの構文は違います。またORACLEやSQLserverのように独自の仕様を付け加えているものもあり双方では互換性がありません。ORACLEのSQLをSQLserverでは受け付けない事のほうが多いです。SELECT XX FROM XXXのような単純な構文は同じですが。 またAccessとSQLserverでさえも違う構文をつかっていますがSQLserverの方が標準に近いです。なぜならSQLserverはTransactSQLという構文を使っており、これはサイベースが作ったもので、SQLserverはMSがサイベースから買ったものだからです。したがってサイベースとMSのSQLserver間では互換があります。最近サイベースはユーニバーサルサーバーと名前を変えていますがSQLserverです。UNIXでしか動きませんが高速DBです。 当然オープンソースのDBは標準SQLを使うのが普通であるべきです。
お礼
回答頂きありがとうございました。
- catpow
- ベストアンサー率24% (620/2527)
基本的な範囲では同じですが、ちょこちょこと命令の書き方に差があります。 ポケットSQLマニュアルみたいな本を読むと、それぞれのDB間での微妙な差が書かれています。
お礼
回答頂きありがとうございました。
お礼
回答頂きありがとうございました。