1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

バックエンド メモ

Last updated at Posted at 2021-12-26

MYSQL

作法

作法 解説
テーブル名は複数形に
文の最後には;をつける
コマンドは全て大文字で書く
テーブル名,カラム名はアッパーキャメルケース
フィールドがNULLか確認する際には必ずIS NULLを使う
UPDATE, DELETEを使用する際には必ずWHERE句があるか確認する WHERE句がない場合すべてのレコードが更新、削除されてしまう。
シングルクォーテーションを使う
===== 命名規則 =====
===== 技術的作法 =====
インデックスを使用してテーブルを更新する場合は、インデックスを使用せずにテーブルを更新するよりも時間がかかります(インデックスも更新する必要があるため)。したがって、頻繁に検索される列にのみインデックスを作成します。
クエリをシンプルで保守しやすいものにするために、必要な場合を除いて、日付に時間コンポーネントを使用しないでください。

Tips

  • MySQL safe updateモード(Where句が必要になる)

コマンド一覧

コマンド 概要
SQL
UPDATE データの更新に使用する UPDATE table_name SET column1 = value1, column2 = value2,... WHERE condition;
DELETE データの削除に使用 DELETE FROM table_name WHERE condition;
SELECT LIMIT 特定の条件にマッチする最初のN行を取得する。例えばページネーションとかで最初の数個しかデータが入らないのに何千行読んでからその上から一部を撮るのは無駄だから。
MIN 最小のデータを取得
MAX 最大のデータを取得
COUNT カウント=個数を求める
AVG アベレージ=平均を求める
SUM サム=合計を求める
LIKE パターンを使ってフィルターをかけるときに使う
IN Orの短縮形。 (A or B or C or D) を IN (A, B, C, D)というふうに書ける
BETWEEN 指定した範囲内のレコードと取得。数字、文字列、日付が条件に使える
AS エイリアス。使い所 : 複数のテーブルに対するクエリを作成する時、関数が使われている時、カラム名が長いもしくは可読性に欠ける時、いくつかのカラムをまとめて出力する時
(INNER/RIGHT/LEFT/CROSS) JOIN 2つのテーブルを特定の条件でバインディングした結果を出力。CROSSは結果が大きくなるので注意。
UNION 複数のテーブルの出力を合成することができる。重複要素は削除される
UNION ALL UNIONと同じだが重複要素は削除されない。
GROUP BY 出力をグループ化する。集計関数と一緒に使って書く属性とそれに属するデータの合計などを調べられる。例えば都道府県ごとのサービスの利用者とか(北海道X人、青森Y人,,,)
HAVING フィルター。WHEREは集計関数が使えないが、HAVINGは使える。いつ使うかというとGROUP BYと併用して<各都道府県の利用者の合計(COUNT)がX人以上>などの条件を作成できる
EXIST 引数の値があるかを確認できるWHEHEの条件で使ったりする。引数にはクエリを指定できる
ANY WHERE、条件演算子とクエリを利用して条件を満たす組み合わせが1つ以上あればTRUEそうでないならFALSEのものを探す
ALL ANYは1つ以上だったがこちらは全てが条件を満たしているときにRRUE、そうでないならFALSEになる
INSERT SELECT tableAからtableBにCopyができる
CASE スイッチ文がかける
IFNULL オプション列のフィールドがからのときIFNULL(table_value,default)の形式でnullだったときのデフォルト値を設定できる
コメント
-- comment 一行
/* paragraph */ 複数行
DATABASE
CREATE DATABASE データベース作成
DROP DATABASE データベース削除
CREATE TABLE テーブル作成
DROP TABLE テーブル削除
TRUNCATE TABLE テーブル内の全レコード削除
ALTER TABLE カラムの追加、修正(名前、データ型)、削除、 ルール(重複不可やNULL不可など)の追加、を行う
使用できるルール
UNIQUE 要素の重複を禁止する
NOT NULL NULL値を列に設定できなくする。
PRIMARY KEY 要素の重複を禁止して、値に一意性を持たせる。これが設定できるのは1つのテーブルにつき1種類まで(カラムAとカラムBの2つを合わせてValueとすることもできる。)
FOREIGN KEY 外部キー。他のデータとのテーブル間のリンクを破壊するアクションを防ぐために使用する。また無効なデータが親テーブルに含まれる値の1つである必要があるため、そのような外部キーが列に挿入されるのを防ぎます。
CHECK 値に条件を設定できる。例えば18年以上しか登録できないとか
DEFAULT デフォルト値を設定
INDEX インデックスを作成
AUTO INCREMENT 自動インクリメントを使用すると、新しいレコードがテーブルに挿入されたときに一意の番号が自動的に生成されます。 多くの場合、これは、新しいレコードが挿入されるたびに自動的に作成される主キーフィールドです。
VIEW 雑にいうとクエリを保存する機能。使えば毎回簡単に最新のデータが取れるそうな

