MySQL入門
MySQL
Webアプリケーション開発でよく使われるデータベースシステム
オープンソースのリレーショナルデータベースマネジメントシステムと呼ばれるものの1つ
無料で利用することができる
近年ではMySQLから派生したMariaDBも使われるようになってきている
データベース(DB)
- 検索や知蓄積が容易にできるよう整理された情報の集まり
- 全てのシステムがデータを取り扱っていて、データをを取り扱う手段としてほぼ全てのシステムが何かしらの、データベースを使用している
ECサイトを例に考えると
- ユーザー情報:山田太郎, yamada@example.com,090-0000-0000,東京都千代田区XXXX、。。。
- 商品情報:’はじめてのJavaScript入門’,3,800,。。。
- 売上情報:誰が、何を、いくらで、いくつかった、。。。
👉このようなデータを保存して扱うために、データベースを利用。
MySQLのサーバーの設定
Cloud9環境でMySQLを使えるようにする!
初期状態でもMySQLがダウンロードされているためバージョンを確認
mysql --version
👇
念の為MySQLサーバーが起動しているか確認
systemctl status mysql
active(running)と表示されていればOK
MySQLサーバーにログインして、データベースを操作するには
sudo mysql -u root
開発環境ということもあり、PWなしでログインできるようになっている
sudo = 管理者権限で実行
mysql = MySQLに関する操作を行う
-u = userを指定するオプション
root = ユーザー名(管理者ユーザーのことを指している)
👇
MySQLサーバーにログインできた
mysql>
と表示されている
ここでデータベースを操作する
👇
MySQLサーバーからログアウトするにはexitと入力
MySQLの環境設定
使用する文字コードを確認
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
latin1
latinアルファベットの文字コードが使われているところがある
これだと、日本語を使ったときに文字化けすることがある
日本語も使えるutf8に設定する
👇
MySQLの設定はmy.cnf
というファイルに記述されている
👇
my.cnf
のファイルの場所を調べるには
mysql --help | grep my.cnf
👇
MySQLの設定は複数の場所に記述できる
sudo vim /etc/mysql/my.cnf
MySQLの設定ファイルの編集には管理者権限が必要なので
コマンドの前にsudo
をつける
vim
はテキストエディタを使うときに使うコマンド
vim
に続いて編集したいファイルを指定する
vim についての資料
👇
設定ファイルが開かれたら
MySQLで使う文字コードをUTF8にする
下の方に移動してキーボードのIキーを押して
INSERTモードにする
[mysqld]
character-set-server=utf8
スペルミス注意!
👇
ファイルを保存してvimを終了するには
esc :wq
念の為確認
cat /etc/mysql/my.cnf
設定ができている
👇
設定を反映させるにはMySQLサーバーを再起動させる
sudo systemctl restart mysql
エラーなどが表示されなければOK
👇
設定ファイルに記述した内容が本当に反映されたか確認
MySQLサーバーにログイン
sudo mysql -u root
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
latin1だったところがutf8になった
exitでログアウト
以上でMySQLサーバーの設定が完了
公式ドキュメントについて
MySQLの公式ドキュメントが公開されているWebサイト
データベース関連の用語について
- データベース
- テーブル
- レコード(ロウ、列)
- フィールド(カラム、行)
- SQL
多くのケースで1アプリケーションに対して、
1つのデータベースを作成する
複数作ることもある
実際のデータはデータベースの中に
テーブルという入れ物を作って、そこにデータを格納していく
例えばユーザー情報を管理するusersテーブルや
商品情報を管理するproductsテーブルなど。
テーブルは、簡単にいうとエクセルの表のような形式でデータを管理する
テーブルはデータベースの中で複数作れる
テーブルにある行のことをレコード、行という
列に相当するところをフィールド、カラムという
先頭に記載しているid,name,email,ageの部分をフィールド名(カラム名、列名)という
MySQLではデータを管理しやすいように、レコードにIDを振る
1234といったユニークな管理番号
SQL
- データベース、テーブル、フィールドやレコードを扱う言語をSQLと呼ぶ
- SQLは何の略でもないとされる
- SQLの元となった、IBMが開発した言語のSEQUEL(Structured English Query Language)が由来とされる
例)
select*from users where age >= 20 order by age desc limit 3 offset 3;
SQL 補足
SQLではこの図のようにデータベースに対して
データを挿入、取得、更新、削除できる
データベースの操作
- データベースの一覧表示
- データベースの作成
- データベースの削除
- データベースの切り替え
MySQLのルートユーザーでMySQLにログイン
sudo mysql -u root
まず
データベースの一覧を表示
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
いくつか表示されるが、MySQLサーバー自身が
管理のために使用しているデータベース
データベースの作成
mysql> create database db01;
db01という名前のデータベースを作る
Query OKと出て、エラーが出なければ成功
db02,03も作り、一覧を表示
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db01 |
| db02 |
| db03 |
| mysql |
| performance_schema |
| sys |
+--------------------+
データベースの削除
mysql> drop database db03;
db03が消えた
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db01 |
| db02 |
| mysql |
| performance_schema |
| sys |
+--------------------+
操作対象のデータベースの切替
いま操作対象となっているデータベースは
mysql> select database();
+------------+
| database() |
+------------+
| NULL |
+------------+
で確認できる
NULLは何もないことを意味している
つまり、操作対象のデータベースが選択されていない状態
データベースdb01を操作対象にしてみる
mysql> use db01;
データベースdb01が操作対象になった
mysql> select database();
+------------+
| database() |
+------------+
| db01 |
+------------+
一度MySQLからログアウトexit
MySQLサーバーにログインするとき
使用するデータベースを指定する
sudo mysql -u root db01
操作対象としてdb01が表示されている
mysql> select database();
+------------+
| database() |
+------------+
| db01 |
+------------+
よく使う言葉
クエリ(query)
MySQLサーバーに対して発行するSQLのこと
MySQLのクエリは小文字でも大文字でも区別されない
最近は小文字で書くことのほうが多いらしい
眠すぎるから今日はここまで><
明日もラウンジ行って集中して頑張ろう
Discussion
義本的なMySqlのクエリは新入社員でも必須かもね