概要 (SQL 構文)

https://docs.spaceandtime.io/docs/sql-syntax

なぜ SQL なのか? 構造化照会言語 (SQL) は、データの望ましい結果を記述するために使用される標準の宣言型言語です。 コンピューターが実行する正確な手順をユーザーが指定する必要がある他の手続き型言語 (Python、Java、Rust など) とは異なり、SQL は宣言型です。つまり、ユーザーは最終出力を記述し、SQL パーサー プログラムが正確な出力を構築できます。 実行時に自動的にステップが実行されます。 これにより、複雑なデータ操作の生成と最適化の作業が、ほぼ誰でも習得できる非常にシンプルで直観的なコマンドのセットにまで劇的に簡素化されます。

SQL の長い成功を考えると、「ビジネスの世界は SQL で動いている」とよく言われます。 SQL には多くの拡張機能やバリエーションがありますが、米国規格協会 (ANSI) は SQL のあるべき姿を定義しており、その標準に準拠したデータ システムは ANSI 準拠 SQL と呼ばれます。 SQL のこの一貫性により、分析システムとツールの業界全体が非常に効率的に相互運用できるようになり、現在でも SQL が標準となっています。 Space and Time はデータ ウェアハウスであるため、ANSI 準拠の SQL で動作します。 分散型 Web3 ネイティブ データ システムとしてより適切に動作できるようにする空間と時間の拡張機能がいくつかあります。

SQL 構文 – 基本 SQL 構文は過去 40 年間にわたって成熟し、ここで合理的に文書化できるものよりもはるかに堅牢かつ包括的なものになりました。 SQL 全般についてさらに詳しく知りたい場合は、SQL の基本を学ぶための優れたオンライン コースを以下にいくつか紹介します。

Udemy - 完全なSQLブートキャンプ Coursera / UCDavis - データ サイエンスのための SQL 教育的 - SQL 入門ガイド ZeroToMastery - 完全な SQL + データベース ブートキャンプ: ゼロからマスタリーまで FutureLearn - データベースと SQL の概要 TL;DR 非常に単純化された SQL 入門書をお探しの場合は、基本的な SQL ステートメントが 5 つの部分から構成されています。

SELECT – 返す列のリスト、またはアスタリスク (*) を使用してすべての列を示します FROM – データを含む 1 つ以上のテーブル WHERE – テーブルから返されるデータを減らすためのフィルター GROUP BY – 集計では、どの列がグループ化を行うかを指定しますが、他のすべての列は SUM() のような集計関数でラップする必要があります。 ORDER BY – データが返される順序を指定します たとえば、以下の SQL は、100 万ブロックの範囲内に存在するイーサリアム ブロックチェーンからの 1 日あたりのトランザクションの合計数を返します。

SQL

選択する CAST(TIME_STAMP as DATE) as BlockDate ,SUM(TRANSACTION_COUNT) as TxnCount イーサリアムから.ブロック WHERE BLOCK_NUMBER 14e6 と 15e6 の間 ブロック日付ごとにグループ化 ブロック日付で注文; CAST() が 1 つのデータ型を別のデータ型に変換すること (この場合、完全なタイムスタンプから日付のみ) と科学表記法 14e6 = 1400 万を理解すると、上記の SQL は非常に読みやすくなります。

SQL には上記の 5 つのコンポーネント以外にも多くの機能がありますが、追加の複雑さはこの基盤の上に構築されているため、出発点としては適しています。

一般的な SQL のベスト プラクティス これらのベスト プラクティスは、ほぼすべてのデータ ウェアハウス システムに適用され、空間と時間にも当てはまります。

早期にフィルタリングする – より複雑なクエリの場合は、できるだけ早く WHERE ステートメントを適用します。 たとえば、2 つのサブ選択を結合する場合、多くの場合、外側のステートメントで WHERE ステートメントを 1 回適用するか、各サブ選択で重複して 2 回適用できます。 これを 2 回実行する利点は、結合前の各データ セットの行数が減り、5 秒のランタイムが 500 ミリ秒に変わる可能性があることです。

LIMIT 10 – 最初の検出中に、アナリストが SELECT * FROM Schema.Table_Name を実行してデータ型、形式、サンプル データの調査を開始することは珍しくありません。 ただし、制約のない SELECT は、テーブル全体 (数百万行になる可能性がある) をクライアント アプリケーションに返そうとするため、システム上でかなりの量の計算を生成する可能性があります。 データベースの計算が高速であっても、大きなデータを移動するネットワーク遅延により、応答が遅く感じられることがあります。 クエリの最後に LIMIT N を追加すると、データベースは最初の N 個のレコードのみを返し、その後処理を停止します。 たとえば、SELECT * FROM Schema.Table_Name LIMIT 10 は最初の 10 行のみを返します。 注: LIMIT は SAMPLE と同じではありません。 LIMIT はデータベースが見つけた最初の 10 行を単純に返しますが、多くの場合 (常にではありませんが) ディスクに順次格納されるため、ランダム サンプルには適していません。

キーを理解する – 非常に大規模なデータを扱う場合、データの物理的な保存方法に合わせてテーブルのキー列をフィルタリングまたは結合する際のパフォーマンスが向上します。 たとえば、ETHEREUM.BLOCKS テーブルのキーは Block_Number (主キー。一意であることを意味します) です。 Block_Number の結合またはフィルターは、同様に一意な Block_Hash 列よりも速く返されます。 テーブルのキーは、Resource Discovery API を使用するか、JDBC ドライバーで検索し、最新の SQL エディターで公開できます。

Snake_Case – SQL 名の一般的な規則は Snake_Case です。別名、区切り文字にアンダースコアを使用します。

Block_Number や Gas_Fee などの単語を指定します。 他の規則と同様に、他の SQL 開発者との一貫性以外に技術的な利点はありません。

SQL 構文 – 空間と時間の詳細 Space and Time は ANSI 準拠のデータベースです。つまり、通常の SQL は期待どおりに動作します。 とはいえ、他の固有のデータ システムと同様に、注目に値する固有の特性がいくつかあります。 このセクションのサブページには、空間と時間の一意のデータ型と予約語がリストされています。

価格設定 Space and Time を使用する場合、支払うのはコンピューティングのみです。 ストレージ、インデックス付きブロックチェーン データ、OpenAI ダッシュボード、クラスター内の OLTP + OLAP クエリ、Proof of SQL 暗号化などが常に含まれます。

お客様のニーズとユースケースに合わせて、いくつかの異なる価格オプションをご用意しています。 詳細については、このページをご覧ください。