レコードの並び替え、件数の制限からデータの集計方法一覧、レコードの更新と削除まで

「select * from users order by score;」でスコアが小さい順に並べられる。大きい順に並べたい場合は「select * from users order by score desc;」でできる。数値だけでなく文字列にも使えるので例えば名前をアルファベットの逆順に並べたいなんていうときには「select * from users order by name desc;」とやればいい。
また、例えば上位の3人しか知りたくないなんていう場合(件数の制限)は「select * from users limit 3;」でオッケ。
オフセットといって開始位置を指定することも可能。開始位置は0から始まるつまり最小の行は0ということ。「select * from users limit 2, 2;」これで2行目から抽出できる。これらを組み合わせることによって例えば「select * from users order by score desc limit 3;」と打てば上位3名のハイスコアが引っ張ってこれる。
レコードの全件数を知りたいなんていう場合は「select count(*) from users;」と打つ。
チームにはどういう値が入っているのか重複なしで出す場合は「select distinct score from users;」と打つ。
平均値を取る場合は「select avg(score) from users;」avgをsumに変えれば合計を出せる。
「select team,avg(score) from users group by team;」なんか打つとチーム別で平均を出すことが可能。
「select rand();」で乱数を出してくれる。これを利用して「select * from users order by rand() limit 1;」ランダムに一人だけ抽選で選ぶなんてことも出来る。
「select email, length(email) from users;」を使うとフィールド上のemailレコードの文字数を調べてくれたりもする。
concatという文字列を連結させたい場合なんかには「select concat(name,'(',team,')') from users;」と打つと、名前の後にチームを括弧で囲って表示してくれる。「select concat(name,'(',team,')') as label from users;」とやると表示名をlabelにしてすっきりさせてあげられる。
チームの頭一文字だけでもいいなんていうときは「select name,substring(team,1,1) from users」を使う。
現在時刻を求めたいときは「select now();」と打つ。
登録月だけを表示しなさいなんていう時は「select name,month(created) from users;」
日付の差分を日数で求めたいとき、現在の日付と比べて何日経ったのかを調べたいときは「select name, datediff(now(), created) from users;」
詳細はホームページのリファンレスの関数と演算子というセクションに記載されているので参照。
レコードを更新したい場合は、
「update users set email = 'hsjkhsh@gmail.com' where id = 5;」update、テーブル名、set、フィールド名で5番目のユーザーのアドレスを更新することが出来る。「select * from users;」で確認可能。
レコードを削除したい場合例えばスコア3点いかの人を削除したいなんていう場合は、「delete from users where score <= 3.0;」
複数のテーブルを使ってレコードを抽出する場合「select users.name,posts.title from users,posts where users.id=posts.users_id;」といった具合に誰かどのポストを行ったのかを一挙に確認することができる。これを日付順で並べたい場合は「select users.name,posts.title,posts created from users,posts where users.id=posts.users_id order by posts.created desc;」