SQL文:SQLステートメント
SQLステートメント、SQLクエリーの種類と書き方など
(覚え書き)Access mdbファイルのSQL操作が目的。
(出来るだけ標準SQLに即したいと思います)
▲上へ
RDBMS SQL Statement
SQL文は以下のように大別される。目にすることが多いのでさらっと知ってた方が良いようです。- データ定義言語:DDL(Data Definition Language)
- オブジェクト(テーブル・フィールド・インデックス)の作成・変更・削除など。
(定義)CREATE DATABASE,CREATE TABLE,CREATE INDEX (変更)ALTER TABLE (削除)DROP DATABASE,DROP TABLE,DROP INDEX・・・など - データ操作言語:DML(Data Manipulation Language)
- レコードの挿入、検索(抽出)、更新、削除…などの操作。
SELECT,INSERT,DELETE,UPDATE・・・など - データ制御言語:DCL(Data Control Language)
- SQLステートメントによる検索(抽出)、追加、更新、削除の実行。
▲上へ
データベースの標準化
名称の標準化
Access mdb における標準化の覚え書きテーブル名.フィールド名と兎角なりがちな名称は出来るだけ解りやすく統一するのが良い。
例:
テーブル…T_*** ***_M
クエリー…Q_***
フォーム…F_***
レポート…R_***
マクロ…M_***
マクログループ…MG_***
プロシージャ…A_***
など
▲上へ
SQL::そのた覚え書き
演算・制御・関数・その他
演算
select [Field1/値] + [Field2/値] as [NewField_Name]Null値の扱い::指定フィールドにNULLが混在する場合"0"に置換えて回避
IIF([Field] is NULL, 0, [Field])
関数・または処理方法
文字列処理mid([Field_Name/"文字列"],[値],[値]) len([Field_Name/"文字列"])文字列の連結方法
[Field_Name1] & "文字列" & [Field_Name2]日付処理
Day(),Month(),Weekday(),Year(),Date(),Now(),Time(),Hour(),Minute(),Second(), cdate("****/**/**"),年齢:DateDiff("yyyy",[生年月日],Day())DataDiff関数の書式
yyyy,q(四半期),m,y,d,w,ww,h,n,s計算(演算フィールド)
例 金額:[単価]*[数量],1人あたり:[数量]¥[人数],つり銭:[受取金額]Mod[販売価格],べき乗:2^2 … とか …フィールドにNull値が含まれる計算
合計:Nz([Field1])+Nz(Field2)集計関数
Sum(),Avg(),Count(),Min(),Max(),StDev(),Var()算術演算子
*,-,*,/,|(商),Mod(あまり),^(べき乗)比較
比較演算子:=,<>,>,<,>=,<=, Between…And演算子(範囲指定), Like演算子(あいまい条件指定)ワイルドカード
1文字:?,複数文字:*,1数字:#, 指定した1文字を含む(文字リスト指定):[abcdef…] [a-z]など, 指定した1文字を含まない(文字リスト指定):[!abcdef…] [!1-9]※Accessの場合に適用。"*"が"%"、"!"が"_"の処理系もあります。
SWITCH式
select [Field1],[Field1],…, switch ( [Field1]= [値] , [代入値] , [Field1]<>[値] , [代入値] ) as [NewField_Name] from [Table_Name] ; ※カンマの位置、数に注意!SWITCHを利用して1フィールドを作成しています。
▲上へ
データベース
データベースの種類
名称 | システム | SQLその他特徴 | 規模 | プラットフォーム | Free? |
Microsoft Access (mdb/Jet) | RDBMS | 小-中 | Windows | △ | |
Microsoft SQL Server | RDBMS | T-SQL | 小-大 | Windows | ○ |
Oracle Database | RDBMS | PL/SQL ストアドプロシージャ | 中-大 | Windows、Linux、UNIX | × |
SQLite | DBMS | SQL標準 | 小 | Linux,Windows | ◎ |
MySQL | RDBMS | 小-大 | UNIX系 (Solaris,FreeBSD,Linux,…), Windows,MacOSX… | ○ | |
postgreSQL | RDBMS | SQL92 | 小-大 | Unix系,Linux, Windows,OS/2… | ◎ |
※MS Accessは有償ですが、データベースエンジンJetは無償で配布されている。
※MS SQL Serberは、無償版〜大規模(有償)まである。
※Oracleが無償で…というのは、聞いた事がない…。
※MySQLは、利用形態・規模などにより有償ライセンスとなるらしい。(個人レベルでは原則フリーと思います)
▲上へ
クエリー
クエリー用語の種類
選択クエリー | |
選択クエリー | 単一・複数テーブルの特定フィールド表示、及び条件に一致するレコードの抽出・並べ替え |
重複クエリー | 重複レコードのチェック |
不一致クエリー | 複数テーブルを比較、一致のないレコード抽出:販売データから売上げない商品テーブルのレコード抽出など |
パラメータクエリー | 抽出条件をダイアログを表示して指定する(選択クエリー拡張) ※注:抽出条件パラメータ入力指定が可能、但しSELECT INTO句 [保存先テーブル名]; 等といった使用は出来ない。 |
集計用のクエリー | |
クロス集計クエリー | レコード、フィールド単位で合計、カウント、平均など計算した集計結果を表示する。 |
アクションクエリー: 実行結果をテーブルやレコードへ反映させる。テーブル、レコードへの追加、更新、削除する場合などに利用。 | |
テーブル作成クエリー | 単一・複数テーブルを参照し、新規に別名のテーブルを作成する。 |
更新クエリー | フィールドの値を更新する。更新レコードを(抽出条件)指定することができる。 |
追加クエリー | 既存のテーブルへレコードを追加します。別テーブルを入力ソースとすることができる。 |
削除クエリー | 既存テーブルの一部・全部のレコードを削除します。削除レコードを(抽出条件)指定できます。 |
SQLクエリー: SQLステートメントを記述して利用する方法です。 | |
ユニオンクエリー | 複数テーブルを結合した結果をレコードセットとして表示。元データ(テーブル)の更新、追加なしに目的に即したデータテーブルを取得。 |
パススルークエリー? | 他のデータベース(SQL Serverなど)へ接続しクライアントとしてSQL操作が可能。 |
データ定義クエリー | テーブル・インデックス・フィールドなどのオブジェクトを定義。Accessではデザインビューやウィザードなどの提供あり。 |
サブクエリー? | (SQLクエリー) |
▲上へ
その他用語
- レコードセット:クエリーにより表示されたレコードの集まり
- ダイナセット:表示結果(データシート上のレコードセット)から直接更新・追加・削除できる
- スナップショット:表示されたレコードセットが表示専用である(更新・追加・削除が出来ない)
- 集計を表示したクエリー、クロス集計クエリー、ユニオンクエリーなど
- 結合の種類
- 内部結合:結合フィールドの値が一致するレコードを抽出
- 左外部結合:左側レコード全部と右側の一致するレコードを抽出
- 右外部結合:右側レコード全部と左側の一致するレコードを抽出
- 自己結合:同一テーブル内の別フィールドを参照する
▲上へ
データベース・SQL文・SQLクエリー(query)関連リンク
wiki内関連ページ
- SQL文:SQLステートメント
- SQLステートメント
- SQLクエリー
- SQL文:ユニオンクエリー
- SQL文:パススルークエリー?
- SQL文:データ定義クエリー
- SQL文:サブクエリー?
- VB2005リファレンス(覚え書き)
外部リンク
現在なし
▲上へ
2007年09月23日(日) 10:27:58 Modified by cafeboy1