版元ドットコム

探せる、使える、本の情報

文芸 新書 社会一般 資格・試験 ビジネス スポーツ・健康 趣味・実用 ゲーム 芸能・タレント テレビ・映画化 芸術 哲学・宗教 歴史・地理 社会科学 教育 自然科学 医学 工業・工学 コンピュータ 語学・辞事典 学参 児童図書 ヤングアダルト 全集 文庫 コミック文庫 コミックス(欠番扱) コミックス(雑誌扱) コミックス(書籍) コミックス(廉価版) ムック 雑誌 増刊 別冊
基本がわかるSQL入門 ――データベース&設計の基礎から楽しく学ぶ 西村 めぐみ(著/文) - 技術評論社
..
【利用不可】

書店員向け情報 HELP

書店注文情報

受注センター:
注文電話番号:
注文FAX番号:
販売促進部:
注文電話番号:
注文FAX番号:

基本がわかるSQL入門 ――データベース&設計の基礎から楽しく学ぶ (キホンガワカルエスキューエルニュウモン データベースアンドセッケイノキソカラタノシクマナブ)

コンピュータ
このエントリーをはてなブックマークに追加
発行:技術評論社
A5判
320ページ
定価 2,480円+税
ISBN
978-4-297-11659-0   COPY
ISBN 13
9784297116590   COPY
ISBN 10h
4-297-11659-6   COPY
ISBN 10
4297116596   COPY
出版者記号
297   COPY
Cコード
C3055  
3:専門 0:単行本 55:電子通信
出版社在庫情報
不明
書店発売日
登録日
2020年9月7日
最終更新日
2020年10月6日
このエントリーをはてなブックマークに追加

紹介

「基本がわかる」をテーマに、
SQL&データベースの基礎から、やさしくスタート!

そして、「SQLでどんなことができるのか」「どんなときに便利なのか」「なぜそんなしくみになっているのか」について、一つ一つステップアップしながら解説します。

本書の特徴は、文法の背景にある「設計」を丁寧に扱っている点です。SQL学習時の頻出ケースである、思ったように操作できない…… この書き方のどこが便利なのか実感が湧かない……、そんなとき、設計について少しでも知ってることが大きな力になります。

想定環境はMySQLを主軸にMariaDB、PostgreSQLとメジャーなOSS(オープンソース)製品に対応し、サポートサイトのサンプルを活用して試しながら学ぶことも可能。広くデータベース利用者の方々に向けて、長く役立つ技術知識を凝縮してお届けします。

目次

## 本書について ……SQLって何だろう? どのように学ぶ?
## 本書の構成
## 本書の動作確認環境
## 本書の補足情報について



# 第1章 SQL&DBの基礎知識 ……SQLって何だろう?

## 1.1 データベース用の言語「SQL」 ……まずはどんな姿か見てみよう

### データを管理する「テーブル」
### SELECT文の構造
### 複数のテーブルからデータを取得する
### 新しい列を作って表示する
### なぜ複数のテーブルに分かれているのか

## 1.2 DBMSの基本機能 ……データベース管理システムの役割って何?

### データ操作機能
### 同時実行制御
### トランザクション管理
### 機密保護
### 障害回復

## 1.3 RDBの特徴 ……リレーショナルデータベースってどんなDB?

### 常に「表」で考える
### 一意性制約と参照制約
### RDBと3層スキーマ



# 第2章 SQL初級編 ……実際に書いて試してみよう

## 2.1 SQLの種類と基本的な書式 ……書き方のルールを確認しよう

### 標準SQLとSQLの方言
### SQLの5つの記述ルール
### ①各単語は半角スペースまたは改行で区切り、文末には「;」を付ける
### ②キーワードは大文字でも小文字でもよい
### ③テーブル名や列名には(原則として)半角英数字と「_」を使う
### ④文字列や日付は「'~'」で囲む
### ⑤コメントは「--」の後ろか、「/*」と「*/」の間に書く

## 2.2 テーブルの作成と削除 ……CREATE TABLE、DROP TABLE

