LoginSignup
0
0

More than 3 years have passed since last update.

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

Posted at

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で重複を除く

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0