okinawa

IT勉強メモ

DB・SQL

SQL勉強メモ

SQL実行順序 小技集 select 1 where 1 = 1 OFFSET FETCH count(*)over() テーブルデータ増殖技(Insert Select) GROUP BY句にないカラムも表示させたい テーブル同士の比較 ファイル取り込み(bulk insert) テーブルコピー(select * into) 基礎知識 GROUP BYっ…

MySQL Shellでログイン

ログイン \connect root@ホスト名 or IPアドレス:ポート番号 \connect root@localhost:3306 もしくは \connect root@127.0.0.1:3306 ↓ パスワードを聞かれる Creating a session to 'root@127.0.0.1:3306' Please provide the password for 'root@127.0.0.1:…

テーブル結合でハマったこと

LEFT OUTER JOINで左側にだけ結合条件つけても意味なし 例:テーブル2と3を結合 結合条件を複数テーブルにするときは注意 LEFT OUTER JOINで左側にだけ結合条件つけても意味なし 下記のような左テーブルにしか効かない結合条件しても意味無し。 左側は全て…

NOT EXISTSとDISTINCTでハマった話

大して難しいことではなかったのにハマったので備忘録。 やりたかったこと テーブル結合の結果をイメージできてなかった DISTINCTを勘違いしていた EXISTSを使い慣れていなかった 正解 感想 やりたかったこと 投入データでテーブルを更新 ↓ 投入データに含ま…

バッファプールとログバッファ

バッファプールとログバッファ SQLServerでのバッファプールの確認方法 バッファプールとログバッファ バッファプール:ストレージ(HDD)にあるRDBのデータの一部を保持している。高速化のため。 ログバッファ:更新処理のときに更新情報をログバッファ上に…

統計情報とは

