こんにちは。くまごろーです。
サーブレットアプリの作成も区切りがつき、今はSpringbootとSQLの勉強をしてるのですが、
SQLの本を読んでると「こんなに便利なコードがあったのか(+_+)」と驚いてばかりです。
今までJavaの方でやってた処理、いくつかはSQL文でできてしまうんですね。
まだしっかり勉強したわけじゃないんでなんとも言えないんですけど、SQLでやってしまった方がシンプルでわかりやすいかもなあという印象を受けました。
まだ入門書やってる途中なんですが、「ポートフォリオ作る時に使えそうだなあ」と思ったコードもいくつかありました。
今日は便利だな、使えるなと思ったコードを挙げていこうと思います。(というか、もはや自分用メモです(-_-))
1 特定の値について、範囲を指定してデータを取り出したい。
「between」演算子を使用する。
select 列名 from テーブル名 where 列名 between 値1 and 値2;
例えば、「2020年1月の記録を取り出したい」場合はこのようになる。
select * from 家計簿 where 日付 between '2020-01-01' and '2020-01-31';
2 取り出したデータを並べ替えたい。
この場合は、「order by」句を使用する。
select 列名 from テーブル名 order by 列名 並び順 //並び順は、asc(昇順)またはdesc(降順)を選択
「ツイート一覧」を投稿日時が新しい順に並べ変えたい場合。
select * from ツイート一覧 order by 投稿日時 desc;
条件が複数ある場合はこんな感じ。
select * from 家計簿 order by 金額 desc, 日付 asc;
3 該当するデータの内、先頭から〇件だけを取得したい。
「offset-fetch」句を使用する。
select 列名 from テーブル名 offset 先頭から除外する行数 rows fetch next 取得したい行数 rows only;
「支出額トップ3」を取得するならこのようなコードに。
select 支出 from 家計簿 offset 0 rows fetch next 5 rows only;
で、「金額の高い順」に並べた状態で取得するには、先ほどの「order by」句を使う。
select 支出 from 家計簿 order by 出金額 desc offset 0 rows fetch next 5 rows only;
4 特定の桁で四捨五入したい。
ここでは「round」関数を使用する。(なんかExcelでも見たことある・・・)
select 列名, round(数値を表す列, 有効とする桁数) from テーブル名
「支出の額をすべて100円単位にしたい」場合はこんな感じになる。
select 支出, round(支出, -2) from 家計簿
5 現在の日付(時刻)を入力したい。
・ 現在の日付を取得するには・・・「current_date」関数
・ 現在の時刻を取得するには・・・「current_time」関数
を使用する。
insert into ツイート一覧(date, name, tweet) values(current_date, 'くまごろー', 'こんにちは');
まだ参考書の半分も終わらせてないけど、実際に使ってみたいコードがどんどん増えてます。
本当、早めにSQLを勉強しておけばよかった・・・
ちゃんとSQLの勉強をすれば、今後のアプリ制作が中々効率的になるんじゃないかと期待を膨らませています(=゚ω゚)ノ