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 タグ付け

gitのタグは2種類ある(注釈付きタグ)と(軽量タグ)

注釈付きタグ

git tag -a [タグ] -m "[メッセージ]" 
-mはエディタを立ち上げずにメッセージを入力できる

軽量タグ

git tag [タグ名]

後からタグ付けする

git tag [タグ名] [コミット名]

タグのデータを表示する

git show [タグ名]

タグをリモートに送信するには git push コマンドで別途指定する

タグをリモートリポジトリに送信する

git push [リモート名] [タグ名]

タグを一斉に送信する

git push origin --tags

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
ローカルリポジトリ

オリジナルアプリ改修中ででたActiveRecord::RecordNotFoundについて

こんにちはrotosiri-zuです。今回はオリジナルアプリ改善中ででたActiveRecord::RecordNotFoundについて書いていきます。

エラー原因

Showページでidを引き渡して商品情報を取得しようとしたがidがnillになっている為、このエラーが発生しました。


f:id:rotusiri-zu_86:20210613203936p:plain

解決策
コントローラーにrescue_fromを記載

rescue_from ActiveRecord::RecordNotFound, with: :record_not_found

    • 省略 --

def record_not_found
flash[:error] = "ご指定のページが見つかりません"
redirect_back(fallback_location: root_path)
end

参考資料
railsguides.jp

このブログについて

こんにちはrotosiri-zuです。

現在36歳でリフトオペレーターの仕事をしながら、

1年半弱プログラミングを学習中で現在転職活動をしております。

このブログでは、プログラミングについて勉強したことを書いていく予定です。

ほぼ自分の備忘録です。

 

私のプログラミング経験はほぼゼロで、

ドットインストールのサービスからプログラミングを学びました。

その後やんばるエキスパートのRubyコースを受講し、

現在もやんばるエキスパートに所属しつつ独学でRubyを勉強しております。

 

Ruby選んだ理由は

・初心者が入りやすく参考にする記事が多い

Rubyを扱うコミニティが多い

以上の理由でRubyを選択しました。

 

今はRuby on Railsで作成したポートフォリオを転職活動に使用しつつ、

プロを目指す人のためのRuby入門でRubyの基礎を勉強しております。