SQLとは
SQLは国際標準化機関であるISOから標準化されている。
MySQLもSQLへの準拠度を高めつつありますが独特の方言を持つ部分がある。
思ったこと
その違いをわかるようになる。
データベースオブジェクトの生成と破棄
・データベースの作成
・テーブルの作成
・インデックスの作成?
・ストアドルーチンの作成???
思ったこと
ストアドルーチンの作成はちょっと分からないがまあ次に進めよう。
データベースの作成CREATE DATABASE
・データベースの作成
・データベースの削除
・データベースのデフォルト指定設定を変更
これが基本動作です。
データベースの作成
データベース作成するにはCREATE DATABASE
を使う。
データベースを作成する際には必ず必要
となる。
作成する場合は文字コードや照合順序、暗号化の情報などを指定できます。
MySQLの場合データベースのことをスキーマ
という。
なのでコマンドのCREATE DATABASE
,CREATE SCHEMA
は同じ意味になる。
またデータベース名に同じものがあってはならないために既存の場合はエラーが発生
する
IF NOT EXISTS
をつけるとデータベース名は既存の場合は何もせずに終了するようになる。
mysql> show databases;
+---------------------------+
| Database |
+---------------------------+
| garden_development |
| garden_review_development |
| garden_review_test |
| garden_test |
| information_schema |
| mysql |
| performance_schema |
| sys |
+---------------------------+
8 rows in set (0.01 sec)
mysql> CREATE DATABASE train_development
-> ;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+---------------------------+
| Database |
+---------------------------+
| garden_development |
| garden_review_development |
| garden_review_test |
| garden_test |
| information_schema |
| mysql |
| performance_schema |
| sys |
| train_development |
+---------------------------+
9 rows in set (0.00 sec)
train_development
が作成された。成功!
同じデータベース名で作成してみると...
mysql> CREATE DATABASE train_development;
ERROR 1007 (HY000): Can't create database 'train_development'; database exists
既に存在していることがメッセージとして表示された。
mysql> CREATE DATABASE IF NOT EXISTS train_development;
Query OK, 1 row affected, 1 warning (0.00 sec)
多分これがエラーメッセージが表示されず終了
mysql> show databases;
+---------------------------+
| Database |
+---------------------------+
| garden_development |
| garden_review_development |
| garden_review_test |
| garden_test |
| information_schema |
| mysql |
| performance_schema |
| sys |
| train_development |
+---------------------------+
9 rows in set (0.00 sec)
データベースの削除
DROP DATABASE
で削除できる。
mysql> show databases;
+---------------------------+
| Database |
+---------------------------+
| garden_development |
| garden_review_development |
| garden_review_test |
| garden_test |
| information_schema |
| mysql |
| performance_schema |
| sys |
| train_development |
+---------------------------+
9 rows in set (0.00 sec)
mysql> DROP DATABASE train_development
-> ;
Query OK, 0 rows affected (0.01 sec)
mysql> show databases;
+---------------------------+
| Database |
+---------------------------+
| garden_development |
| garden_review_development |
| garden_review_test |
| garden_test |
| information_schema |
| mysql |
| performance_schema |
| sys |
+---------------------------+
8 rows in set (0.00 sec)
確かに削除されている。成功!
mysql> DROP DATABASE train_development;
ERROR 1008 (HY000): Can't drop database 'train_development'; database doesn't exist
同名の削除はエラーを起こす。
mysql> DROP DATABASE IF EXISTS train_development;
Query OK, 0 rows affected, 1 warning (0.00 sec)
これもIF NOT EXISTS
を使うとエラーメッセージが表示されない。
データベースの既存データベースのデフォルト指定内容を変更する
ALTER DATABASE
を使い変更する。
今はちょっと難しそう
変更内容は
文字コード
照合順序
暗号化の情報
を変更できる。
もしかしたらこれ以外も変更できるかもしれない(今はここまで)