データを表計算ソフトに取り込む
select文により取得したデータの利用方法
- CSVファイルに書き出し、表計算ソフトに取り込む、
- エクセル、Google スプレッドシートなど
データをCSVに書き出す
- mysql workbenchなどのコネクタ/ドライバからCSVファイルを書き出しエクセル、 Google スプレッドシートに取り込む。
CSVとは
* Comma-Separated Valuesの略
* 区切りもじであるコンマ「,」で区切ったテキストデータ
CSVの例
id ,name price 1, 商品01, 500
※CSVの代わりにTSVという形式を使うことがある。
TSVとは
- Tab-Separated Values(TSV)の略
- 区切りもじであるコンマ「タブ」で区切ったテキストデータ
SQL文の基礎
データベースからデータを取得するselect文
* 構文 select 列1,列2 ... from テーブル名 * 全ての列を取得したい場合は、 select * from テーブル名;
初心者が間違いやすいこと
- DBを選択していない
- スペルミス
- 全角文字で記載
コメントの種類
- ① 「--」
② 「/ /」
「*」を使って全ての行を取得するより、必要な列を絞って取得する方が高速に実行できる
- 実務では、基本的に必要なカラムに絞ってデータを取得する。
- 試験的にSQLを書く時や、学習の時など、パフォーマンスの心配がないときは、「*」を使うこともある。
列に別名を付ける
select 列1 as 別名にする文字を記載 from テーブル名
※asは省略可能
列の値に対して演算を行う
- テーブルから抽出した結果をそのまま使うだけではなく、計算した結果を出力することができる。
select name as 名前, price as 価格, price * 1.1 as 税込価格 from products;
条件を指定して値を取得できるwhere句を使用
- 構文
select 列1, 列2 ... from テーブル名 where 条件;
where句で条件を設定する際に利用できる代表的な演算子の種類
- 「=」等しい
- 「>」より大きい
- 「>=」以上
- 「<」より小さい
- 「<=」以下
- 「<>」, 「!=」等しくない
- 「in」ある値が値セット内に含まれているかどうか
- 「not in」値が値セット内に含まれていないかどうか
- 「is null」値がnull
- 「is not null」値がnullでない
- 「like」パターンマッチング(あいまい検索)
- 「between ... and ...」値が値の範囲内に含まれているか
パターンマッチングによる絞込ができるlike句
- 構文
select 列1, ...,from テーブル名 where 列名 like ワイルドカード文字;
ワイルドカード文字について
ワイルドカード文字で文字列のパターンを指定します。
- '%' (パーセント) ・・・0文字以上の任意の文字列
- '_' (アンダースコア) ・・・任意の1文字
例)
- '中%' →'中'で始まる文字列
- '%中%' → '中'を含む文字列
- '%子' → '子'で終わる文字列
- '__子' →何かしらの文字から始まり、'子'で終わる文字列
取得件数を制限できるlimit句
- 構文
select 列1, ・・・ from テーブル名 limit [オフセット,] 最大取得件数;
※オフセットは省略可能
SQLの基礎
データベース、テーブル、行(レコード、ロウ)、列(フィールド、カラム) クエリ(query, お問い合わせ)
データの検索や更新、削除、抽出などの要求をデータベースに送信すること。
使用例
- ユーザー情報を取得するために、クエリを投げる。
データ型
・データベースでは、テーブルを作成する時に、それぞれの列(カラム・フィールド)に指定した 形式のデータしか、入力できないように設定する。
・この時指定するデータの形式をデータ型という。
主なデータ型の種類
- 数値型
- 文字列型
- 日付・時刻型
数値型
- int型 (イント、インテジャー)
- 整数
- tinyint型 (タイニーイント)
- とても小さな整数 真偽値を扱いたいときや、127以下の数字を扱いたい時
- float型 (フロート)
- 小さな(単精度) 浮動小数点 ※現場ではあまり使わない
double型 (ダブル)
- 普通サイド(倍精度) 浮動小数点数
int unsigned
- 数値は、符号なしとすることができます。言い換えると、正の整数だけ扱うとする
- tinyint(1)
- 真偽値 true/false
- 内部的にはtrueは数学の1、falseは数学の0で管理されています。
※関連して・・・MySQLでは0とnullがfalseで、空文字を含むそれ以外の値は全てtrueとなる。
- null(ヌル) ・・・データが存在しないことを表す値
文字列型
- char型 (キャラ)
- 固定長の文字列 255文字まで。文字列を格納する時に指定した長さになるようにスペースが埋め込まれます。
- 列)商品コードで5桁固定"CD123"。定義方法 : char(5)
- varchar型 (バーキャラ)
- 可変長の文字列 255文字列まで。
- 例) email "hijikata@example.com"。定義方法 : varchar(255)
- text (テキスト)
- 長い文字列 65535文字まで ・・・実務上は、255文字まではvarchar, それ以上はtextとすることが多い。
日付・時刻型
- date型 (ディト)
- 日付
- datetime型 (ディトタイム)
- 日付と時刻
- time型 (タイム)
- 時刻
ER図
- ER図
- Entity Relationship Diagram
- データベースの構造を表す方法の一つ
git 一次避難
作業が途中でコミットしたくないけど別のブランチで作業しないといけない。 そういう時に作業を一時避難する。
作業を一次避難する
git stash git stash save
作業した作業を確認する
git stash list
避難した作業を復元する
git stash apply
ステージの状況も復元する
git stash apply --index
特定の作業を復元する
git stash apply [スタッシュ名] git stash apply stash@{1}
*applyは適用するという意味
避難した作業を削除しよう
git stash drop
特定の作業を削除する
git stash drop [スタッシュ名] git stash drop srash@{1}
全作業を削除する
git stash clear
git リベースで履歴を書き換える
コミットをきれいに整えてからpushしたい時は履歴を書き換えよう。
*GitHubにPushしていないコミット
直前のコミットをやり直す git commit --amend
リモートリポジトリにPushしたコミットはやり直したらダメだよ。
複数のコミットをやり直す git rebase -i <コミットID> git rebase -i HEAD~3 pick gh21f6d ヘッダー修正 pick 193054e ファイル追加 pick 84gha0d README修正
-iは--interactiveの略だよ。 対話的リベースといって、やり取りしながら履歴を変更していくよ。
やり直したいcommitをeditにする
edit gh21f6d ヘッダー修正 pick 193054e ファイル追加 pick 84gha0d README修正
やり直したら実行する
git commit --amend
次のコミットへ進む(リベース完了)
git reabase --continue HEAD~ 1番目の親を指定する。 HEADを基点にして数値分の親コミットまで指定する。 HEAD^ マージした場合の2番目の親を指定する。 rebase -i コマンドの一連の流れ ①git rebase -i コマンドで対話的リベースモードに入る ②修正したいコミットをeditにしてコミットエディタを終了する ③editのコミットのところでコミットの適用が止まる ④git commit --amendコマンドで修正 ⑤git rebase --continueで次のコミットへ行く ⑥pickでとそのままのコミット内容を適用して次へ行く
コミットを並び替える、削除
# コミットを並び替える、削除 ①8e4ghaOdのコミットを消す ②193054eを先に適用する pick 193054e ファイル追加 pick gh21f6d ヘッダー修正
コミットをまとめる
# コミットを1つにまとめる pick gh21f6d ヘッダー修正 squash 193054e ファイル追加 squash 84ghaOd README修正
コミットを分割する
# コミットを分割する pick gh21f6d ヘッダー修正 pick 193054e ファイル追加 edit 84ghaOd READMEとindex修正
git reset HEAD^ git add README git commit -m 'README修正' git add index.html git commit -m 'index.html修正' git rebase --continue
git プルのマージ型、リベース型
プルのマージ型
git pull <リモート名><ブランチ名> git pull origin master
マージコミットが残るから、マージしたという記録を残したい場合に使おう
プルのリベース型
git pull --rebase <リモート名><ブランチ名> git pull --rebase origin master
マージコミットが残らないから、GitHubの内容を取得したいだけの時は--rebaseを使おう
プルをリベース型に設定する
git config --global pull.rebase true masterブランチでgit pullする時だけ git config branch.master.rebase true
--rebaseオプションを付けなくてもgit pullの挙動がリベース型になるよ
~/.gitconfig ~/.config/git/config
--globalを付けるとPC全体の設定になるよ
project/.git/config ローカルリポジトリ