データベーススペシャリスト(データベース言語SQL)
今日はSQLです。室内なのにすごく寒いです。氷点下8度やもんな・・・。
寒いほうが頭が回るはずですが、手がかじかんで寒い。
データベーススペシャリストのSQLはSQL92がベースらしいです。
1:データモデルとSQL用語の比較
2:SELECT文
・すべてのデータの選択
SELECT * FROM 表名
・射影(表中の特定の列の検索)
SELECT 列名1,列名2,...列名n FROM 表名
・選択(表中の特定の行の検索)
SELECT * FROM 表名 WHERE 検索条件
・選択と射影(表中の一部分の検索)
SELECT 列名1,列名2,...列名n
FROM 表名
WHERE 検索条件
・検索結果からの冗長行排除
SELECT DISTINCT 列名1,列名2,...列名n FROM 表名
3:検索条件で指定する述語
・ブール演算子
優先順位「( )>NOT>AND>OR」
・比較述語、BETWEEN述語、IN述語
A 比較演算子 B
BETWEEN A AND B
IN (A,B....)
・LIKE述語
LIKE パターン文字列
パターン文字列「%」は任意の長さの文字列
「_」は長さ1の文字列
・NULL述語
列 IS NULL
・副問合わせ
SELECT 列名1,列名2,...列名n
FROM 表名
WHERE 条件=
(SELECT 列名1,列名2,...列名n FROM表名)
条件部で別表への問い合わせをしたりするときに使う。
複数行の結果を返す副問合わせはエラーとなる。
・限定比較述語
ANY、SOME:いずれかの行を満たすかどうか
ALL:すべての行を満たすかどうか
・EXISTS述語
EXISTS 副問合せ
単純に副問合わせの条件を満たすかどうかということ。
4:結合検索
・直積演算
SELECT * FROM 表1,表2
2つの表のすべての組み合わせを表示・・・。
・結合演算
SELECT * FROM 表1,表2
WHERE
表1.列名1=表2.列1
2つの表を1つのキーで結びつけ
・自己結合
SELECT *
FROM 表1 AS 相関名1,表1 AS 相関名2
WHERE 相関名1.列名1=相関名2.列名1
同じ表を結合させる。
・外部結合
+左外部結合(表1を全部出す)
表1 LEFT OUTER JOIN 表2 ON 検索条件
+右外部結合(表2を全部出す)
表1 RIGHT OUTER JOIN 表2 ON 検索条件
+内結合(表1と表2の一致分を全部出す)
表1 INNER JOIN 表2 ON 検索条件
・自然結合
同じ項目名がある場合に勝手に1つにまとめてくれる。
5:集合関数とグループ化
・集合関数の種類
・グループ化
GROUP BY 列名
・グループの検索条件
HAVING 検索条件
6:集合演算
・和集合演算
問合わせ式 UNION 問合せ式
必ず同じ列構成である必要がある。
7:順序付け
・検索行の順序付け
ORDER BY 列名
ASCは昇順、DESCは降順で列名の後で指定可
8:表中のデータ更新
・行の挿入
INSERT INTO 表名(列1,列2,...列n)
VALUES(値1,値2...値n)
・行の更新
UPDATE 表名
SET 列名=値
WHERE 検索条件
検索条件の指定がないと表内データすべてを更新
・行の削除
DELETE FROM 表名
WHERE 検索条件
検索条件の指定がないと表内すべてのデータを削除
9:カーソルを用いたデータ操作
・カーソル宣言
DECLARE カーソル名 CURSOR FOR
問合せ式
・OPEN文
OPEN カーソル名
・FETCH文
FETCH カーソル名 INTO 相手指定
・CLOSE文
CLOSE カーソル名
10:動的SQL
PREPAREで準備してEXECUTEでSQLを実行
まずSQLを準備してからEXECUTEで実行というパターン
ACCESS VBAでSQLを実行するときのEXECUTEというイメージ
なんとかSQLまとめ完了
ある程度の数を読みこなさないとダメやな。
集合とかよりSQLを読むほうが概念は理解しやすい。
昨日の範囲とつながりますね。
◆SQL一覧
http://refer.it-manual.com/sql.html
http://jibun.atmarkit.co.jp/lskill01/rensai/bronzesql01/bronzesql01.html
http://sql.1keydata.com/jp/sql-select.php
http://itpro.nikkeibp.co.jp/article/lecture/20061211/256500/
寒いほうが頭が回るはずですが、手がかじかんで寒い。
データベーススペシャリストのSQLはSQL92がベースらしいです。
1:データモデルとSQL用語の比較
2:SELECT文
・すべてのデータの選択
SELECT * FROM 表名
・射影(表中の特定の列の検索)
SELECT 列名1,列名2,...列名n FROM 表名
・選択(表中の特定の行の検索)
SELECT * FROM 表名 WHERE 検索条件
・選択と射影(表中の一部分の検索)
SELECT 列名1,列名2,...列名n
FROM 表名
WHERE 検索条件
・検索結果からの冗長行排除
SELECT DISTINCT 列名1,列名2,...列名n FROM 表名
3:検索条件で指定する述語
・ブール演算子
優先順位「( )>NOT>AND>OR」
・比較述語、BETWEEN述語、IN述語
A 比較演算子 B
BETWEEN A AND B
IN (A,B....)
・LIKE述語
LIKE パターン文字列
パターン文字列「%」は任意の長さの文字列
「_」は長さ1の文字列
・NULL述語
列 IS NULL
・副問合わせ
SELECT 列名1,列名2,...列名n
FROM 表名
WHERE 条件=
(SELECT 列名1,列名2,...列名n FROM表名)
条件部で別表への問い合わせをしたりするときに使う。
複数行の結果を返す副問合わせはエラーとなる。
・限定比較述語
ANY、SOME:いずれかの行を満たすかどうか
ALL:すべての行を満たすかどうか
・EXISTS述語
EXISTS 副問合せ
単純に副問合わせの条件を満たすかどうかということ。
4:結合検索
・直積演算
SELECT * FROM 表1,表2
2つの表のすべての組み合わせを表示・・・。
・結合演算
SELECT * FROM 表1,表2
WHERE
表1.列名1=表2.列1
2つの表を1つのキーで結びつけ
・自己結合
SELECT *
FROM 表1 AS 相関名1,表1 AS 相関名2
WHERE 相関名1.列名1=相関名2.列名1
同じ表を結合させる。
・外部結合
+左外部結合(表1を全部出す)
表1 LEFT OUTER JOIN 表2 ON 検索条件
+右外部結合(表2を全部出す)
表1 RIGHT OUTER JOIN 表2 ON 検索条件
+内結合(表1と表2の一致分を全部出す)
表1 INNER JOIN 表2 ON 検索条件
・自然結合
同じ項目名がある場合に勝手に1つにまとめてくれる。
5:集合関数とグループ化
・集合関数の種類
・グループ化
GROUP BY 列名
・グループの検索条件
HAVING 検索条件
6:集合演算
・和集合演算
問合わせ式 UNION 問合せ式
必ず同じ列構成である必要がある。
7:順序付け
・検索行の順序付け
ORDER BY 列名
ASCは昇順、DESCは降順で列名の後で指定可
8:表中のデータ更新
・行の挿入
INSERT INTO 表名(列1,列2,...列n)
VALUES(値1,値2...値n)
・行の更新
UPDATE 表名
SET 列名=値
WHERE 検索条件
検索条件の指定がないと表内データすべてを更新
・行の削除
DELETE FROM 表名
WHERE 検索条件
検索条件の指定がないと表内すべてのデータを削除
9:カーソルを用いたデータ操作
・カーソル宣言
DECLARE カーソル名 CURSOR FOR
問合せ式
・OPEN文
OPEN カーソル名
・FETCH文
FETCH カーソル名 INTO 相手指定
・CLOSE文
CLOSE カーソル名
10:動的SQL
PREPAREで準備してEXECUTEでSQLを実行
まずSQLを準備してからEXECUTEで実行というパターン
ACCESS VBAでSQLを実行するときのEXECUTEというイメージ
なんとかSQLまとめ完了
ある程度の数を読みこなさないとダメやな。
集合とかよりSQLを読むほうが概念は理解しやすい。
昨日の範囲とつながりますね。
◆SQL一覧
http://refer.it-manual.com/sql.html
http://jibun.atmarkit.co.jp/lskill01/rensai/bronzesql01/bronzesql01.html
http://sql.1keydata.com/jp/sql-select.php
http://itpro.nikkeibp.co.jp/article/lecture/20061211/256500/
コメント