> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# MySQL ガイド

> 開発者向けの実践的な MySQL ガイド。データモデリング、クエリ、セキュリティ、パフォーマンス、AI 連携、日々の運用を扱います。

MySQL には多くの領域があります。これらのガイドは、最もよく出てくる部分に焦点を当てています。最初のマイグレーションの前に一度だけ下す決定から、毎週手に取るテクニックまでです。どれも実践的で、VillageSQL で動作します。

SQL は初めてですか? [MySQL チュートリアル](https://villagesql.com/docs/ja/tutorial/index.md)は、1 つのサンプルデータベースに対して、1 レッスンずつ順番に教えます。すでに SQL を書いているなら、[データ型の選択](https://villagesql.com/docs/ja/guides/choosing-data-types.md)、[JOIN](https://villagesql.com/docs/ja/guides/joins.md)、[インデックス](https://villagesql.com/docs/ja/guides/mysql-indexes.md)から始めてください。他のすべてがその上に成り立つ基礎を扱っています。

## MySQL と PostgreSQL の比較

* [MySQL と PostgreSQL はどう違い、どう選ぶか](https://villagesql.com/docs/ja/guides/mysql-vs-postgresql.md)

## データの保存

列とスキーマの決定は、データが本番に入った後では元に戻しにくいものです。これらのガイドは、列の型、主キー戦略、制約、そして VillageSQL の拡張機能フレームワークが可能にする型 — ネイティブの UUID やネットワークアドレス型など — を扱います。

* [UUID を効率的に生成して保存する方法](https://villagesql.com/docs/ja/guides/uuids.md)
* [自動増分、UUID、複合キーの中から選ぶ方法](https://villagesql.com/docs/ja/guides/primary-key-strategies.md)
* [IPv4 と IPv6 のアドレスを効率的に保存する方法](https://villagesql.com/docs/ja/guides/storing-ip-addresses.md)
* [MySQL で MAC アドレスを保存してクエリする方法](https://villagesql.com/docs/ja/guides/storing-mac-addresses.md)
* [VillageSQL で IPv6 アドレスをネイティブに扱う方法](https://villagesql.com/docs/ja/guides/ipv6-storage.md)
* [JSON ドキュメントを保存、クエリ、操作する方法](https://villagesql.com/docs/ja/guides/json-in-mysql.md)
* [データに合った列の型を選ぶ方法](https://villagesql.com/docs/ja/guides/choosing-data-types.md)
* [TINYINT(1) の代わりに本物のブール値を保存する方法](https://villagesql.com/docs/ja/guides/boolean-columns.md)
* [文字セットと照合順序がデータにどう影響するか](https://villagesql.com/docs/ja/guides/character-sets.md)
* [MySQL のタイムスタンプでタイムゾーンを正しく扱う方法](https://villagesql.com/docs/ja/guides/timestamps-timezones.md)
* [データベースの正規化でスキーマを構成する方法](https://villagesql.com/docs/ja/guides/normalization.md)
* [外部キーで参照整合性を強制する方法](https://villagesql.com/docs/ja/guides/foreign-keys.md)
* [生成列で派生値を計算してインデックスを付ける方法](https://villagesql.com/docs/ja/guides/generated-columns.md)
* [CHECK 制約でデータベースレベルでデータを検証する方法](https://villagesql.com/docs/ja/guides/check-constraints.md)
* [deleted\_at 列でソフトデリートを実装する方法](https://villagesql.com/docs/ja/guides/soft-deletes.md)
* [utf8mb4 で絵文字と完全な Unicode を保存する方法](https://villagesql.com/docs/ja/guides/utf8mb4.md)

## クエリの作成

これらのガイドは、JOIN と集計からウィンドウ関数、CTE、全文検索まで、最もよく書く SQL を扱います。VillageSQL 固有のガイドには、IP サブネットによるクエリや、HTTP と AI の関数による結果の拡充が含まれます。

* [遅い、または誤った JOIN を正しく動かす方法](https://villagesql.com/docs/ja/guides/joins.md)
* [サブクエリと JOIN のどちらにするか決める方法](https://villagesql.com/docs/ja/guides/subqueries-vs-joins.md)
* [CTE が役立っているか害になっているかを見分ける方法](https://villagesql.com/docs/ja/guides/ctes-in-mysql.md)
* [遅い GROUP BY を速くする方法](https://villagesql.com/docs/ja/guides/group-by-having.md)
* [ウィンドウ関数で累計、順位、移動平均を計算する方法](https://villagesql.com/docs/ja/guides/window-functions.md)
* [MySQL で NULL がどう振る舞い、どう正しく扱うか](https://villagesql.com/docs/ja/guides/null-in-mysql.md)
* [MySQL で全文検索を実装する方法](https://villagesql.com/docs/ja/guides/full-text-search.md)
* [ビューで複雑なクエリを単純にする方法](https://villagesql.com/docs/ja/guides/views.md)
* [upsert で 1 つのステートメントで行を挿入または更新する方法](https://villagesql.com/docs/ja/guides/upsert.md)
* [キーセットと OFFSET のページネーションで大きな結果セットをページ分けする方法](https://villagesql.com/docs/ja/guides/pagination.md)
* [SQL で文字列を操作および変換する方法](https://villagesql.com/docs/ja/guides/string-functions.md)
* [MySQL のクエリで日付と時刻を扱う方法](https://villagesql.com/docs/ja/guides/date-time-functions.md)
* [MySQL で IP サブネットによるクエリと絞り込みを行う方法](https://villagesql.com/docs/ja/guides/subnet-queries.md)
* [MySQL で IP アドレスによる位置情報の検索を行う方法](https://villagesql.com/docs/ja/guides/ip-geolocation.md)
* [MySQL から直接 HTTP リクエストを送る方法](https://villagesql.com/docs/ja/guides/http-requests-in-mysql.md)
* [外部の REST API のデータでクエリ結果を拡充する方法](https://villagesql.com/docs/ja/guides/rest-api-enrichment.md)
* [cube 型で多次元データを保存してクエリする方法](https://villagesql.com/docs/ja/guides/cube-queries.md)
* [MySQL でトライグラム類似度を使って似た文字列を見つける方法](https://villagesql.com/docs/ja/guides/trigram-similarity.md)
* [MySQL で名前を音声的に、また編集距離で一致させる方法](https://villagesql.com/docs/ja/guides/fuzzy-string-matching.md)

## データの保護

VillageSQL の crypto 拡張機能は、bcrypt、AES 暗号化、HMAC 署名、ダイジェスト関数を SQL に持ち込みます。これらのガイドは、それらの暗号関数を、MySQL 組み込みのユーザーと権限の管理と合わせて扱います。

* [bcrypt と Argon2 でパスワードを安全にハッシュ化する方法](https://villagesql.com/docs/ja/guides/password-hashing.md)
* [データの整合性のためにチェックサムとダイジェストを生成する方法](https://villagesql.com/docs/ja/guides/hashing-data.md)
* [機密性の高い列のデータをデータベースレベルで暗号化する方法](https://villagesql.com/docs/ja/guides/encrypting-columns.md)
* [MySQL で AES を使ってデータを暗号化および復号する方法](https://villagesql.com/docs/ja/guides/symmetric-encryption.md)
* [MySQL で HMAC を使ってデータに署名し検証する方法](https://villagesql.com/docs/ja/guides/hmac-mysql.md)
* [暗号学的に安全なランダム値を生成する方法](https://villagesql.com/docs/ja/guides/random-data-mysql.md)
* [MySQL のユーザーと権限を作成して管理する方法](https://villagesql.com/docs/ja/guides/user-management.md)
* [ユーザーがパスワードの代わりに JWT でサインインできるようにする方法](https://villagesql.com/docs/ja/guides/jwt-authentication.md)
* [本番向けに MySQL サーバーのセキュリティを強化する方法](https://villagesql.com/docs/ja/guides/security-hardening.md)

## パフォーマンスの最適化

遅いクエリは、たいていインデックスかスキーマの問題です。これらのガイドは、EXPLAIN の出力、スロークエリログ、InnoDB がデータを保存する仕組みの理解を使って、それらを診断する方法と、何を変えるべきかを扱います。

* [遅い MySQL クエリを診断して修正する方法](https://villagesql.com/docs/ja/guides/mysql-query-performance.md)
* [インデックスの仕組みと使うべき場面](https://villagesql.com/docs/ja/guides/mysql-indexes.md)
* [MySQL の EXPLAIN 出力を読んで対処する方法](https://villagesql.com/docs/ja/guides/reading-explain.md)
* [カバリングインデックスがテーブルルックアップをなくす仕組み](https://villagesql.com/docs/ja/guides/covering-indexes.md)
* [スロークエリログで遅いクエリを見つけて修正する方法](https://villagesql.com/docs/ja/guides/slow-query-log.md)
* [コネクションプーリングでデータベース接続を効率的に管理する方法](https://villagesql.com/docs/ja/guides/connection-pooling.md)
* [InnoDB がデータを保存する仕組みと、それがパフォーマンスに重要な理由](https://villagesql.com/docs/ja/guides/innodb-storage.md)
* [大量のデータを高速に挿入する方法](https://villagesql.com/docs/ja/guides/bulk-inserts.md)
* [クエリパフォーマンス向上のために大きなテーブルをパーティション分割する方法](https://villagesql.com/docs/ja/guides/table-partitioning.md)

## AI で構築する

VillageSQL の AI 拡張機能を使うと、言語モデルの呼び出しと埋め込みの生成を SQL から直接行えます。これらのガイドは、プロバイダーのセットアップと、実際のクエリで `ai_prompt()` と `ai_embedding()` を使う方法を扱います。

* [VillageSQL の AI プロバイダーの認証情報を設定する方法](https://villagesql.com/docs/ja/guides/ai-api-setup.md)
* [ai\_prompt() で SQL から直接 AI モデルを呼び出す方法](https://villagesql.com/docs/ja/guides/ai-prompts-in-mysql.md)
* [MySQL でベクトル埋め込みを生成して保存する方法](https://villagesql.com/docs/ja/guides/vector-embeddings.md)
* [MySQL の中から AI を使ってテキストを分類する方法](https://villagesql.com/docs/ja/guides/text-classification.md)
* [MySQL で AI 関数を使ってセンチメント分析を行う方法](https://villagesql.com/docs/ja/guides/sentiment-analysis.md)
* [SQL の中で AI を使ってテキストを直接要約する方法](https://villagesql.com/docs/ja/guides/ai-summarization.md)
* [MCP で AI エージェントを MySQL に接続する方法](https://villagesql.com/docs/ja/guides/mysql-ai-agents-mcp.md)

## MySQL の運用

これらのガイドは運用面を扱います。スキーマ移行、Docker のセットアップ、トランザクション、レプリケーション、バックアップ、そして本番で問題が起きたときにすべきことです。

* [最小限のダウンタイムで MySQL をアップグレードする方法](https://villagesql.com/docs/ja/guides/upgrade.md)
* [サポート終了後に MySQL 8.0 から 8.4 にアップグレードする方法](https://villagesql.com/docs/ja/guides/mysql-80-eol-upgrade.md)
* [PostgreSQL から MySQL に移行する方法](https://villagesql.com/docs/ja/guides/postgres-to-mysql.md)
* [MariaDB から MySQL に移行する方法](https://villagesql.com/docs/ja/guides/mariadb-to-mysql-migration.md)
* [本番でスキーマの変更を安全に管理する方法](https://villagesql.com/docs/ja/guides/schema-migrations.md)
* [稼働中のテーブルにダウンタイムなしで ALTER TABLE を実行する方法](https://villagesql.com/docs/ja/guides/zero-downtime-schema-changes.md)
* [MySQL 向けに Django、Rails、Prisma を設定する方法](https://villagesql.com/docs/ja/guides/mysql-with-orms.md)
* [ローカル開発と本番のために Docker で MySQL を実行する方法](https://villagesql.com/docs/ja/guides/mysql-on-docker.md)
* [Testcontainers で実際の MySQL サーバーに対してテストする方法](https://villagesql.com/docs/ja/guides/testing-with-testcontainers.md)
* [Kubernetes 上で MySQL を実行する方法](https://villagesql.com/docs/ja/guides/mysql-on-kubernetes.md)
* [トランザクションを使ってデータの一貫性を保つ方法](https://villagesql.com/docs/ja/guides/transactions.md)
* [デッドロックを検出、防止し、そこから回復する方法](https://villagesql.com/docs/ja/guides/deadlocks.md)
* [最もよくある MySQL のエラーを修正する方法](https://villagesql.com/docs/ja/guides/common-mysql-errors.md)
* [MySQL でストアドプロシージャを作成して使う方法](https://villagesql.com/docs/ja/guides/stored-procedures.md)
* [MySQL のトリガーで操作を自動化する方法](https://villagesql.com/docs/ja/guides/triggers.md)
* [MySQL のトリガーから Webhook を送信する方法](https://villagesql.com/docs/ja/guides/http-webhooks.md)
* [INFORMATION\_SCHEMA で MySQL のメタデータをクエリする方法](https://villagesql.com/docs/ja/guides/information-schema.md)
* [MySQL データベースをバックアップして復元する方法](https://villagesql.com/docs/ja/guides/backup-strategies.md)
* [MySQL レプリケーションの仕組みとセットアップ方法](https://villagesql.com/docs/ja/guides/replication-basics.md)
* [MySQL のリードレプリカで読み取りをスケールする方法](https://villagesql.com/docs/ja/guides/read-replicas.md)
* [バイナリログの仕組みと、ポイントインタイムリカバリに使う方法](https://villagesql.com/docs/ja/guides/binary-logging.md)

## アプリケーションの接続

フレームワークごとに MySQL への接続の仕方は少しずつ違います。これらのガイドはそれぞれ、稼働中のサーバーに対して小さな動作するアプリケーションを構築し、初回に間違えやすいセットアップの手順 — ドライバーの選択、マイグレーション、コネクションプーリング、そしてプールをどこに置くべきか — を扱います。

* [Prisma で Next.js を MySQL に接続する方法](https://villagesql.com/docs/ja/guides/mysql-with-prisma.md)
* [Drizzle で Next.js を MySQL に接続する方法](https://villagesql.com/docs/ja/guides/mysql-with-drizzle.md)
* [ORM なしで Next.js を MySQL に接続する方法](https://villagesql.com/docs/ja/guides/nextjs-mysql.md)
* [SQLAlchemy 2.0 で FastAPI を MySQL に接続する方法](https://villagesql.com/docs/ja/guides/fastapi-sqlalchemy-mysql.md)
* [Eloquent で Laravel を MySQL に接続する方法](https://villagesql.com/docs/ja/guides/laravel-mysql.md)
* [ActiveRecord で Rails を MySQL に接続する方法](https://villagesql.com/docs/ja/guides/rails-mysql.md)
* [sqlc で Go の型安全な MySQL クエリを生成する方法](https://villagesql.com/docs/ja/guides/go-sqlc-mysql.md)
* [サーバーレスランタイムが MySQL の接続を使い果たさないようにする方法](https://villagesql.com/docs/ja/guides/serverless-mysql-drizzle.md)
* [MySQL のテーブルを REST API として公開する方法](https://villagesql.com/docs/ja/guides/rest-api-from-tables.md)

## 拡張機能の作成

VillageSQL の拡張機能フレームワークを使うと、サーバーのコードに触れずに、カスタム関数と型を MySQL に追加できます。これらのガイドは、ゼロからインストール可能な拡張機能までを案内します。

* [C++ で VillageSQL の拡張機能を構築する方法](https://villagesql.com/docs/ja/guides/cpp-extensions.md)
* [Rust で VillageSQL の拡張機能を構築する方法](https://villagesql.com/docs/ja/guides/rust-extensions.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.