メインカテゴリーを選択しなおす
参照制約(**外部キー制約 / foreign key constraint**)とは、**あるテーブルの列が、別のテーブルの主キー(または一意キー)と一致していなければならない**というルールです。 これにより、\*\*データの整合性(リレーションの一貫性)\*\*を保つことができます。 --- ## 〓 具体例 ### ① テーブル構成の例 ```sql -- 親テーブル(参照される側) CREATE TABLE departments ( id INT PRIMARY KEY, n…
データベースにおける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…
JOIN句(SQLの`JOIN`)を使うと、複数のテーブルを条件に基づいて結合できます。これを実行するために、**RDBMSは内部的にいくつかのアルゴリズム**を使って最適化された結合を行います。ここでは、代表的なJOINのアルゴリズムを解説します。 --- ## 〓 主なJOINアルゴリズム アルゴリズム 特徴 適するケース ----------------------------…
PostgreSQLのテーブルで主キーを削除しても問題ないか。
こちらの記事を書いているのは、2025年2月のことである。 データベース設計の手戻りが発生していて、データベース(PostgreSQL)の修正とVisual Studio2022のプロジェクト(C#)の修正をしていく手前である。すでに対象テーブルには、CSVアップロード機能でデータが存在している。手順を考える前に、行き当たりバッタリで作業を行っていった。①何はなくても、VS2022ソリューションプロジェクトのバックアップ②PostgreSQLのデータベースのバックアップこの記事では、PostgreSQLに焦点を当てて書いています!③対象テーブルを選択して、プロパティをクリック ④対象の項目に対…
今朝ネットニュースを流し見していたら、「「SQL」の読み方論争に決着? 「しーくぇる」vs「えすきゅーえる」にPostgreSQLがケリ」との記事が目に止まりました。私は「えすきゅーえる」とよんでいたのですが、記事の中でも「PostgreSQL」においては「えすきゅーえる」を使用するそうですが、あくまでも「どちらが正しいか」ではなく、「どちらを標準とするか」だそうです。...
初回投稿日:2024/02/29こんにちは。思考停止三郎です。PostgreSQLのpg_dumpに想定以上の時間がかかった時などに「pg_dumpコマンドを強制終了する方法」について調べてみました。目次手順1:「pg_dump」のプロセスIDを特定する手順2:「pg_dump」のプロセスを停止する
PySide ( Qt for Python ) は、 Qt (キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。Linux/X11, macOS および Microsoft Windows をサポートしていま...
PostgreSQLで登録(insert)したレコードのIDを取得する方法
どのデータベースでも、ユニークにオートインクリメント(自動採番)するテーブルを作成するのが一般的だと思います。データベースの一つであるPostgreSQLでは、データを登録(insert)する際に、登録したIDを返す方法があります。この方法
PostgreSQL:肥大化するpg_largeobjectをvacuumloでクリーニング
vacuumloはPostgreSQLデータベースから"孤児になった"ラージオブジェクトをすべて削除する、単純なユーティリティです。データベース内でoidまたはloデータ型列内にまったく現れないOIDを持つすべてのラージオブジェクト(LO)を"孤児になった"ラージオブジェクトとみなします。
PySide ( Qt for Python ) は、 Qt (キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。Linux/X11, macOS および Microsoft Windows をサポートしています...
PostgreSQLのsetval関数を使ったシーケンス番号の一括変更方法
今回は、PostgreSQLのsetval関数を使ってシーケンス番号を一括変更する方法についてお伝えします。シーケンス番号の一括変更は、基本的にあまり使いませんが、特定の場面で非常に便利です。具体的な例を交えながら順序立てて説明していきます
PostgreSQLで配列にある複数IDを一括で更新する2つの方法
例えば、PostgreSQLのあるテーブルのデータを、JavaScriptの配列に格納された複数IDを検索して更新したい場合、ORでひたすら繋げたりfor文などを用いて実現することもできますが、IDの数だけループしてSQLを実行することにな
【SQL】重複行はDISTINCTとGROUP BYどちらで除去するか
SQL文で検索した結果に対して重複したレコードを取り除く(または、まとめる)場合、DISTINCTかGROUP BYを使うと思います。SQLに慣れてないと、どちらも同じような機能だと勘違いしますが、一般的には単純に重複行を削除する場合はDI
【合格体験記】OSS-DB Silver Ver.2.0(勉強期間、使用した教材など)
OSS-DB Silver(Ver.2.0)に合格したので、合格までの流れを書いていきます。 勉強期間、使用した教材、本試験を受けるタイミング、教材と本試験の難易度ギャップ等について書いていきます。 ちなみに実際に試験を受けたのは2022年9月28日です。(書くタイミングが遅くなってしまいました。)その点ご了承ください。
資格勉強は事前準備がけっこう大事(OSS-DB Silver Ver.2.0)
OSS-DB Silver(Ver.2.0)に合格し、その合格体験記を以前投稿しました。 資格取得はスタートを切る前の事前準備がけっこう大事だなと思い、今回はその辺りをまとめてみようと思います。 資格取得をスタートする前にやるべきことは意外とたくさんあるかなと思っています。資格の概要把握から始まり、最新バージョンの確認、合格ラインの確認、合格体験記のチェック、教材候補の調査などなどです。
Notionで資格勉強の計画をたてる(OSS-DB Silver Ver.2.0)
OSS-DB Silver Ver.2.0の合格体験記を前に投稿したのですが、Notionのデータベース機能で勉強計画を作成して進めていきました。 Notionのデータベース機能は使い慣れるまで少し時間かかるかもですが、慣れるとめちゃくちゃ便利だなと感じています。他の資格取得の際にも同じようにNotionで計画して進めています。 今回は計画の立て方や日々の運用方法、便利ポイントなどをご紹介しようと思います。※Notionの細かい操作方法の説明は省略しています。
資格取得までのロードマップ(OSS-DB Silver Ver.2.0)
「OSS-DB Silver Ver.2.0」の記事をいくつか投稿したのでまとめてみようと思います。事前準備 → 勉強計画 → 合格体験記 の流れで時系列にまとめたロードマップ的な記事にしてみます。
【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」、問合せ結果
【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句の使い方についてです。 筆者自身
DBコンテナ内のデータ確認はdocker execコマンドを使用(Docker DesktopからでもOK)
dockerでDBのコンテナを立ち上げた時、データはどうやって確認していますか?私は、docker execコマンドでコンテナ内のDBをチェックしたりします。この記事では、PostgreSQLを例に解説します。コンテナ上のDBにdocker
Class.forName()がないとDBに接続できない?java.sql.SQLException: No suitable driver found for jdbc:postgresql
EclipseでPostgreSQLを使ってDB接続を行う際に、No suitable driver found for jdbcのエラーが発生しました。クラスパスはしっかり設定できているのに...java.sql.SQLException
【PostgreSQLをMacで使う方法】インストールから基本的な使い方まで紹介します
PostgreSQLをMacで使うPostgreSQLのインストールから基本的な使い方まで、手順にそって紹介します。1. Homebrewをインストール/bin/bash -c "$(curl -fsSL まだインストールしていな
PostgreSQLを起動したままbrew updateをするとバージョンの不一致で動かなくなった話
発生した問題突然、PostgreSQLに接続できなくなりました。% brew services start postgresql==> Successfully started `postgresql` (label: homebr
【Docker】PostgreSQLの起動時に初期データをセットアップ
この記事では、dockerでPostgreSQLの環境を構築する際に、DBやテーブル、データをセットアップする方法を記載します。docker-composeを使用してDB起動時に初期設定ファイルを読み込むと、ファイルに記載した設定通りにセッ
PostgreSQLにJDBCで接続するJavaサーブレットをTomcat上で動かす
JavaのサーブレットからPostgreSQLのデータを取得して、 HTMLのテーブルとして出力してみました。JavaサーブレットはTomcatで動かして、PostgreSQLはDockerで構築します。PostgreSQLに接続するJav
TomcatとPostgreSQLをdocker-composeで起動してDBのデータを取得するJavaサーブレットを実行する
Tomcatでサービスを立ち上げて、PostgreSQLのDBからデータを取得してみようと思いました。docker-composeでTomcatとPostgreSQLを起動すれば、簡単に環境を構築できそうです。サンプルを例に、やり方を紹介し