メインカテゴリーを選択しなおす
相関副問合せの具体例を示してください。どういう時に使いますか?
相関副問合せ(*correlated subquery*)とは、**外側のクエリの値を参照しながら、内側のサブクエリが行ごとに実行される**SQL文です。 以下では、 * 〓 基本的な使い方(構文) * 〓 具体的な例 * 〓 どんなときに使うか * 〓 注意点 を順に解説します。 --- ## 〓 相関副問合せの基本構文 ```sql SELECT ... FROM 外側のテーブル AS A WHERE 条件式 (SELECT ... FROM 内側のテーブル AS B WHERE B.列 …
クエリプランナー(Query Planner)とは、**SQLクエリを解析し、どのように実行すれば最も効率よく結果を取得できるかを決定するコンポーネント**です。RDBMS(例:PostgreSQL、MySQL、SQL Serverなど)の内部にあり、**SQL文を最適な実行計画(Query Plan)に変換する役割**を担います。 --- ## 〓 クエリプランナーの役割 1. **SQLの構文解析(Parsing)** * 入力されたSQL文を解析して構文ツリー(構造)を生…
BTreeインデックス(**B-Tree Index**)は、リレーショナルデータベース管理システム(RDBMS)で最も一般的に使われるインデックス方式です。PostgreSQL、MySQL(InnoDB)、SQL Server、Oracleなどの主要なRDBMSがデフォルトで使用しています。 --- ## 〓 BTreeインデックスとは? BTreeは **「平衡木(Balanced Tree)」** の一種で、データが常にソートされた状態で保たれる構造です。BTreeインデックスは、この木構…
データベースにおけるGROUP BY句の使い方をマスターしたいです。
`GROUP BY`句は、SQLにおいてデータをグループ化して集計するための非常に重要な機能です。これを使うことで、特定の列を基準にデータをグループ化し、そのグループに対して集計関数(`SUM`, `AVG`, `COUNT`, `MAX`, `MIN`など)を適用することができます。 以下に、`GROUP BY`句の使い方を解説します。 ### 1. **基本構文** `GROUP BY`句の基本的な構文は次のようになります。 ```sql SELECT column1, aggregate_f…
RDB(リレーショナルデータベース)で `JSON型` を使用するメリットは、**柔軟性と構造化のバランスを取れる**点にあります。従来のリレーショナルなテーブル設計では難しかった柔軟なデータ格納が、RDBでもできるようになります。 --- ## 〓 JSON型をRDBで使う主なメリット ### 1. **スキーマレスな柔軟性を持てる** * 固定スキーマを定義せずに、自由な構造のデータを格納できる * アプリごとにフィールドが変わ…
三層スキーマ構造(3層スキーマアーキテクチャ)は、データベース設計の考え方を「ユーザーの視点」「プログラムやシステムの視点」「実際のデータの保存方法」の3段階に分けて整理したモデルです。これをわかりやすくするために、**図書館の貸出システム**を例にして説明します。 --- ## ■ 三層スキーマ構造とは? 層 内容 例(図書館) --…
DBサーバのIOがボトルネックになっている場合のチューニング方法
Webシステムで**DBサーバのI/O(ディスクアクセス)がボトルネック**になっている場合、原因を突き止めた上で**ハードウェア・OS・DB・SQLの各レイヤでチューニング**を行う必要があります。以下に、対策を段階別にまとめます。 --- ## 〓 【1】SQL/インデックスレベルの改善 ### 1-1. **不要なクエリの削減** * 頻繁な `SELECT *` や JOIN の見直し * 不要なアクセス回数を減らす(例:1ページ表示で100回のクエリ…
もちろんです。**SQLの `CHECK` 制約**は、テーブルの列に格納される**データの値に制限(条件)を設ける**ための仕組みです。これにより、**不正なデータの挿入や更新を防ぐ**ことができます。 --- ## ■ CHECK制約の基本構文 ```sql CREATE TABLE テーブル名 ( 列名 データ型 CHECK (条件式) ); ``` または、テーブル定義の最後に**列をまたいだ条件**を指定することも可能です。 ```sql CREATE TABLE…
MySQLがギャップロックとネクストキーロックをかける理由はなぜ
MySQL(特にInnoDBストレージエンジン)が **ギャップロック(Gap Lock)** と **ネクストキーロック(Next-Key Lock)** を使う理由は、**「ファントムリード(Phantom Read)」を防ぐため**です。これは、\*\*トランザクションの一貫性(特にREPEATABLE READレベル)\*\*を守るためのロック戦略です。 --- ## 〓 1. ギャップロックとは? * **ギャップロック**は、「**ある値**が存在する範囲の\*\*前後の“隙間(ギ…
JOIN句(SQLの`JOIN`)を使うと、複数のテーブルを条件に基づいて結合できます。これを実行するために、**RDBMSは内部的にいくつかのアルゴリズム**を使って最適化された結合を行います。ここでは、代表的なJOINのアルゴリズムを解説します。 --- ## 〓 主なJOINアルゴリズム アルゴリズム 特徴 適するケース ----------------------------…
モーニングルーティン冬の朝は眠いです。いきなりですが、私の朝の時間割です。6:30 起床 洗顔・うがい・コーヒーを淹れる6:45〜朝食準備・小鳥たちの餌やりとカゴの掃除・娘の送り出し7:40 掃除、洗濯開始(週1でネットスーパー発注作業)※...
SQLクエリ最適化の秘訣:実践的なテクニックでパフォーマンスを向上
SQLクエリを効率化し、システムパフォーマンスを向上させる方法を解説。インデックス活用やJOINの最適化、CTEの使用法など実践的なテクニックを網羅。
「はじめてのSQL」というそのものずばりの解りやすいサイトがありました。 私自身はSQLの命令を駆使してガシガシできるわけではないのですが、説明はとても分かりやすかったです。...
既存システムのコード解析してる中で、今まであまり利用して無かったSQL文があったので覚書。テーブルのデータを更新するにあたり、UPDATE•INSERTはガンガン使うのだが、MERGEは使った事が無かったので仕様を確認した。以下のような2つのテーブルがあるとする。 例えば、テーブルBの内容をテーブルAに反映させるとして、Bと同じIDがAにあったら更新・無かったら挿入とする時、 ストアドプロシージャ等でIFを利用することで実装可能ではある。 IF EXISTS(SELECT * FROM Table_A as A INNER JOIN Table_B as B ON A.ID = B.ID) U…
AI CONNECTでは無料メンバー登録をすることでどのくらいお得に利用できる?最新のAI技術やデータ分析に関するメルマガを購読できることなどがあります
といった方向けの内容となっています。 A
今朝ネットニュースを流し見していたら、「「SQL」の読み方論争に決着? 「しーくぇる」vs「えすきゅーえる」にPostgreSQLがケリ」との記事が目に止まりました。私は「えすきゅーえる」とよんでいたのですが、記事の中でも「PostgreSQL」においては「えすきゅーえる」を使用するそうですが、あくまでも「どちらが正しいか」ではなく、「どちらを標準とするか」だそうです。...
SQLを勉強したいけど、環境構築がめんどくさい。初心者だから、環境構築が難しくてわからない。今回は、環境構築不要でSQLが学習できるサイトを3つ紹介したいと思います!
PostgreSQL:肥大化するpg_largeobjectをvacuumloでクリーニング
vacuumloはPostgreSQLデータベースから"孤児になった"ラージオブジェクトをすべて削除する、単純なユーティリティです。データベース内でoidまたはloデータ型列内にまったく現れないOIDを持つすべてのラージオブジェクト(LO)を"孤児になった"ラージオブジェクトとみなします。
PostgreSQLのsetval関数を使ったシーケンス番号の一括変更方法
今回は、PostgreSQLのsetval関数を使ってシーケンス番号を一括変更する方法についてお伝えします。シーケンス番号の一括変更は、基本的にあまり使いませんが、特定の場面で非常に便利です。具体的な例を交えながら順序立てて説明していきます
JavaScriptの変数をSQL文に入れる方法とSQLインジェクションの回避
SQL文の中にJavaScriptの変数を入れたい場合、何も考えずにSQLと変数を連結させたり、テンプレートリテラルでSQL文を作成すると、SQLインジェクションのリスクが高くなります。そこで今回は、JavaScriptの変数とプレースホル
PostgreSQLで配列にある複数IDを一括で更新する2つの方法
例えば、PostgreSQLのあるテーブルのデータを、JavaScriptの配列に格納された複数IDを検索して更新したい場合、ORでひたすら繋げたりfor文などを用いて実現することもできますが、IDの数だけループしてSQLを実行することにな
エンジニア騎士とクエリの魔女沖縄マイクラ部で子どもたちに触らせるプログラミング問題集みたいなものがないかと探してイル中たどり着いた一つが「エンジニア騎士とクエリの魔女」でした。小学生には難しいだろうなと思いながらも、職場の方での新人さんとの
ごきげんよう。毎週金曜日は欠かさずランチにカレーを食べています、サーバー担当のgonzoです😺 今回はRDB(リレーショナルデータベース)にテスト用の大量ダミーデータを流し込む方法についてご紹介します。
【SQL】見やすさと可読性アップのための改行とインデントの活用法
みなさんはSQL文を書く場合にどのようなことに注意をしていますか?もちろん、正常に動作することは大前提ですが、自分が後から見返したり、チームで開発をしているのであれば、他の人が見てもわかるように書かなくては、バグの温床になりかねません。 そ
オンコウ無料サイトの練習問題にどんどんチャレンジしたいから練習用データをインポートしようと思うんだ♪ドリル手を動かせば上達も早いというからね!前回、データベースの作り方がわかったから、あとはデータをインポートするだけだね。前回のSQL #0
【SQL】重複行はDISTINCTとGROUP BYどちらで除去するか
SQL文で検索した結果に対して重複したレコードを取り除く(または、まとめる)場合、DISTINCTかGROUP BYを使うと思います。SQLに慣れてないと、どちらも同じような機能だと勘違いしますが、一般的には単純に重複行を削除する場合はDI
【備忘録】phpmysqlインポート時にタイムアウトするエラー対処法
mysqlからsqlをエクスポートする エクスポートしたsqlを別のmysqlにインポートする SQLファイルが大きすぎてインポートできないときの対処法 SQLをエクスポートする際にzipファイルなど
SQLのWHERE条件式で使う IN LIKE BETWEEN の使い方と違い
SQLでSELECT * FROM テーブル名でデータを抽出したあとにWHEREで条件を絞り込む際に使う「IN」「LIKE」「BETWEEN」の使い方の基本をご紹介します SQLの IN は 条件を複
40代事務職Access触りたくないのでSQLを勉強してみたら感動した
自分の自己紹介的な記事 40代事務職、会社で上司がAccess使ってるので、それを修正するためにAccess勉強しようかな・・・って本を買って半年 1ページも勉強してません。そろそろやろうかな・・・っ
お人好しすぎて要望を突っぱねることができなかった。器用貧乏、もうヤメよう
プログラミングというと、「職業=プログラマーではない」ということで自分には縁がないと思っておりました。 駄菓子菓子。 ガチのSEじゃなくても、プログラミングはありましたね。 AccessやExcelマクロ、HTMLやProcessing等々 「いろいろあったなァ… あるじゃんなァ…」 と、遠い目になってきます。 なもんで、今週のはてなブログのお題がまた目に入って、心がすり減ってきました。 paiza特別お題キャンペーン「ゲームでプログラミング力を試してみよう」 by paiza 左上を見ていただくと、 「エンジニア騎士とクエリの魔女」 とか書いてあって。 「クエリの魔女」って、Accessクエ…
MySQLのInnoDBはレコードを削除しても容量が減らない?
以前仕事で、MySQLが動かなくなる障害が発生しました。原因を調べてみると、データベースサーバーのMySQL用のディスク(スライス)の使用率が100%になっていることがわかりました。元々構築した際に、想定する容量を見誤っていた(全く足りなか
停止せずにMySQLバックアップ!mysqldumpベストオプション
データベースのバックアップって、いつも考えさせられますよね。きっちりフルバックアップしたいなら、停止してデータディレクトリごとバックアップするのがベターだと思いますが、稼働中のサービスを停止したくない場合はダンプコマンドを利用します。しかし
mysqldumpでtablespacesのプロセス特権エラーの対処法
MySQLをアップデートした後、いつものようにデータベースのバックアップをしようとmysqldumpコマンドを実行したら、以下のようなエラーが表示されました。mysqldump: Error: 'Access denied; yo
【SQL入門】OUTER JOIN句で外部結合|SQL Bolt⑦ 和訳・演習解答
本記事では、海外のSQL学習サイト【SQL Bolt】を利用して、データベース初心者向けにSQLの基本を解説します。 第7回は「SQL Lesson 7: OUTER JOINs」、複数の表を外部結合する方法についてです。 SQL Bolt
【SQL入門】JOIN句で複数テーブルを結合|SQL Bolt⑥ 和訳・演習解答
SQL入門・初心者向け学習サイトSQL Boltの解説です。今回はLesson6の要点和訳と演習問題解答です。
【SQL入門】SELECT句の練習問題|SQL Bolt⑤ Review日本語訳と解答
本記事では、海外のSQL学習サイト【SQL Bolt】を利用して、データベース初心者向けにSQLの基本を解説します。 第5回は「SQL Review: Simple SELECT Queries」、Lesson4とLesson6の間にある練
【SQL入門】フィルタリングと並び替えで、ほしいデータだけを取り出す方法|SQL Bolt④ 和訳・演習解答
本記事では、海外のSQL学習サイト【SQL Bolt】を利用して、データベース初心者向けにSQLの基本を解説します。 第4回は「SQL Lesson 4: Filtering and sorting Query results」、問合せ結果
プログラミング言語と組み合わせて利用することでより沢山のことができるようになる、データを扱う専門用語、データベース(DB)言語SQLの基礎について学習しました!
【SQL入門】WHERE句の使い方|SQL Bolt③和訳・演習解答
本記事では、海外のSQL学習サイト【SQL Bolt】を利用して、データベース初心者向けにSQLの基本を解説します。 第3回は「SQL Lesson 3: Queries with constraints (Pt. 2)」、前回につづいて制
【SQL入門】WHERE句の使い方|SQL Bolt②和訳・演習解答
本記事では、海外のSQL学習サイト【SQL Bolt】を利用して、データベース初心者向けにSQLの基本を解説します。 第2回は「SQL Lesson 2: Queries with constraints (Pt. 1)」、制約条件つきのク
【SQL入門】SELECT句の使い方|SQL Bolt日本語訳・演習問題解答
本記事では、海外のSQL学習サイト【SQL Bolt】を利用して、データベース初心者向けにSQLの基本を解説します。 初回は「SQL Lesson 1: SELECT queries 101」、SELECT句の使い方についてです。 筆者自身
【Udemy講座レビュー】3時間で学ぶ SQL ・データベース 超入門【丁寧な解説+演習問題で SQL データ抽出の基本が身につく】標準 SQL
今回はUdemy・Udemy Business共通のコース、『3時間で学ぶ SQL ・データベース 超入門【丁寧な解説+演習問題で SQL データ抽出の基本が身につく】標準 SQL』のレビューです。 コース購入を検討している方や、Udemy
【Udemy】はじめてのSQL ・データ分析入門 -データベースのデータをビジネスパーソンが現場で活用するためのSQL初心者向コース|受講レビュー
今回はUdemy・Udemy Business共通のコース、『はじめてのSQL ・データ分析入門 -データベースのデータをビジネスパーソンが現場で活用するためのSQL初心者向コース』のレビューです。 コース購入を検討している方や、Udemy
【基本情報技術者試験】副問合せ|データベースの問題をSQL文を実行しながら解説③
本記事は、「基本情報技術者試験の過去問解説」をしながら「SQLの練習」を同時にやってみよう!という趣旨の内容です。 一緒にSQLを実行してみたい人は、コードの右上のコピーボタンから簡単にSQL文をコピペできます。ぜひご利用ください。 開発環
【基本情報技術者試験】表の結合処理|データベースの問題をSQL文を実行しながら解説②
本記事は、「基本情報技術者試験の過去問解説」と「SQLの練習」を同時にやってみよう!という趣旨の内容です。 一緒にSQLを実行してみたい人は、コードの右上のコピーボタンから簡単にSQL文をコピペできます。ぜひご利用ください。 開発環境、デー