現場で重宝するSQLリファレンス。ソフトウェア開発の現場では、「SQLの構文をすぐに確認したい」「データベースによって異なるSQLの書き方を知りたい」「久しぶりにSQLを使うので簡単に復習したい」といったことがよくあります。本書では、仕事でSQLを利用しているプロの開発者を対象に、主要な5つのデータベース――MySQL、SQL Server、Oracle、PostgreSQL、SQLite――で使われるSQLの構文およびデータベースの基本を簡潔に解説します。PythonやRからSQLを利用する方法も解説しているので、データアナリストやデータサイエンティストなど、開発者以外のSQLユーザーにも有用でしょう。
SQLポケットガイド 第4版
Alice Zhao 著、原 隆文 訳
- TOPICS
- Database
- 発行年月日
- 2024年07月
- PRINT LENGTH
- 328
- ISBN
- 978-4-8144-0080-5
- 原書
- SQL Pocket Guide, 4th Edition
- FORMAT
- Print PDF EPUB
関連ファイル
目次
まえがき 1章 SQL速修講座 1.1 データベースとは何か? 1.1.1 SQL 1.1.2 NoSQL 1.1.3 データベース管理システム(DBMS) 1.2 SQLクエリーとは何か? 1.2.1 SQL文 1.2.2 SQLクエリー 1.2.3 SELECT文 1.2.4 実行の順序 1.3 データモデル 2章 SQLコードはどこに記述できるか? 2.1 RDBMSソフトウェア 2.1.1 どのRDBMSを選ぶべきか? 2.1.2 ターミナルウィンドウとは何か? 2.1.3 SQLite 2.1.4 MySQL 2.1.5 Oracle 2.1.6 PostgreSQL 2.1.7 SQL Server 2.2 データベースツール 2.2.1 データベースツールをデータベースに接続する 2.3 他のプログラミング言語 2.3.1 Pythonをデータベースに接続する 2.3.2 Rをデータベースに接続する 3章 SQL言語 3.1 他の言語との比較 3.2 ANSI規格 3.3 SQLの用語 3.3.1 キーワードと関数 3.3.2 識別子とエイリアス 3.3.3 文と句 3.3.4 式と述語 3.3.5 コメント、引用符、空白文字 3.4 サブ言語 4章 クエリーの基礎 4.1 SELECT句 4.1.1 列を選択する 4.1.2 すべての列を選択する 4.1.3 式を選択する 4.1.4 関数を選択する 4.1.5 列に別名を付ける 4.1.6 列を修飾する 4.1.7 サブクエリーを選択する 4.1.8 DISTINCTキーワード 4.2 FROM句 4.2.1 複数のテーブルから検索する 4.2.2 サブクエリーから検索する 4.2.3 なぜFROM句の中でサブクエリーを使うのか? 4.3 WHERE句 4.3.1 複数の述語 4.3.2 サブクエリーによるフィルタリング 4.4 GROUP BY句 4.5 HAVING句 4.6 ORDER BY句 4.7 LIMIT句 5章 作成、更新、削除 5.1 データベース 5.1.1 データモデルとスキーマ 5.1.2 既存のデータベース名の表示 5.1.3 現在のデータベース名の表示 5.1.4 別のデータベースへの切り替え 5.1.5 データベースの作成 5.1.6 データベースの削除 5.2 テーブルの作成 5.2.1 簡単なテーブルの作成 5.2.2 既存のテーブル名の表示 5.2.3 まだ存在していないテーブルの作成 5.2.4 制約を持つテーブルの作成 5.2.5 主キーと外部キーを持つテーブルの作成 5.2.6 自動的に生成されるフィールドを持つテーブルの作成 5.2.7 クエリーの結果をテーブルに挿入する 5.2.8 テキストファイルからテーブルにデータを挿入する 5.3 テーブルの変更 5.3.1 テーブルや列の名前の変更 5.3.2 列の表示、追加、削除 5.3.3 行の表示、追加、削除 5.3.4 制約の表示、追加、変更、削除 5.3.5 データの列の更新 5.3.6 データの行の更新 5.3.7 クエリーの結果を用いてデータの行を更新する 5.3.8 テーブルの削除 5.4 インデックス 5.4.1 本の索引とSQLのインデックスの比較 5.4.2 インデックスの作成によるクエリーの高速化 5.5 ビュー 5.5.1 ビューを作成してクエリーの結果を保存する 5.6 トランザクション管理 5.6.1 COMMITの前に変更を再確認する 5.6.2 ROLLBACKを使って変更を取り消す 6章 データ型 6.1 データ型の選び方 6.2 数値データ 6.2.1 数値 6.2.2 整数データ型 6.2.3 小数データ型 6.2.4 浮動小数点データ型 6.3 文字列データ 6.3.1 文字列値 6.3.2 文字データ型 6.3.3 Unicodeデータ型 6.4 日時データ 6.4.1 日時値 6.4.2 日時データ型 6.5 その他のデータ 6.5.1 ブールデータ 6.5.2 外部ファイル(画像、ドキュメントなど) 7章 演算子と関数 7.1 演算子 7.1.1 論理演算子 7.1.2 比較演算子 7.1.3 数学演算子 7.2 集計関数 7.3 数値関数 7.3.1 数学関数の適用 7.3.2 乱数の生成 7.3.3 数値の丸め 7.3.4 データを数値データ型に変換する 7.4 文字列関数 7.4.1 文字列の長さを求める 7.4.2 文字列の大文字・小文字を変換する 7.4.3 文字列の前後の不要な文字を取り除く 7.4.4 文字列の連結 7.4.5 文字列内のテキストの検索 7.4.6 文字列の一部を抽出する 7.4.7 文字列内のテキストの置換 7.4.8 文字列からテキストを削除する 7.4.9 正規表現の利用 7.4.10 データを文字列データ型に変換する 7.5 日時関数 7.5.1 現在の日付または時刻を返す 7.5.2 日付間隔や時間間隔の加算と減算 7.5.3 2つの日付または時刻の差を求める 7.5.4 日付や時刻の一部を抽出する 7.5.5 日付の曜日を判別する 7.5.6 日付を最も近い時間単位に丸める 7.5.7 文字列を日時データ型に変換する 7.6 NULL関数 7.6.1 NULL値が存在する場合に代わりの値を返す 8章 高度なクエリーの概念 8.1 CASE文 8.1.1 単一列に関して、if-elseロジックを基に値を表示する 8.1.2 複数列に関して、if-elseロジックを基に値を表示する 8.2 グループ化と集約 8.2.1 GROUP BYの基礎 8.2.2 複数の行を1つの値またはリストに集約する 8.2.3 ROLLUP、CUBE、GROUPING SETS 8.3 ウィンドウ関数 8.3.1 集計関数の例 8.3.2 ウィンドウ関数の例 8.3.3 テーブル内の行をランク付けする 8.3.4 各グループ内の最初の値を返す 8.3.5 各グループ内の2番目の値を返す 8.3.6 各グループ内の最初の2つの値を返す 8.3.7 前の行の値を返す 8.3.8 移動平均を計算する 8.3.9 累計を計算する 8.4 ピボットとピボット解除 8.4.1 1つの列の値を複数の列に分割する 8.4.2 複数の列の値を1つの列にリストする 9章 複数のテーブルおよびクエリーの操作 9.1 テーブルの結合 9.1.1 結合の基礎とINNER JOIN 9.1.2 LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN 9.1.3 USINGとNATURAL JOIN 9.1.4 CROSS JOINと自己結合 9.2 集合演算子 9.2.1 UNION 9.2.2 EXCEPTとINTERSECT 9.3 共通テーブル式 9.3.1 CTEとサブクエリー 9.3.2 再帰CTE 10章 こんなときは... 10.1 重複する値を含んでいる行を探す 10.1.1 すべての一意の組み合わせを返す 10.1.2 重複する値を持つ行だけを返す 10.2 別の列の最大値を持つ行を選択する 10.3 複数のフィールドから1つのフィールドにテキストを連結する 10.3.1 1つの行の複数のフィールドからテキストを連結する 10.3.2 複数行のフィールドからテキストを連結する 10.4 特定の列名を含んでいるすべてのテーブルを探す 10.5 別のテーブルとIDが一致するテーブルを更新する 付録A サンプルテーブルの定義と内容 A.1 countyテーブル A.2 ownerテーブル A.3 waterfallテーブル A.4 tourテーブル 付録B Oracle Database 23aiの新機能について 索引 コラム目次 SQL構文をGoogleで検索する この順序を覚えておいてください これで速修講座は終わりです! SQLiteを用いたクイックスタート データベース接続フィールド データ分析の基本的なワークフロー データ分析のよりよいワークフロー Pythonでパスワードを安全に保管する Python愛好者のためのSQLAlchemy Rでパスワードを安全に保管する SQLの拡張機能 SQLとANSI SQLとMySQLと... 読者も規格に従うべきか? どの規格を選択すべきか? SQLは大文字と小文字を区別しない SQL言語のまとめ 列エイリアスとテーブルエイリアス 非相関サブクエリーと相関サブクエリー JOINのデフォルトはINNER JOIN サブクエリーかWITH句か? 最適化より動作することを優先 GROUP BY句の実際の使い方 WHERE句とHAVING句 COALESCE関数 ORDER BY句はサブクエリー内では使用できない 主キーのベストプラクティス デスクトップのファイルパスの例 SQLiteでの手作業による変更 サブクエリーかビューか? トランザクションを利用すると、なぜ安全なのか? NULLリテラル ASCIIエンコードとUnicodeエンコード 演算子と関数 演算子と述語 EXISTSかJOINか? MIN/MAXとLEAST/GREATEST SQLでのカウントは1から始まる SIMILAR TOと~ 効率を上げるためにGROUP BYのリストを減らす ウィンドウ関数を分解する ROW_NUMBERとRANKとDENSE_RANK ROWSとRANGE PIVOTの代替手段:CASE UNPIVOTの代替手段:UNION ALL JOIN句を分解する UNIONは、どのようなクエリーを結合できるか? 集合演算子:評価の順序 サブクエリーに対するCTEのメリット 最後に 表目次 表1-1 RDBMSの比較表 表1-2 データモデルに含まれているものを説明するために使われる用語 表2-1 データベースツールの比較表 表2-2 pipまたはcondaを使って、Python用のドライバーをインストールする 表2-3 データベース接続を設定するためのPythonコード 表2-4 R用のドライバーをインストールする 表2-5 データベース接続を設定するためのRコード 表3-1 SQLのサブ言語 表5-1 既存のデータベース名を表示するためのコード 表5-2 現在のデータベース名を表示するためのコード 表5-3 別のデータベースに切り替えるためのコード 表5-4 データベースを作成するためのコード 表5-5 データベースを削除するためのコード 表5-6 複数行のデータを挿入するためのコード 表5-7 既存のテーブル名を表示するためのコード 表5-8 一意のIDを自動的に生成するためのコード 表5-9 .csvファイルからデータを挿入するためのコード 表5-10 テーブル名を変更するためのコード 表5-11 列名を変更するためのコード 表5-12 テーブルの列を表示するためのコード 表5-13 テーブルに列を追加するためのコード 表5-14 テーブルから列を削除するためのコード 表5-15 テーブルの制約を表示するためのコード 表5-16 制約を追加するためのコード 表5-17 テーブル内の制約を変更するためのコード 表5-18 テーブルから制約を削除するためのコード 表5-19 外部キーで参照されているテーブルを削除するためのコード 表5-20 本の索引とSQLのインデックスの比較 表5-21 インデックスを削除するためのコード 表5-22 既存のビューを表示するためのコード 表5-23 ビューを更新するためのコード 表6-1 SQLでのデータ型 表6-2 SQLでのリテラル 表6-3 整数データ型の例 表6-4 整数データ型 表6-5 PostgreSQLでのSERIALの選択肢 表6-6 小数データ型 表6-7 浮動小数点データ型 表6-8 よく使われるエスケープシーケンス 表6-9 文字データ型 表6-10 Unicodeデータ型 表6-11 クエリー内での日付の参照 表6-12 クエリー内での時刻の参照 表6-13 クエリー内での日時の参照 表6-14 MySQLの日時データ型 表6-15 Oracleの日時データ型 表6-16 PostgreSQLの日時データ型 表6-17 SQL Serverの日時データ型 表6-18 SQLiteの日時データ型 表6-19 バイナリーデータ型 表7-1 よく使われる演算子 表7-2 よく使われる関数 表7-3 論理演算子 表7-4 NOTの例 表7-5 ANDとORの例 表7-6 比較演算子(記号) 表7-7 比較演算子(キーワード) 表7-8 数学演算子 表7-9 基本的な集計関数 表7-10 数学関数(OracleではFROM dualを追加) 表7-11 乱数ジェネレーター 表7-12 数値の丸めの選択肢(OracleではFROM dualを追加) 表7-13 文字列内でのテキストの位置を調べる関数 表7-14 昨日の日付を返す 表7-15 現在から3時間後の日時を返す 表7-16 2つの日付の間の日数 表7-17 2つの時刻の間の秒数 表7-18 2つの日時の間の時間数 表7-19 日付から月を抽出する 表7-20 時間単位の選択肢 表7-21 曜日の数値を返す 表7-22 曜日を返す 表7-23 文字列を日付に変換する 表7-24 文字列を時刻に変換する 表7-25 文字列を日時に変換する 表7-26 文字列から日付への変換関数と文字列から時刻への変換関数 表7-27 日時フォーマット指定子 表7-28 文字列から年を抽出する 表8-1 高度なクエリーの概念 表8-2 グループ化と集約の概念 表8-3 それぞれのRDBMSで、複数の行を1つのリストに集約する方法 表8-4 それぞれのRDBMSで、ソートされた値のリストや一意の値のリストを返す方法 表9-1 複数のテーブルやクエリーの操作 表9-2 テーブルを結合するための各種の方法 表9-3 テーブルを結合するための構文 表9-4 それぞれのRDBMSで日付の列を生成する 表9-5 それぞれのRDBMSですべての親を列挙する 表10-1 特定の列名を含んでいるすべてのテーブルを検索する 表10-2 別のテーブルとIDが一致するテーブルを更新する