問題タブ [sql-standards]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - プレーン SQL と方言
DBMS ベンダーは、SQL ダイアレクト機能を使用して製品を差別化すると同時に、SQL 標準をサポートしていると主張しています。これについてナフは言った。
SQL:2008 標準 SQL に変換できないコード化された SQL の例はありますか?
具体的には、DML (クエリ ステートメント)、NOT DDL、ストアド プロシージャ構文、または純粋な SQL ステートメントではないものについて話しています。
また、アドホックなものではなく、本番環境で使用するクエリについても話しています。
1月13日編集
すべての回答に感謝します。お粗末なリレーショナル デザインの回避策を可能にするために、多くの DBMS 固有の SQL が作成されているという印象を受けました。これにより、ほとんどの既存のアプリケーションを移植したくないという結論に至ります。
sql - SQLの「GROUPBY」句ですべての列を明示的に指定する必要があるのはなぜですか。「GROUPBY*」ではないのはなぜですか。
これはいつも私を悩ませてきました-SQLステートメントのGROUPBY句で、すべての非集計列を含める必要があるのはなぜですか?これらの列はデフォルトで含まれている必要があります-一種の"GROUPBY*"-すべて含まれていないとクエリを実行することさえできないためです。すべての列は集計であるか、「GROUP BY」で指定する必要がありますが、集計されていないものはすべて自動的にグループ化されるようです。
それはANSI-SQL規格の一部かもしれませんが、それでも理由はわかりません。誰かが私がこの大会の必要性を理解するのを手伝ってもらえますか?
java - SQLスクリプトをテストする方法は、junitテストの標準SQLですか?
java/junit テストを使用して、SQL スクリプトに標準 SQL が含まれていることをテストする方法はありますか?
現在、Postgres db にデータベースなどを作成するための sql スクリプトがありますが、hsqldb を使用するとすべて失敗します。そのため、SQL ステートメントが標準 SQL であるかどうかをテストするための Java ツールが存在するかどうか疑問に思います。
それとも、データベース ベンダーごとに異なるスクリプト セットを作成するのが賢明でしょうか? もしそうなら、特定のスクリプトが postgres/hsqldb で動作するかどうかをテストする方法はありますか?
sql - TRUNCATE は DML ステートメントですか?
TRUNCATE が DML ステートメントに属する/該当すると分類/言うことはできますか?
PostgreSQL TRUNCATE の互換性については、こちらを確認してください。
注: TRUNCATE は、SQL 標準 ANSI SQL 2008 - F200 の一部です。
mysql - 多くの開発者が MySQL を (まだ) DBMS として真剣に受け止めていないのはなぜですか?
ここ数年、一部の開発者が MySQL を真剣に受け止めるべき DBMS ではないという意見に出くわしました。私はかなり前から MySQL のユーザーでしたが、一部の開発者が MySQL にそれほど反対している理由を理解するのに苦労しています。私は、これらの発言の一部が真実であると信じ始めていますが、その程度はわずかですが、MySQL が劣っていると考える人がいまだにいる本当の理由について疑問に思っています。
チェック制約が欠落しており、BOOLEAN が TRUE および FALSE ではなく、TINYINT の範囲内の INTEGER に制約されていることがわかったことに同意します。さらに、私が気に入らない CURRENT_TIMESTAMP の問題がいくつかあります。しかし、これらは MySQL を劣った DBMS として宣伝するのに十分な議論でしょうか? ここでの本当の理由は何ですか - もし存在するなら?
sql - 信頼できるSQL標準ドキュメント
さまざまなSQL標準、つまりSQL-92
、、などの詳細を知りたいと思います。ウィキペディアには、非常に高価なドキュメントへのリンクを含む、短くて便利な概要があります。なぜそれらの文書は一般に公開されていないのですか?オープンで無料の情報を見つけることができますか?SQL:99
SQL:2003
SQL:2008
Googleから見つけたリンクを投稿しないでください。やや信頼できるドキュメントのみに興味があります。
sql - SQL information_schema XSD 定義はありますか?
SQL:2008
および以前の標準では、はINFORMATION_SCHEMA
標準のメタスキーマとして記述されています。原則として、メタデータを XML にアンロードして、XSLT やその他の XML ツールを使用してスキーマ メタ データをさらに処理およびリバース エンジニアリングすることができます。
- これは以前に行われたことがありますか?
- を説明するある程度完全な XSD が利用可能
INFORMATION_SCHEMA
ですか?
注意: データベース スキーマのアンロードをjooq-metaの SQL 標準INFORMATION_SCHEMA
XML 構造に実装し、2 番目のプロセスでそのスキーマを再度ロードして、jOOQ で Java ソース コード アーティファクトを生成したいので、これを求めています。そのためには、独自の XSD を作成するのではなく、可能な限り標準に近い既存の XSD を使用することをお勧めします。
sql - SQL標準では、制約の検証とトリガーの起動の順序が指定されていますか?
NOT NULL, FOREIGN KEY, UNIQUE, CHECK
制約とBEFORE
トリガーを検証する特定の順序に依存できるかどうか知りたいです。
NOT NULL
経験から、MySQLは最初にチェックし、次にBEFORE
トリガーを起動し、次にUNIQUE
制約をチェックすることを知っています。NOT NULL
Oracleはトリガーの後にチェックしますBEFORE
(SQLServerも同じことをすると思いますが、覚えていません)。標準は注文について何かを述べていますか、それとも完全にDBベンダー次第ですか?
sql - SQL ANYおよびSOMEキーワードは、すべてのSQL方言で同義語ですか?
PostgresではANY
、SOME
述語式の右側で使用される場合の同義語です。たとえば、これらは同じです。
これはここに文書化されています:
http://www.postgresql.org/docs/9.1/static/functions-subquery.html#FUNCTIONS-SUBQUERY-ANY-SOME
私は、少なくともこれらのSQL DBMSを観察ANY
し、サポートする予定です。SOME
- DB2
- ダービー
- H2
- HSQLDB
- アングル
- MySQL
- オラクル
- Postgres
- SQLサーバー
- Sybase ASE
- Sybase SQL Anywhere
これらの方言のすべて(および他の方言も)が同義語として扱いANY
、SOME
同義語として扱われると安全に想定できますか、それとも一部のDBMSの2つのキーワードの間に微妙な違いがありますか?
私はこれをSQL92定義で見つけました:
ANY
これは、とのセマンティクスについては何も言いませんSOME
。ドキュメントの後半では<some>
、2つのキーワードではなく、参照されるだけです。NULL
たとえば、少なくとも一部のDBMSでは、処理に微妙な違いがあるのではないかと思います。これが想定できるかどうかの明確なステートメントへの任意の/いくつかのポインタは大歓迎です。
sql - where条件にnull値を含める/含めないSQLショートカットがまだないのはなぜですか?
私は2つの別々の条件を持たなければならない理由の背後にある理由を完全に理解しています。私の頭を悩ませているのは、何年も経っても、これに対する標準的なショートカット表記がまだない理由です。
さまざまなdbms実装がショートカットを提供しない理由はわかります。ショートカットは必要ないため、そうするとSQLの移植性が大幅に低下しますが、すべてのdbmsでこのようなショートカットが有用であることを考えると、なぜその能力があるのか理解できません。これを行うためのショートカットがSQL仕様に追加されていません。
私の質問:実際には正当な理由がありますか?もしそうなら、それは何ですか?