MySQLについて ④
dotinstallのMySQL入門で学んだことの備忘録 続き
数値の演算
update users set score =score*1.2 where id % 2 = 0;
→ usersテーブルのスコアについてidが二で割り切れるものについてはスコアを1.2倍する
・組み込み関数の使用
round → 四捨五入
floor → 切り捨て
ceil → 繰り上げ
rand → 乱数の生成
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
文字列の演算
select length → 文字列の長さを返す
select substr → 文字列の一部を取り出す(substr = substring, 従属文字列)
select substr('hello', 2, 3) → 二文字目以降の三文字を取り出しや
select substr('hello', 2) → 二文字目以降を取り出しもできる
select upper(文字列) → 指定した文字を大文字にする
select lower(文字列) → 指定した文字を小文字にする
select concat(文字列, 文字列, 文字列…) → 指定した文字を連結させる
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
enumを使用する
複数の文字列から1つだけを格納する
rank enum (文字列1, 文字列2, 文字列3)
この( )内のどれかの値のみをrankの値として格納できるようになる
→ enum型に指定した以外の値の挿入は値が反映されない(エラーになる)
(これはMySQLのSTRICTのモード(厳密性に関わるモード)に関係する(?)
enum( )の中に指定した値には自動的に数値が割り当てられるので、それで指定してもOK。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
setを使用する
enum → 複数から1つを選ぶ
set → 複数の中でデータを2つ以上選択できる
カラム名 set (文字列1, 文字列2, 文字列3)
→カラムから複数選ぶ
もし入力時に文字列1と文字列2の順番を間違えても、create table内に記述した内容通りの順番に自動ソートされる
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
if, caseを使う
select from 内に入れる
select カラム名 if(条件式) as カラムに別名を付ける 条件文 from テーブル名
select case when ~ then ~
whenの後ろに条件文、thenの後ろに処理を書く
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
抽出結果をテーブルにする
元あるcase文をテーブルにする
create table 新しいテーブル名 as → 新しいテーブルの定義
select
case文の中身
end as 処理内容に別名を付ける
from 元のテーブル名;
select * from 新しいテーブル名 → 新しいテーブル名でテーブルができているか表示
丸ごとコピーを作る
create table 新しいテーブル名 select * from 元のテーブル名
select * from 新しいテーブル名; → 新しいテーブル名でテーブルができているか表示
テーブルの構造のみコピー
create table 新しいテーブル名 like 元のテーブル名
desc 新しいテーブル名 -→ テーブル構造の確認
select
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
データの集計処理
select ~ fromの中に
count → 個数を数える
sum → 合計値を計算
max → 最大値を表示
min → 最小値を表示
avg → 平均値を表示
destinct → ユニークな値のみ取り込む
count(distinct 値) → 重複しない値の数を数える
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
group by ~ having
select sum(選びたいカラム名) 処理内容 from テーブル名 group by 処理内容
→ カラム名について指定したテーブルから持ってきた処理内容の通りに処理した後に合計値を計算して順番に並べる
group by 並べたい項目 having sum(カラム名) > 10.0;
havingはwhere句と同じような意味を持つ
この場合並べたい項目をhaving以降の条件で並べる
whereを用いる際は where ~ group by ~となる
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
○まとめ
今回は比較的使い方もわかりやすく迷うところは今のところないけれど、
自分で実際に0の状態から作るとなるとどこで引っかかるのかをしっかりつかみたい。