69190
MySQLにおいてデータベースとともに複数のテーブルを作成することは可能でしょうか？ また その際自動でidを設置し
ランダムで用意した画像をMySQLのテーブルに設置することほ可能でしょうか？
CC BY-SA 4.0
2020-08-02T13:47:30.193
69184
2020-08-03T00:37:05.140
2020-08-02T14:32:15.270
19110
39481
question
mysql sql
SQL データベースとともに複数のテーブルを作成する
シェルスクリプトとDDLファイルでデータベース作成、テーブル作成ができます。自動でidを設置の意味が若干不明瞭ですが、`auto_increment`を使うことでidを自動割り振りできます。

```

    // your_dbname でデータベース作成
    $ mysql -uroot -e "create database 'your_dbname'"
    
    // batch.sqlにテーブル定義を記載する例
    $ mysql -h host -u username -ppassword your_dbname < batch1.sql
    $ mysql -h host -u username -ppassword your_dbname < batch2.sql
    $ mysql -h host -u username -ppassword your_dbname < batch3.sql
    
```

上記のコマンドをシェルスクリプト化しておけばデータベース・テーブル作成が自動化できる

  * `batch.sql` の中に記載するテーブル定義サンプル 
    * 以下のようにしておけばINSERTすると自動でidが割り振られる

```

    CREATE TABLE image (
         id INT(11) NOT NULL AUTO_INCREMENT,
         content BLOB NOT NULL,
         PRIMARY KEY (id)
    );
    
```

  * 参考  
[create mysql database with one line in
bash](https://superuser.com/questions/288621/create-mysql-database-with-one-
line-in-bash)  
[MySQL 5.6 リファレンスマニュアル / ... / AUTO_INCREMENT
の使用](https://dev.mysql.com/doc/refman/5.6/ja/example-auto-increment.html)
CC BY-SA 4.0
2020-08-02T23:10:33.247
69190
2020-08-02T23:10:33.247
4715
69184
answer
前提としてMySQLはあくまでデータ保持のソフトウェアであり、  
MySQLのコマンドとして用意はされていますが、それらを同時に行うSQLは存在しません。

複数のSQLを組み合わせて、同時実行するためにはMySQLのクライアント側での処理が必要です。  
[Create Database構文](https://dev.mysql.com/doc/refman/5.6/ja/create-
database.html)  
[Create Table構文](https://dev.mysql.com/doc/refman/5.6/ja/create-table.html)

ソフトウェアを構築する際に実行するならば「デプロイ」時の「マイグレーション」などと呼ばれていて、  
別の方の回答のように、linuxでシェルスクリプトから実行することもありますし、  
ライブラリを利用することもあります。

ソフトウェアの要件の中に動的にデータベースを作ったり消したりすることもありますが、  
その場合は上記の構文をサーバサイド側の言語を利用してMySQLで実行します。  
言語やフレームワークによっては専用のAPIが存在することもありますが、やっていることはほとんど変わらないでしょう。

どんなライブラリがあるのかという質問に対しては  
どのようなサーバサイド言語を使っているのか？  
そのほかにどのようなライブラリを使っているのか？  
開発メンバーにどの程度の技術スキルがあるのか？  
ライブラリの導入にどの程度のコストが見込まれるのかそれを受け入れられるのか？  
等さまざまな条件によって変わってきます。  
ライブラリの選択に関しては明確な正解はないことが多いです。  
プロダクトとプロジェクトの特性を見て選択してみましょう。
CC BY-SA 4.0
2020-08-03T00:37:05.140
69195
2020-08-03T00:37:05.140
22665
69184
answer