### テーブルの作成 CREATE TABLE
### テーブルの削除 DROP TABLE

## 2.3 参照制約(外部キー)の設定 ……FOREIGN KEY、REFERENCES

### 外部キーがあるテーブルにデータを登録する

## 2.4 データの追加 ……INSERT INTO

## 2.5 データの変更 ……UPDATE

### 更新できないデータが含まれていた場合

## 2.6 データの削除 ……DELETE

### 参照されているデータの削除

## 2.7 データの問い合わせ ……SELECT

### テーブルを表示する 問い合わせ①
### データを並べ替える 問い合わせ②
### データを集計する 問い合わせ③
### 集計結果で並べ替える 集計補足①
### 別の列名で表示する 集計補足②
### テーブルを結合する 問い合わせ④
### 結合した結果を絞り込む、並べ替える 結合補足①
### 結合した結果を集計する 結合補足②

## 2.8 ビューの作成と削除 ……CREATE VIEW/DROP VIEW

### ビューの作成
### ビューの削除

## 2.9 バッカス記法(BNF) ……読めると便利! マニュアルの書式




# 第3章 CREATE TABLE詳細 ……テーブルではどんなことを定義できるのか

## 3.1 実表と導出表 ……SELECTできる2つの「表」

### テーブルとビューの定義

## 3.2 「列」(カラム)の設定 ……どんなデータを保存したいか考えよう

### データの「型」とは何か
### 列の初期値 DEFAULT句
### 登録できる値の制限 CHECK制約
### 文字列/数値/日付時刻以外のデータ型
### ドメイン(定義域)とは何か

## 3.3 特別な値「NULL」 ……わからない値だって保存したい

### NULLの禁止

## 3.4 キー(識別子) ……PRIMARY KEY、UNIQUE、NOT NULL

### 主キーと候補キー
### 主キーとそのほかの候補キーの宣言
### 複合キーの宣言

## 3.5 参照制約(外部キー) ……FOREIGN KEY、REFERENCES

### 参照制約(外部キー)の宣言
### キーの値を変更したらどうなるか

## 3.6 テーブル定義の変更 ……ALTER TABLE

### 列と制約の追加
### 列と制約の変更/削除
### 参照制約(外部キー制約)の追加と削除

## 3.7 インデックスの作成と削除 ……CREATE INDEX、DROP INDEX

### インデックスの作成
### インデックスの削除
### インデックスと更新速度




# 第4章 正規化 ……RDBにとっての「正しい形」とは

## 4.1 正規化の目的 ……すべては正しいデータを保つため

### 正規化で防ぎたい「更新不整合」とは
### スタートは第1正規形、最初のゴールは第3正規形

## 4.2 テーブルの構造は列×行のみ ……第1正規形と繰り返し項目の排除

### 導出項目の排除
### 繰り返し項目の排除

## 4.3 テーブルの列は主キーと主キーで決定する項目のみ ……第2正規形、第3正規形、ボイスコッド正規形

### 無損失分解
### 部分関数従属を取り除く 第2正規形
### 推移的関数従属を取り除く 第3正規形
### ボイスコッド正規形 BCNF
### ボイスコッド正規形までのまとめ

## 4.4 多値従属性と結合従属性 ……第4正規形、第5正規形

### 多値従属性
### 結合従属性

## 4.5 このほかの正規形 ……ドメインキー正規形、第6正規形

### ドメイン制約に着目する「ドメインキー正規形」
### 識別子から決定できる値を1つまでにする「第6正規形」



# 第5章 ER図 ……「モノ」と「関係」を図にしてみよう

## 5.1 データモデリング技法「ERモデル」 ……データベース設計でどう使う?

### ERモデルと関係モデル
### データベースへの「写像」
### エンティティは「テーブル」になる
### リレーションシップは「参照制約」になる
### 参照される側は「1」にする


## 5.2 ER図 ……箱と箱を結ぶ線のルール

