ステップアップ備忘録

学習用備忘録

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の状態から作るとなるとどこで引っかかるのかをしっかりつかみたい。