ワイルドカード

記号 意味
% 0字以上の任意の文字列
_ 任意の1文字

##ヒント
AS

チートシート

テーブルから全てのデータを取得
SELECT * FROM MyTable;
テーブルから特定の列のデータを取得
SELECT ColumnName FROM MyTable;
テーブルから複数の列のデータを取得
SELECT Column1, Column2 FROM MyTable;
検索結果から重複要素の削除
SELECT DISTINCT ColumnName FROM MyTable;
検索結果の件数を取得
SELECT COUNT(ColumnName) FROM MyTable;
検索結果の合計を取得
SELECT SUM(ColumnName) FROM MyTable;
検索結果の平均を取得
SELECT AVG(ColumnName) FROM MyTable;
検索結果の中から最大の値を取得
SELECT MAX(ColumnName) FROM MyTable;
検索結果の中から最小の値を取得
SELECT MIN(ColumnName) FROM MyTable;
条件を追加して検索
SELECT Column1 FROM MyTable
WHERE Column2 = 'Value';

逆引きチートシート

やりたいこと どうすればいいか
テーブル内の全データ削除 DELETE FROM Table;

専門用語

用語 説明
SQL
データベース
テーブル
カラム(列)
ロウ(行)
フィールド
NULL 何もないことを表す値。0でもなく空欄(0文字)でもない。レコードの作成時にNULLが許容されているなら値なしでレコードが作成、更新ができる。オプション的なデータに使われる。またNULLであるかの確認には=, <,や <> などの演算子は使えず,IS NULL もしくは IS NOT NULL を用いる。

セキュリティ

パフォーマンス

ツール・プラグイン

Percona toolkit

MySQL Workbench

## 情報源
https://www.w3schools.com/mysql/default.asp

仮想化ソフト(VirtualBox)

自分はVirtualBoxを使用

インストール方法

公式doc

公式サイト

Vagrant(仮想化ソフトのCUIクライアントツール)

公式サイト

  • 補完機能のインストール
補完機能インストール
$ vagrant autocomplete install --zsh
$ autoload -Uz compinit && compinit

CLI

ボックスの追加
$ vagrant box add ADDRESS

補足: ADDRESSは3つカタログにあるボックス名(ex,"hashicorp/bionic64")を使う

Vagrantでできること

  1. 仮想マシンの構築
  2. 仮想マシンの管理

Vagrantを使うことによる利益

  • 使いやすい
  • 自動化
  • 開発環境のセットアップ時間を短縮
  • 本番環境の同等化

自動サーバ構築ツール(Ansible)

候補 : Chef, Ansible, Puppet
自分はAnsibelを使う。

これからやること(バックエンド)

GraphQL
NoSQL

Linux
Docker
HTTP Server
Git周り(CI)
Jenkins

クラウド

Editor
mac
cui iterm
package manager

webアプリフレームワーク

Ruby

Python

Node

Express

Nest

正規表現
テスト

#更新情報

title summry date
初公開 W3schools-sql終了 2021/12/26
1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?