### さまざまな図法
### ER図を読み解く3つのポイント
#### ①エンティティと属性の表記
#### ②主キーと外部キーの表記
#### ③ カーディナリティの表記
### モデリングツール

## 5.3 カーディナリティの検討 ……参照できる形に整えよう

### 1対多の場合
### 1対多は「親子関係」か「参照関係」を表している
### 多対多の場合
### 多対1の場合
### 1対1の場合
### 1対1の意味を考える
### 1対1の外部キー

## 5.4 識別子(キー)の検討 ……本当にその識別子で大丈夫?

### 使われていない識別子は存在しないか
### 識別子に複合キーが潜んでいないか
### 存在しない識別子を使っていないか

## 5.5 スーパータイプとサブタイプ ……区分コードを見つけたら考えよう

### is-aの関係になっているか
### orの関係になっているか
### どちらでテーブルを作るか



# 第6章 データ操作 ……データを自在にSELECTしよう

## 6.1 SELECTの基礎構文 ……必要なデータを取り出す、重複を取り除く

### 列の指定、列の連結と計算、別名 SELECT句、AS、CONCAT、||
### 重複の除去 DISTINCT
### 行の指定(絞り込み) WHERE句
### 条件を組み合わせる AND、OR、NOT
### 並び順を変える ORDER BY
### 行数の指定 LIMIT(MySQL/MariaDB/PostgreSQL)

## 6.2 関数と演算子 ……値の比較、計算、パターンマッチング

### 大小の比較と数値の計算 = <> > < >= <= + - * /
### NULLの判定 IS NULL、IS NOT NULL
### 範囲の指定 BETWEEN
### いずれかの値に当てはまるか IN
### あいまい検索 LIKE
### 正規表現による検索 SIMILAR TO、REGEXP、~演算子
### 文字列の演算子とおもな関数
### 日付時刻の演算子とおもな関数
### NULLの変換 NULLIF、COALESCE

## 6.3 結合(JOIN) ……複数のテーブルを組み合わせる

### クロス結合 CROSS JOIN
### 内部結合 INNER JOIN(JOIN)
### 外部結合 LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN
### 自己結合 同じテーブルでの結合
### 等価結合時の列指定 USING()
### 自然結合 NATURAL JOIN
### 2つより多いテーブルの結合
### 複数の列によるJOIN


## 6.4 NULLとUNKNOWN ……わからない値をどう扱う?

### TRUE/FALSE/UNKNOWNによる論理演算
### TRUEとFALSEのみで判定する IS演算子

## 6.5 集約関数 ……データのグループ化と集計

### 集約関数 COUNT、AVG、SUM、MAX、MIN
### 複数の列でグループ化する GROUP BY
### 小計と合計を付ける ROLLUP
### GROUP BY使用時のSELECT句 GROUP BY
### 集約結果で絞り込む HAVING、WHERE
### 列の一部の値で集計する GROUP BY、SUBSTRING()
### 列ごとに異なる条件で集計する CASE、GROUP BY

## 6.6 テーブルの連結(UNION) ……データを「縦」につなげたい

### SELECT結果の連結 UNION、UNION ALL
### 列の数や型を調整するには

## 6.7 CASE式 ……SELECT文で場所分け(条件分岐)

### 値を置き換える 単純CASE式
### 値ごとに式を書く 検索CASE式
### WHERE句で使用する列の優先順位を決める 検索CASE式(WHERE句)
### 任意の値で区切ってカウントする 検索CASE式(SELECT句)

## 6.8 サブクエリー ……SELECT文とSELECT文を組み合わせる

### SELECT文の結果を使って絞り込む サブクエリー(WHERE句)
### 各行に対してSELECT文を実行する 相関サブクエリー
### 列の値をSELECT文で作る SELECT句のサブクエリー
### 複数の値で絞り込む IN、NOT IN
### 複数の値と比較する ALL、SOME、ANY
### サブクエリーとNULL
### 存在しているかどうかを調べる EXISTS、NOT EXISTS


## 6.9 ウィンドウ関数 ……データを区切って集計、順位付けする