統計情報とは カーディナリティの補足 ヒスグラムの補足 参考書籍 統計情報とは 実行計画を練るためのネタ元。 各テーブルのレコード数 各テーブルの列数と列のサイズ 列値のカーディナリティ(値の個数) 列値のデータ分布(どの値がいくつあるかのヒストグラ…

SQLチューニングの一覧

早い段階で取得するデータ量を減らす インデックスが使われなくなる時 インデックス列を加工する 否定形とOR 暗黙の型変換 複合インデックスは列の順番に注意 サブクエリを減らす 参考書籍 早い段階で取得するデータ量を減らす Where条件が複数ある場合、抽…

HAVING句をマスターすると集合志向が理解できるらしい

WHEREとHAVINGで対比するとわかりやすい WHERE HAVING 参考書籍 WHEREとHAVINGで対比するとわかりやすい WHERE:1行の特徴を調べる HAVING:集合の特徴を調べる 例:下記テーブルから算数80点以上&国語80点以上の生徒を調べたい 答えはstudentId 100 200。 …

【SQL】テーブル結合で行を増殖させないポイント

テーブル結合で行を増殖させないポイント 1対1で結合 1対多で結合 多対多で結合 DISTINCT・GROUP BYで増殖対策 テーブル結合で行を増殖させないポイント ON句の条件を 1対1 1対多 にする。 1対1で結合 ↑元テーブル SELECT t4.id, t5.id FROM table4 t4 le…

【SQL】3値論理とは

3値論理 普通は TRUE・FALSE の2つ。 SQLは TRUE・FALSE・UNKNOWNの3つ。 いつUNKNOWNになるの? NULLが絡むとUNKNOWNになる。 WHERE A = NULL -- UNKNOWNになる なのでIS NULLやIS NOT NULLがある。 WHERE A IS NULL OR A IS NOT NULL NOT AND ORでUNKNO…

集合指向言語と手続き型言語の違い

集合指向言語と手続き型言語 SQLとJavaで同じことをやってみる SQL Java 集合指向言語の思想 余談:MAX関数の内部処理 関連記事 参考 見返す用のかんたんなメモとして。 集合指向言語と手続き型言語 集合指向:まとめて処理 手続き型:1個ずつ処理 JavaのSt…

SQLの集合演算をテーブル結合でやってみる

SQLの集合演算 和集合:UNION / UNION ALL 差集合:EXCEPT 積集合:INTERSECT 関係除算を自力でやる 余りのある関係除算 厳密な関係除算 参考 集合演算子を使うよりテーブル結合のほうが処理が速いこともあるらしい。 SQLの集合演算 和集合:UNION / UNION A…

【SQL】特性関数とは

SQLの特性関数について 特性関数とは、入力項がある集合に含まれるかどうかを調べるための関数で、含まれるなら 1 を、含まれないなら 0 を返すものです²。例えば、次のようなテーブルがあるとします。 id name gender 1 A M 2 B F 3 C M このテーブルからge…

GROUP BYってなんなの?

Group Byとは 部分集合に分けるのがGroup By。 表示結果をみると行が減るから行が圧縮されるような印象を持っていたがそんなことはない。 元テーブル ・実行SQL select tenpo_cd from Table1 group by tenpo_cd 実行結果 イメージ図↓ Group By後 実行結果だ…

GROUPING演算子とWINDOW関数のフレーム

あまりちゃんと理解できていない。 自分用のメモとして。 GROUPING演算子 ROLLUP:小計、合計を出力 CUBE:3次元以上のデータ。よくわからなかった。→参考:https://it-trend.jp/bi/article/cube 元テーブル select tenpo_cd, bunrui, sum(value) from Table1…

SQL CASE式について

CASE式の書ける所 CASE式はELSE句を必ず書くべし! CASE式の書ける所 式なので「1+1」が書けるところならどこでもOK。 CASE式はELSE句を必ず書くべし! ELSE句を省略するとNULLが入る。 省略すると思わぬところでNULLが入るバグに繋がるので、ELSEを書く癖を…

SQL サブクエリについてのメモ

サブクエリの実行順序 スカラ・サブクエリ 相関サブクエリ 相関サブクエリをテーブル結合で書き換える 相関サブクエリの実行順序イメージ 参考 サブクエリの実行順序 サブクエリは内側から先に実行されるよ。 スカラ・サブクエリ スカラは「単一の」という意…

Group By句にないカラムを表示させたい

自己結合 やり方 参考記事 番外編(集約関数の中にCASE式) 自己結合 ・元テーブル Table1 例:店舗ごとの金額合計を出しつつ、他のカラムも表示する。 select * from Table1 t1 left join ( select tenpo_cd, sum(value) AS 'tenpo_total' from Table1 grou…

UNIONの使い所

参考記事 UNIONのイメージ UNIONの使い所 FULL OUTER JOINの使い所 参考記事 note.com UNIONのイメージ UNIONは縦にテーブル結合。 JOINは横にテーブル結合。 というイメージ。 UNIONの使い所 異なるテーブルの値を集計したいとき fruits table Meat table …

DB勉強メモ

インデックスって何なの? 参考記事 インデックスのイメージ クラスター化インデックス 非クラスター化インデックス エクステント(データ管理の単位) Viewって何なの? お勉強の内容を記憶に残すためにメモをば。 インデックスって何なの? 参考記事 とて…

EclipseでSQLServerと接続

まずは公式を参考にする SQLServerのユーザー追加 SQLServerサーバー認証を設定 & 再起動 ポートが開いてないエラー TCP/IPを有効&ポートの設定 まずは公式を参考にする docs.microsoft.com 公式を参考にJDBCドライバーをダウンロードして WEB-INF < lib …

GMOのDBチューニング課題やってみた

参考 DBチューニングで大事なこと テストデータ作成でエラー 解答のクエリ インデックスとは? インデックス化しよう なぜか遅くなったのでMySQLのパフォーマンスを見る Buffer Poolとは? Table Opened Cacheとは? 複合インデックスとは? 複合インデック…

SQL Server Management Studioメモ

SQL Server Management Studio SQLサーバのGUI。以下SSMS。 ユーザ作成・権限管理 セキュリティの中。ログインがユーザ。 データベースダイアグラム ダイアグラム便利。 だけど新規作成時に必ずインデックスの境界外エラーが出る。 一度再起動すれば大丈夫。…

VisualStudioでのSQL Serverの接続文字列の確認方法

・最初にメモっておく方法SQL Serverをインストールした時に1回だけ表示されるのでメモっておく。 ・あとから調べる方法zebratch.blog.ss-blog.jp まずサーバー名を調べる。SQL Server Management Studioでデータベース右クリック→プロパティ→接続のプロパテ…

DB・SQLの基本

参考図書 select select文全部入り insert update delete 演算子 比較演算子 <>は左右の値が等しくない Null判定 LIKE BETWEEN IN/NOT IN ANY/ALL AND/OR 論理演算子の優先順位 主キー 複数列を主キーにする 検索結果を加工する DISTINCT ORDER BY LIMIT/OFF…

全角カタカナでLIKE検索すると半角カタカナの濁点・半濁点がヒットしない問題

utf8_unicode_ci じゃあどうするの? MySQLのCollation 参考 結論 utf8_unicode_ci utf8_unicode_ciを指定すると半角カナ、全角カナ、ひらがな、カタカナを区別せず、かなり広範囲にわたってマッチするようになる。 濁点・半濁点が付いていても無視する。 SE…