SQL 教育用資料
関数と演算子の一部
標準SQLにないモノなどもあるので紹介程度に。 主に、INSERT時のVALUE句内で使ったり、SELECT の結果を与えて変換するなどして使うことがあります。
SQLを計算機として使う
テーブルを指定しなければ動かないというものではない。ということの説明と、計算機として使う方法を見ていきましょう。
sqlite> Select 1 + 1;
2
sqlite>
と言うように、From句を指定しなくても何とかなります。 今回はこの方法を使いつつ、関数や演算子の使い方を説明してきます。
以降はSQLのみで結果は見てのお楽しみに。
Select 1 + 1;
文字列関数
比較的良く使う。プログラム側で行うより効率が良い場合もあるので、使い方を憶えておくとよい。
文字列結合
SELECT 'hoge' || 'fuga';
部分文字列の取り出し
SELECT substr('1234567890123456789', 1, 11);
文字の置換
SELECT replace('1234567890123456789', '1', '+');
文字数
SELECT length('1234567890123456789');
大文字小文字変換
SELECT upper('apple');
SELECT lower('GOOGLE');
日付/時刻関数と演算子
日付、時間が絡む事は多いので、知っていると便利。良く使う。 日付計算は言語によってはサポートしていない場合があるので、使い方を憶えておくか、こういう手法があることを知っているとよい。
時間の計算方法から見ていきます。
SELECT date('now');
SELECT date('now', '+1 month');
SELECT date('now', '+7 days');
足したり引いたり、間隔指定の部分には、year、month、days、hour、timeとそれぞれあるので、必要に応じて使い分ける事。
集約関数
簡単な使い方だけ説明します。 とりあえず、count(件数)、max(最大)、min(最小)、avg(平均)を例を見ながら。 sum(合計)もあるのですが、ちょうど良いテーブルが無いのでお預けと。
レコード件数取得
SELECT count(materielcode) FROM materielmaster;
レコードの特定カラム内で最大値を取得する
SELECT max(employeecode) FROM employeemaster;
レコードの特定カラム内で最小値を取得する
SELECT min(employeecode) FROM employeemaster;
平均値を求める
SELECT avg(materieldivcode) FROM materieldivmaster;
一番最後の例はあまりにも意味が無いのですが、検算しやすいという理由だけです。
演習
問題1
employeemaster を下記のように表示してください。
sqlite> 'SQL QUERY'
employeecode | name
--------------+-------------
1 | 演習 一号
2 | 演習 二号
3 | 演習 三号
4 | 演習 四号
11 | 宮地 勤
12 | 鈴木 ヒカル
13 | 佐藤 真一
14 | 岡部 幸平
(中略)
119 | 佐藤 里奈
120 | 鈴木 惇
問題2
materielmaster を下記のように表示してください。registdateの日付は、登録されているデータを表示してください。
sqlite> 'SQL QUERY'
materielcode | materielmaker | modelno | productno | registdate
--------------+---------------+----------+-----------+------------
1 | DoLL | INSPIRON | D0001 | 2008-06-11
2 | DoLL | INSPIRON | D0002 | 2008-06-11
3 | DoLL | INSPIRON | D0003 | 2008-06-11
4 | DoLL | INSPIRON | D0004 | 2008-06-11
5 | DoLL | INSPIRON | D0005 | 2008-06-11
6 | DoLL | VOSTRO | DD001 | 2008-06-11
7 | DoLL | VOSTRO | DD002 | 2008-06-11
8 | DoLL | VOSTRO | DD003 | 2008-06-11
9 | DoLL | VOSTRO | DD004 | 2008-06-11
10 | DoLL | VOSTRO | DD005 | 2008-06-11
11 | oIZO | S2100 | E0001 | 2008-06-11
12 | oIZO | S2100 | E0002 | 2008-06-11
13 | oIZO | S2100 | E0003 | 2008-06-11
14 | oIZO | S2100 | E0004 | 2008-06-11
15 | oIZO | S2100 | E0005 | 2008-06-11
sqlite>