Help us understand the problem. What is going on with this article?

MySQLの基本的なコマンドについて(No.1)

備忘録

内容は以下の通り

  • バージョン確認
  • データベース(以下DB)作成 ・削除
  • テーブル作成・削除

バージョン確認

サーバサイド言語でMySQLを利用する場合、バージョンを指定することがよくある
そして、どのバージョンをインストールしたかをよく忘れるので、覚えておくと便利なコマンド

ログイン前と後でコマンドが変わる(どちらも結果はほとんど同じ)

ログイン前

$ mysql --version

ログイン後

mysql> select version();

MySQL(他のDBでもそうだが)ではDBを作成し、その中にテーブルを作成して、データを管理する。
アプリケーションは複数のテーブルを用い、データを管理し、その複数のテーブルをまとめて管理する単位をDBと呼ぶ。

DB作成

まずはDBにログインする

$ mysql -u root -p

上記はrootユーザでログインするコマンド
パスワードを求められるので入力(rootユーザはデフォルトで作成されている)

DBを作成する

mysql> CREATE DATABASE DB名 default character set utf8;

日本語のデータを扱う場合は
default character set utf8
を必ず記述する(ここは日本なので思考停止でDB作成時に入力する)
全角と半角はどちらでも構わないが末尾には;を必ず入力する(SQLの終端記号)

DB一覧を表示

mysql> show databases;

複数のアプリを作るとDBも複数作っていくので、このコマンドで一覧を表示して確認する。
また、DBを作成した後に、正しく作成されているかの確認の意味でも一覧表示してみる。(一覧表示なので複数形になっている点に注意)

DBの削除
間違ってDBを作成してしまった場合の対処方法

mysql> DROP DATABASE DB名;

※確認無しに即削除になるので、テーブルを作成したデータベースを削除する際は最新の注意を払うこと。

テーブルの作成

テーブルはDBの中に作成するので、以下の手順で作成する。

  1. DBの選択
  2. テーブルの作成
  3. テーブル一覧の出力(確認のため)
  4. テーブルの定義情報を出力

データベースの選択

mysql> USE DB名

このコマンドでDBを選択して、次のコマンドでこのDBの中にテーブルを作成する。

テーブル作成

mysql> CREATE TABLE DB名.テーブル名(
        カラム名1 データ型 制約,
        カラム名2 データ型 制約,
       );

DB名と制約は省略可です。
ファイルにSQLコードを記述して、まとめてSQLを実行する場合、DB名を選択できないので、DB名を省略するとエラーになってしまう。
故に、基本的にDB名は記述する癖をつけておいたほうが間違いがない。

例えば、次のようなテーブルを仮定して実行してみる

テーブル名:user

id name age created_at
整数型 文字型 整数型 タイムスタンプ
主キー null禁止 null禁止 null禁止
自動連番 最大100文字
mysql> CREATE TABLE DB名.user(
          id int auto_increment not null primary key,  
          name varchar(100) not null,
          age int not null,
          created_at timestamp not null 
          current_timestamp
       );

主キーとなるidはレコード追加時に自動で採番すると便利なので、オートインクリメントにしておく
タイムスタンプとはレコード追加日時を記録するためのデータ型

テーブル一覧の出力
作成したテーブルを一覧として出力するコマンド

mysql> show tables;

DB一覧の出力と同様に複数形になっている点に注意

テーブルの定義情報を出力
カラム名やデータ型、制約を確認することはよくあるため、覚えておくと便利

mysql> describe テーブル名

ディスクリブが説明という意味なので覚えやすい

テーブルの削除
テーブル定義を間違えた場合、作り直すがその際に実行するコマンド

mysql> DROP DB名.テーブル名

おしまい

hisaya_OBS
32歳まで教育業界で教員をしておりました。(2020年) 心機一転IT業界に飛び込み、周りの若い優秀な人材にまずは追いつくため、アウトプット及び備忘録のため、記事を投稿しようと思っています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away