###MySQLについて
リレーショナルデータベースの1つで、構造としては1つのアプリケーションに対して1つのデータベースがあり、1つのデータベースの中に複数のテーブルがある。
特徴としては
・テーブルはカラム(縦)とレコード(横)で構成される。
・カラムに保存するデータの制約を設定できる。
・データの保存や取得にはSQLという言語を用いる。
###データベースの初期設定
文字化け対策
cat /etc/mysql/mysql.conf.d/mysqld.cnf | sed -e '/utf8/d' | sed -e '/sql_mode/d' | sed -e '$acharacter-set-server=utf8\nsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' | sudo tee /etc/mysql/mysql.conf.d/mysqld.cnf
文字化け対策を行った後はサーバーを再起動後ログインして実行
mysql> show variables like "chara%"; (実行)
###CRAD
データベースを扱う基本操作のSQL
・Create 作成、保存 (INSERT)
・Read 取得 (SELECT)
・Update 更新 (UPDATE)
・Delete 削除 (DELETE)
データを定義するSQL
CREATE 新しいデータベース、テーブルの作成
DROP 既存のデータベースやテーブルの削除
###データベースサーバの起動と停止と接続
sudo service mysql start (起動)
sudo service mysql starts (起動状態確認)
sudo service mysql stop (停止)
sudo service mysql restart (再起動)
sudo mysql -u (ユーザー名) (ログイン、接続)
mysql> exit (切断)
source [フォルダとファイル名] (ファイルの実行)
###データベースの作成
ログインする。
CREATE DATABASE データベース名; (データベース作成)
show databases; (データベースの一覧を確認)
DROP DATABASE データベース名; (データベースの削除)
USE データベース名; (操作するデータベース選択)
###テーブルの作成
・データ型
INT(整数)
DOUBLE(小数)
VARCHAR(可変長の文字列)
TEXT(文章用の長い文字列)
TIMESTAMP(日付時刻型)
以下は例です。
CREATE TABLE データベース名.テーブル名 (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(100),
price INT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
###テーブル一覧と設計内容の確認
SHOW tables; (テーブル一覧)
DESCRIBE テーブル名; (設計内容の確認)
DROP TABLE データベース名.テーブル名; (テーブルの削除)
###データの作成、保存と取得と更新と削除
INSERT INTO テーブル名 (カラム1、カラム2) VALUES (値1、値2); (作成)
SELECT カラム名 FROM テーブル名; (データの取得。*を使うとすべてのカラム。)
UPDATE テーブル名 SET カラム名1 = 値1, カラム名2 = 値2; (更新)
DELETE FROM テーブル名; (削除)
###条件で絞込み
WHERE カラム名 = 値;
###表示順の並び替え
テーブル内部の順番は変わらず、表示だけ変わる。
データ量が多いと負荷がかかる。
SELECT カラム名 FROM テーブル名 OREDER BY カラム名; (データを昇順に並び替え)
SELECT カラム名 FROM テーブル名 OREDER BY カラム名 DESC; (データを降順に並び替え)
###集計関数での分析
COUNT関数
WHEREを用いて条件に合ったものだけカウントもできる。
SERECT COUNT(*) FROM テーブル名; (レコードの数)
SUN関数
合計を表示。
SELECT SUN (カラム名) FROM テーブル名; (合計値を表示)
AVG関数
平均を表示。
SELECT AVG (カラム名) FROM テーブル名; (平均値を表示)