### ウィンドウ関数の基本 無名ウィンドウ、名前付きウィンドウ
### どう区切るのかを決める、連番を付ける PARTITION BY、ORDER BY、ROW_NUMBER()
### 全体の集計を行う PARTITION BYを使わないウィンドウ関数
### 区画別の集計とランキング RANK、DENSE_RANK、ORDER BY
### 区画内の行の位置を指定する LAG、LEAD、FIRST_VALUE、LAST_VALUE、NTH_VALUE
### 直前の値と同じだったらスペースにする LAG、CASE、名前付きウィンドウ

## 6.10 データの更新 ……クエリーを使って更新しよう

### INSERTとSELECTによる一括登録
### ほかのテーブルの値を使って更新対象を指定する
### ほかのテーブルの値を使って更新する

## 6.11 [補講]関係演算 ……集合論から見たSQL

### 和 UNION、UNION ALL
### 差 EXCEPT、EXCEPT ALL、NOT EXISTS、OUTER JOIN
### 共通 INTERSECT、INTERSECT ALL、INNER JOIN
### 直積 CROSS JOIN
### 関係演算で追加された演算
### 選択 WHERE
### 射影 SELECT
### 結合 JOIN
### 商 サブクエリー



# 第7章 ケーススタディー ……データベース設計&SELECT文の組み立て方

## 7.1 フクロウ塾のデータベース設計 ……ER図、フィールド&書式、DBに持たせるルール

### 氏名フィールドの検討と文字列の書式
### 氏名に常にスペースを入れたい場合のCHECK制約
### マスターを追加すべきか検討する コースの再検討①
### 複合キーで選択可能なコースを制限する コースの再検討②
### データベースでルールを管理するかを検討する コースの再検討③
### データベースで管理する場合 コースの再検討③-[A]
### データベースでは管理しない場合 コースの再検討③-[B]

## 7.2 データ抽出のバリエーション ……サブクエリーとウィンドウ関数の活用

### 最高得点者のリスト サブクエリーの場合
### 最高得点者のリスト ウィンドウ関数の場合
### 内部結合と外部結合の検討 難易度別コースの最高得点①
### 最高得点の確認 難易度別コースの最高得点②
### 氏名の取得 難易度別コースの最高得点③
### 最高得点者のリスト完成 難易度別コースの最高得点④
### 前回の記録との比較 前回よりも10点以上点数が下がった
### 同じ中学校に通っている生徒
### 複数の子が通っている中学校のリスト
### 同じ中学校で別の校舎に通っている生徒のリスト


## 索引
## 構文索引


# Column
### クラウドで利用できるおもなデータベース
### 識別子に使用可能な文字
### DBMSのキーワード ……予約語
### トランザクションの活用 ……START TRANSACTION、ROLLBACK、COMMIT
### SQLによる「権限」の設定 ……GRANT、REVOKE
### 更新可能なビュー
### NULLとCHECK制約
### データベースはSQLだけじゃない?! ……NoSQLの基礎知識
### SQLの「実行計画」とは
### 関係モデルの基礎用語 リレーションとリレーションシップ
### 2種類のエンティティ イベント、リソース
### 新しいエンティティの意味
### 正規形とER図
### 新しい識別子
### SELECT文の評価順序
### JOIN、WHERE、ORDER BYとインデックスの処理速度

著者プロフィール

西村 めぐみ  (ニシムラ メグミ)  (著/文

西村 めぐみ Nishimura Megumi 1990年代、生産管理ソフトウェアの開発およびサポート業務/セミナー講師を担当。その後、書籍および雑誌での執筆、PCおよびMicrosoft Officeのeラーニング教材作成/指導、新人教育にも携わる。おもな著書は『図解でわかるLinuxのすべて』(日本実業出版社)、『シェルの基本テクニック』(IDGジャパン)、『[新版 zsh&bash対応]macOS×コマンド入門 ──ターミナルとコマンドライン、基本の力』(技術評論社)など。

上記内容は本書刊行時のものです。