2023-06-01から1ヶ月間の記事一覧

SQL:プレースホルダ、バインド

$mysqli = new mysqli('接続先のMySQLサーバの[ホスト名]or[IPアドレス]', 'MySQLサーバに接続する時の[ユーザ名]', 'MySQLサーバに接続する時の[パスワード]', '[接続先のサーバ名]'); $mysqli = new mysqli('db', 'test_user', 'pass', 'test_database'); …

SQL;トランザクション、ロック(制御)

トランザクションとは? データの整合性を保つ方法 ロック:同時実行制御 複数ユーザーが同時に、クエリを実行してDBのデータのを書き換えると、 エラー(クラッシュ)を招く可能性があるため、ロックをかけて他のユーザーが クエリを実行できないようにする仕…

SQL:条件分岐、CASE式

条件分岐:CASE式 UNION ALL こちらを使っても条件式を書けるが、テーブルを2回読み込むので、 処理速度が落ちるため、パフォーマンスの観点から良くない。 CASE こちらは、UNION ALL を向上させたもの。 こちらを使うのが通説。 SELECT emp_no, birth_date,…

SQL:実行計画

EXPLAIN <クエリ>; 実行するクエリの実行計画を確認する。 目的:クエリが高速かどうか確認するため mysql> EXPLAIN SELECT -> COUNT(*) -> FROM -> employees\G *************************** 1. row *************************** id: 1 select_type: SIMPLE…

SQL:インデックス

インデックスの作成・確認・削除 # 作成 : 30秒ほど時間がかかる $ CREATE INDEX <インデックス名> ON <テーブル名> (カラム名); $ CREATE INDEX salary_index ON salaries (salary); mysql> CREATE INDEX salary_index ON salaries (salary); Query OK, 0 …

DB設計:正規化

エンティティ(実体) 例:美容院 予約システム 画面図などを使って、仕様を決める 画面図や仕様書を見ながら、何をデータとして保存するか列挙していく。 列挙したデータを種類ごとに分ける。 店名 時間帯 美容師 コース システム側が事前に用意するもの 店…

SQL:言語化してみた

SELECT COUNT(*) FROM employees; 言語化すると => employees テーブルにおいて、いくつ行数があるか、数える SELECT COUNT(*) FROM current_dept_emp WHERE to_date = '9999-01-01'; 言語化すると => current_dept_emp テーブルにおいて、to_date 値が、999…

SQL:相関サブクエリ, コメント

### SQL 読み込まれる順番 1. FROM: クエリの対象となるテーブル(またはビュー)を指定 2. WHERE: 条件に基づいて行を取得 3. GROUP BY: グループ化の基準となる列を指定 4. HAVING: GROUP BY で取得した結果をさらに 絞る 5. SELECT: フィルタリングおよび…

SQL:テーブル結合

テーブル結合 INNER JOIN:内部結合(共通部分のみ) データがある列のみ結合 外部結合より、高速 $ SELECT <列名>, ... FROM <テーブル名1> INNER JOIN <テーブル名2> ON <テーブル名1.列名> = <テーブル名2.列名>; AS構文: hoge AS a これの意味は、hoge …

Git stash

$ git stash:一時的に避難して、他のブランチで作業をしたい時に使う。 $ git commit前に、$ git stashを打つ $ git stash list:git stash した作業 一覧を表示するコマンド $ git stash apply:最新の作業 を復元する 特定の作業を復元:$ git stash appl…

SQL:SELECT 構文 part2

ORDER BY 句:検索結果を並び替える $ SELECT * FROM employees ORDER BY <整列キー> <ASC/DESC>; ASC は、省略可能。デフォルト値のため。 また、複数条件を指定することも可能。 $ SELECT * FROM employees ORDER BY birth_date DESC, hire_date ASC; 誕生日が大きい</asc/desc>…