【Ruby on Rails】データベース操作まとめ(rails db:＊＊)

# データベース本体に関する操作



#### rails db:create

データベースの作成

＜使用可能オプション＞

-  rails_ENV  
　環境を指定する（デフォルトはdevelopmentとtest）







#### rails db:drop

データベースの削除



＜使用可能オプション＞

- rails_ENV  
　環境を指定する（デフォルトはdevelopmentとtest）





# テーブルに関する操作



#### rails db:migrate

migrationファイルを実行し、テーブルを作成する（全てのmigrationファイルが対象）



＜使用可能オプション＞

- rails_ENV  
　環境を指定する（デフォルトはdevelopmentとtest）
- VERSION  
　指定したバージョン以前のmigrationを全てupに、それより後のmigrationを全てdownにする







#### rails db:rollback

最新のmigrationを1つdownにする



＜使用可能オプション＞

- STEP  
　downにするmigrationの数を指定する
- rails_ENV  
　環境を指定する（デフォルトはdevelopmentとtest）







#### rails db:migrate:status

migrationの状態を表示する



＜使用可能オプション＞

- rails_ENV  
　環境を指定する（デフォルトはdevelopment）







#### rails db:migrate:up

VERSIONオプションで指定したmigrationをupにする



＜使用可能オプション＞

- VERSION  
- rails_ENV  
　環境を指定する（デフォルトはdevelopmentとtest）







#### rails db:migrate:down

VERSIONオプションで指定したmigrationをdownにする



＜使用可能オプション＞

- VERSION  
- rails_ENV  
　環境を指定する（デフォルトはdevelopmentとtest）







#### rails db:schema:dump

現在のデータベースの状態に合わせて、db/schema.rbを更新する



＜使用可能オプション＞

- rails_ENV  
　環境を指定する（デフォルトはdevelopment）







#### rails db:schema:load

db/schema.rbにあわせて、データベースを更新する（migrationファイルを参照しない）



＜使用可能オプション＞

- rails_ENV  
　環境を指定する（デフォルトはdevelopmentとtest）





# レコードに関する操作



#### rails db:seed

dbディレクトリのseeds.rbファイルを実行し、レコードを作成する



＜使用可能オプション＞

- rails_ENV  
　環境を指定する（デフォルトはdevelopment）







#### rails r ファイルpath例：rails r db/seeds/test.rb
特定のseedファイルを実行し、レコードを作成する



# いくつかの操作をまとめた物



#### rails db:setup

rails db:create
rails db:schema:load
rails db:seed
をまとめた物


＜使用可能オプション＞

- rails_ENV  
　環境を指定する（デフォルトはdevelopmentとtest ※seedはdevelopmentのみ）







#### rails db:reset

rails db:drop
rails db:create
rails db:schema:load
rails db:seed
をまとめた物


＜使用可能オプション＞

- rails_ENV  
　環境を指定する（デフォルトはdevelopmentとtest ※seedはdevelopmentのみ）







#### rails db:migrate:redo

rails db:rollback
rails db:migrate
をまとめた物


＜使用可能オプション＞

- STEP  
　やり直すmigrationの数を指定する
- rails_ENV  
　環境を指定する（デフォルトはdevelopmentとtest）
- VERSION  
　対象のmigrationを指定する







#### rails db:migrate:reset

rails db:drop
rails db:create
rails db:migrate
をまとめた物


＜使用可能オプション＞

- rails_ENV  
　環境を指定する（デフォルトはdevelopmentとtest）
- VERSION  
　指定したバージョン以前のmigrationを全てupに、それより後のmigrationを全てdownにする





# 補足

### rakeとrailsの違い

Ruby on Railsのデータベース操作のコマンドを調べていると、rails ～というものとrake ～というものの2種類が見つかります。
これらは、Railsのバージョン4まででは区別をして使用していた物を、バージョン5より区別がなくなったそうなので、バージョン5以降を使用する場合は、全てrails ～で実行できる、とのことです。

### schema.rbとは

migrationファイルは、それぞれのテーブルの設計図のような物です。
それに対してschema.rbは、現在のデータベースの構造を表した設計図のような物のようです。
すでに問題なく動いている環境をコピーする場合、migrationファイルではなくschema.rbを元にデータベースを構築した方が間違いの元を減らせる、という風にRailsの公式ドキュメントに記載があります。

# 参考ページ

[Active Record Migrations — Ruby on Rails Guides](https://guides.rubyonrails.org/active_record_migrations.html#what-are-schema-files-for-questionmark)

[rails db:〇〇 まとめ - Qiita](https://qiita.com/kurubiaburikaburu/items/e237457116de8f216b6c)

[Ruby on Railsでよく使う rake db コマンドまとめ13選 | caramelCase](https://caramelcase.com/rake-command-ruby-on-rails/)

[RoRでseedファイルを指定して実行したい時。 - Qiita](https://qiita.com/t-kusakabe/items/232b47dac4c2d355e154)

[Ruby - 「rake」コマンドと「rails」コマンドの違い｜teratail](https://teratail.com/questions/95402)