Help us understand the problem. What is going on with this article?

自分用メモ(scope,データの読み出し,SQL関連)

scopeは、特定のクエリ使用を効率化するものである。
(何度も同じクエリ記載をしなくて良くなる)(メソッド化する)

RailsではSQLを書かなくて良いが、SQLについて大まかな理解をしていないと、後々しんどそう

データ検索の基本

データを検索したり、更新するときは「行」と「列」を指定して、データが存在するフィールドを特定する。

クエリとは

データベースに送る命令のこと

SQLについて

クエリを書くための言語
リレーショナルデータベースに蓄積したデータを操作したり、定義したりするためのプログラム言語
国際標準化されているので、どのDBでも使える

ここでやる(20日の22時から)
https://www.atmarkit.co.jp/ait/articles/1112/20/news130.html

・できること
大量のデータを効率的に取得・更新・削除・追加できる

SQLは二つに分類できる(データを操作-DML)(データを定義-DDL)

DML
データ操作に分類する文法をDMLという(SELECT,UPDATE,DELETE,INSERTなどが基本)
→今回はこっちを深掘りする

DDL
データベースのテーブルの作成や、定義する文法のことを特にDDLと呼ぶ

SQLでのデータベース操作

SELECT

(FROMで取得したテーブルの)カラムを選択して、カラムのデータに処理をする感じ

FROMでテーブル指定
SELECTの後に取得するカラムを書く(コンマを挟んで複数指定可)(*で全選択)
(SELECT:DISTINCTでデータの重複を除去する)
WHEREで条件指定(レコードの内容で絞り込む)(いろんな条件式使える=とか>とか)
データ抽出時の並び替えも可(ORDER BY)
(末尾)表示する検索結果データをLIMITで絞る

順序
どのテーブルのデータ?(FROMで指定)
テーブルのどのカラムのデータ?(動詞で指定)(SELECTなど)

SELECT [表示する要素名(複数指可 A,Bという記載)] FROM [テーブル名];

DISTINCT(重複除去)

SELECT DISTINCT(カラム名)で取得されるカラムの重複をなくすことも可能

四則演算

SELECT カラム名(+=/)数値
複数取得も可 name, price, price
1.1, price*2みたいな感じも可

テーブル指定のFROMについて

FROMを使って、どのテーブルのカラムかを指定する

条件指定のWHEREについて

WHEREは条件完全一致しか取得できない、なので部分一致は取得できない
なのでLIKEを使う
WHERE food(カラム名) LIKE "%プリン(検索単語)%"(%:どんな文字列にも一致することを示す記号)
→foodというカラムで、プリンという文字を持っているデータを全て取得する(焼きプリン・プリン大福・焼きプリン大福も取得)

条件不一致を検出する際はNOTを使う
WHERE NOT ・・・

NULLの取得

NULL(空のフィールド)を取得したい場合、=ではなく IS NULLを使う(以外の取得はIS NOT NULL)

複数の条件を検索したい場合

ANDやORの使用
WHERE 〜 AND 〜; 

データの並び替え ORDER BY

ORDER BY 並び替えたいカラム名 並べ方;
ASC(昇順)(小さい数→大きい数)
DESC(降順)(大きい数→小さい数) 

LIMIT

末尾に記載する
データの検索結果の上から個数を絞る

DISTINCTで重複を除く

https://guides.rubyonrails.org/active_record_querying.html#scopes

koao123
仕事ができるエンジニアになりたい20卒です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした