1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MySQLの基本CREATE DATABASEでデータベース作成

Last updated at Posted at 2022-03-18

hosting-g92cf767da_1280.png
ハッカソンでバックエンドも一部担当し若干FastAPIを触ってみました。
DB周りは他の方がやってくれていたのでほぼ触っていないのですが、バックエンドやるからには必須スキルなのでなんとか身につけたいと思います。

まずはSQLのお約束

  • 慣習としてコマンドはCREATE DATABASEのように大文字で記述します。(コマンド打つ時は小文字で打ったりしますが)
  • データベース名、テーブル名、カラム名などコマンド以外の部分はthis_is_databaseのようにスネークケースで記述します。
  • SQL文の末尾はCREATE DATABASE this_is_database;のように基本的に;となります。

コマンドCREATE DATABASEとは

読んで字のごとくデータベースを作成するコマンドです。
Envaderの仮想環境でコマンドを打ちながら学んでいきます。

CREATE DATABASE this_is_database;

これでデータベースが作成されます。

すでに存在するデータベース名で作成しようとするとエラーが出るので、IF NOT EXISTSと記述すればエラーを回避できます。

CREATE DATABASE IF NOT EXISTS this_is_database;

実際にDBが作成されたかを見るにはSHOW DATABASES;です。

SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| food_app           |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| this_is_database   |
+--------------------+
6 rows in set (0.01 sec)

this_is_databaseが作成されていることを確認できました。

文字コードを指定する

デフォルトではutf8となっていますので必要に応じて変更します。

CREATE DATABASE DB CHARACTER SET 文字コード;

照合順序を指定する

デフォルトでutf8_general_ciとなっています。ソート順を指定する場合に指定します。

CREATE DATABASE DB COLLATE 照合順序;

文字コードと照合順序をまとめて指定することもできます

照合順序と文字コードはセットで扱います。異なる文字セットを指定するとエラーが出ます。

CREATE DATABASE DB CHARACTER SET 文字セット COLLATE 照合順序;

DB作成時にwarningが出てしまったら

SHOW WARNINGS;コマンドを入力することで詳細を表示できます。
コードなどを元にググって対処方法を見つけましょう。

# 
mysql> CREATE DATABASE IF NOT EXISTS my_sample_list;
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> SHOW WARNINGS;
+-------+------+---------------------------------------------------------+
| Level | Code | Message                                                 |
+-------+------+---------------------------------------------------------+
| Note  | 1007 | Can't create database 'my_sample_list'; database exists |
+-------+------+---------------------------------------------------------+
1 row in set (0.00 sec)

Can't create database 'my_sample_list'; database exists
(my_sample_listというデータベースが既に存在するのでデータベースを作成することができませんでした。)

同名でデータベース作成しようとしたときに出力するエラー文と同じものですが、IF NOT EXISTSと指定してDB作成コマンドを打ったため警告(warning)として出力されています。
DB名を別にして対処しましょう。

コード引用:データベースの作成

学習のまとめ

だいたいEnvaderで触ってみてわからないところは検索して幾つか参考になるページを見つけて理解を深めるというやり方をやっています。
inputとOutputを並行してできるので自分の中ではかなり学習効果が高いと思っています。

参考にした記事

皆さんの知見のおかげでなんとか理解ができています。ありがとうございます。

これまでの学習

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?