ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
なぜ CREATE TABLE 文を取り出したいか
- テーブル定義を 別環境にコピー(本番 → 開発 / ステージング)
- 定義のバージョン管理(git で .sql を追跡)
- マイグレーションスクリプトに変換
- 新人 / 引き継ぎ時の 仕様書代わり
MySQL / MariaDB
-- 単一テーブル
SHOW CREATE TABLE users;
-- 結果例
/*
CREATE TABLE `users` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `users_email_unique` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
*/
-- 結果を 1 列で取得(コピペしやすい)
SHOW CREATE TABLE users \G
シェルから DB 全テーブルの定義を取得:
# mysqldump で定義のみ (-d = no data)
mysqldump -u root -p -d mydb > mydb_schema.sql
# 特定テーブルだけ
mysqldump -u root -p -d mydb users orders > tables.sql
# 1 行クエリで取り出し
mysql -u root -p -e "SHOW CREATE TABLE mydb.users\G"
# 全テーブル一括(シェルでループ)
for t in $(mysql -u root -p -N -e "SHOW TABLES FROM mydb"); do
mysql -u root -p -e "SHOW CREATE TABLE mydb.$t\G"
done > all_schemas.sql
PostgreSQL
PostgreSQL は SHOW CREATE TABLE 相当の SQL がありません。代わりに:
# pg_dump で定義のみ (-s = schema only)
pg_dump -h localhost -U postgres -s -t users mydb > users.sql
# 全テーブル
pg_dump -s mydb > mydb_schema.sql
# 特定スキーマのみ
pg_dump -s -n public mydb > public_schema.sql
# データ込み(参考)
pg_dump mydb > mydb_full.sql-- psql から定義を擬似確認(CREATE TABLE そのものではない)
\d+ users
-- カラム情報のみ
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = 'users'
ORDER BY ordinal_position;
-- インデックス情報
SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'users';
SQL Server
SSMS (SQL Server Management Studio) からが最も簡単:
- 左ペインでテーブルを右クリック
- Script Table As → CREATE To → New Query Editor Window
- CREATE TABLE 文が新しいクエリウィンドウに展開される
T-SQL で取り出す場合:
-- カラム情報
SELECT c.name AS column_name,
t.name AS data_type,
c.max_length,
c.is_nullable,
dc.definition AS default_value
FROM sys.columns c
JOIN sys.types t ON c.user_type_id = t.user_type_id
LEFT JOIN sys.default_constraints dc ON c.default_object_id = dc.object_id
WHERE c.object_id = OBJECT_ID('dbo.users')
ORDER BY c.column_id;
-- sp_help でテーブル情報
EXEC sp_help 'dbo.users';
-- インデックス
EXEC sp_helpindex 'dbo.users';
コマンドラインからは sqlpackage.exe で DACPAC をエクスポートし、その中の SQL を取り出す方法もあります。
SQLite
-- sqlite3 シェルから
.schema users
-- → CREATE TABLE users (...);
-- 全テーブル
.schema
-- インデックスも含む
.fullschema
-- SQL でも取得可
SELECT sql FROM sqlite_master WHERE type='table' AND name='users';
-- 全テーブル + インデックス
SELECT sql FROM sqlite_master WHERE sql IS NOT NULL ORDER BY type, name;# dump コマンドで定義 + データ
sqlite3 mydb.db .dump > mydb_dump.sql
# 定義のみ
sqlite3 mydb.db .schema > mydb_schema.sql
GUI ツールでの操作
| ツール | 操作 |
|---|---|
| DBeaver | テーブル右クリック → Generate SQL → DDL |
| phpMyAdmin | テーブル選択 → エクスポート → SQL → 「構造のみ」 |
| pgAdmin | テーブル右クリック → Scripts → CREATE Script |
| MySQL Workbench | テーブル右クリック → Send to SQL Editor → Create Statement |
| SSMS | テーブル右クリック → Script Table As → CREATE To → New Query |
| TablePlus | テーブル右クリック → Copy DDL Statement |
Laravel マイグレーションへの変換
既存 DB から Schema::create マイグレーションを自動生成するパッケージ:
# kitloong/laravel-migrations-generator
composer require --dev kitloong/laravel-migrations-generator
php artisan migrate:generate
# → database/migrations/ に各テーブルの create 文が生成
# 特定テーブルだけ
php artisan migrate:generate --tables="users,posts"
# 既存マイグレーション無視
php artisan migrate:generate --no-down
環境間で定義を同期する手順例
# 本番 → 開発(MySQL)
# 本番側
mysqldump -h prod-db -u dump_user -p -d prod_db > schema.sql
# 開発側
mysql -u root -p dev_db < schema.sql
# 差分だけ取りたい場合は専用ツール
# mysqldiff / percona-toolkit / liquibase / flyway diff
FAQ
Q: 出力された CREATE TABLE 文を別 DB エンジンで使える?
A: 完全な互換性はない。ENGINE=InnoDB や AUTO_INCREMENT は MySQL 固有。エンジン間移植は SchemaSpy / dbschema 等の標準化ツール経由が安全。
Q: 大量のテーブルを一括で取り出したい
A: mysqldump -d / pg_dump -s が最速。GUI 経由よりコマンドラインのほうがバージョン管理に向く。
Q: 外部キー制約も含まれる?
A: SHOW CREATE TABLE / pg_dump -s はすべて含む。GUI ツールはチェックボックスで切替できることが多い。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?