目次
メモ
set linesize 1000
set pagesize 10000
set pages 10000 line 600
データベースの種類
-
リレーショナルデータベース・・・データが2次元の表形式をとり、データ間の関連をポインタでなく、データを使って表現する\_( ゚ロ゚)ここ重要
-
階層型・・・ツリー上の構造をとり、ポインタによってデータが結合されている。データのアクセスには、親データから辿って行かなければならない。つまりデータのアクセスは、親データが入り口となる
-
ネットワーク型・・・ポインタを相互に組み込んで、網の目のような構造をとる。従属データは複数の親データを持つことができ、どのデータもアクセスの入り口となる事が出来る
ちょいメモ(Bronze SQL基礎I)
-
リテラル文字列は、一重引用符で囲む(ただし数値の場合は、囲む必要はない)
-
列別名の大文字小文字をくべつするときは一重引用符ではなく、二重引用符で囲みます。
-
「BETWEEN a AND b」は、「列 >= a AND 列 <= b」と同じ結果になり、上限と下限を含む。
-
「a NOT BETWEEN x AND y」は、「a < x OR a > y」
-
NOT LIKE条件では、NULL値のデータ検索は出来ない。
-
NVL ( expr1 , expr2 ) ・・・式 expr1 が NULL なら expr2 の値を戻す。Null Value Logic の略
-
グループ関数を使用した場合、SELECT句のグループ関数でない列はすべてGROUP BY句に指定する必要がある
-
GROUP BY 句 がない場合の AVG(集計関数)
一般的にはグループ単位の平均を求める。⇒ GROUP BY 句 を使用していない場合には選択による結果セット(条件によって選択されたレコード) を1つのグループとして全体の平均を1レコード戻す。
-
列別名はデフォルトでは大文字で表現されます。大文字/小文字を区別したり、スペースや特殊記号(#や$など)を使用したりする場合は、二重引用符(")で列別名の前後を囲む必要があります
-
LIKE演算子を使用してパターン検索を行う際に%や_をエスケープするために、ESCAPEオプションを使用して任意の文字をエスケープ文字として指定する。
SELECT ename FROM emp WHERE ename LIKE 'M\_%' ESCAPE '\';
-
日付の加算/減算
日付は数値の加算と減算のように 日付値に +1 することで 1日後、-1 することで 1日前のように加減算できる。
1秒後の求めるには 1/24/60/60 のように 1/86400 日を加算することで、1分後も同様に 1/24/60 を加算、1時間後も 1/24 を加算することで求めることができる。
日付を小数にして加減算する場合には理解しやすくするために datetime + 1/24/60/60 や datetime + 1/(24*60*60) のような表記をすることが多い。
select
to_date('2005/03/12 21:25:06','YYYY/MM/DD HH24:MI:SS') + 1/24
from dual
-
単一行関数のネストには制限がないが、グループ関数のネストは2つまでである。
-
MAX関数は、文字データに使用した場合、アルファベット順に並べたとき最後に来る値を返す。なお、NULL値は無視される。
-
coalesce関数 (コウアレス)・・・与えられた引数のうち、NULLでない最初の引数を返す。
-
CASE式はANSI SQLに準拠、DECODE関数はOracle独自
-
指定した文字を取り除くには「TRIM('H' from 'Hello World')」のように記述します。
TRIM(' ABC ')→ABC
TRIM('x' FROM 'xxABCxx')→ABC
TRIM(LEADING 'x' FROM 'xxABCxx')→ABCxx
TRIM(TRAILING 'x' FROM 'xxABCxx')→xxABC
-
日時書式要素の接尾辞…日時書式要素に付加できる接尾辞
TH 序数 DDTH 4TH
SP フルスペルで表した数 DDSP FOUR
SPTHまたはTHSP フルスペルで表した序数 DDSPTH FOURTH
-
データ型CHARは、固定長の文字データ。サイズの指定を省略すると1バイト
-
データ型VARCHAR2は、可変長の文字データ。サイズの指定を省略出来ない。サイズ指定必須。
-
データ型NUMBERは、精度と位取りのどちらも指定しない場合は、最大制度38の浮動小数となる。
-
列別名は、WHERE句では使用できない。SELECT句よりもWHERE句のほうが先に評価されるから
-
ORDER BY句では、列別名を使用することが出来るが、GROUP BY句では列別名を使用することはできない。
-
GROUP BY句、ORDER BY句を併用する場合
通常、order by句は、select句で指定していない列にも使用可能でるが、group by句と併用する場合は、group by句で指定したいづれかの列しかORDER BY句に指定できない。
-
HAVING句は、GROUP BY句の前後どちらに記述してもOK
-
句を指定する順番
SELECT句
FROM句
WHERE句
GROUP BY句(HAVING句)
HAVING句(GROUP BY句)
ORDER BY句
-
SELECT句で指定していない列をHAVING句で条件付けすることも可能
-
HAVING句は、GROUP BY句がなくても記述する事が可能
-
FROM句で表別名を指定した場合、SELECT句WHERE句ON9では、その別名を使う必要がある。
-
SELECT句、HAVING句、ORDER BY句には、GROUP BY句で使用した列またはグループ関数が使用できる。(WHERE句では使えない。)
-
USING句に指定した列は、そのSELECT文内のどこでも表名で修飾することができない。
-
自然結合の場合、結合列は、表名または別名で修飾してはいけない。(WHERE句でも列修飾は不要。FROM句でして指定した列と判断される)
-
クロス結合の場合、両方の表に存在する列は、表名または表別名にて修飾する必要がある。
-
SEQUENCEに、CYCLEが設定されている場合、最大値に達した後は、MINVALUEの値から始まる。START WITHの値は関係ない!!
-
制約とデフォルトの書式
制約は定義の方法により、列制約と表制約に分類されます。 列制約は列のデータ型と同様に列の定義の中で制約を指定する方法です。表制約は列の定義とは別の場所で、表に対して制約を行います。
この2つには次のような違いがあります。
複数の列を指定する制約は、表制約でないと定義できない。
NOT NULL制約は列制約でないと定義できない。
|
NOT NULL制約
|
列制約
|
列名 データ型 [CONSTRAINT 制約名] NOT NULL
|
|
一意キー制約
|
列制約
|
列名 データ型 [CONSTRAINT 制約名] UNIQUE
|
|
表制約
|
[CONSTRAINT 制約名] UNIQUE (列名 [, 列名]...)
|
|
主キー制約
|
列制約
|
列名 データ型 [CONSTRAINT 制約名] PRIMARY KEY
|
|
表制約
|
[CONSTRAINT 制約名] PRIMARY KEY (列名 [, 列名]...)
|
|
チェック制約
|
列制約
|
列名 データ型 [CONSTRAINT 制約名] CHECK (条件)
|
|
表制約
|
[CONSTRAINT 制約名] CHECK (条件)
|
|
参照整合性制約
|
列制約
|
列名 データ型 [CONSTRAINT 制約名] REFERENCES 親表名 (親キー列名)
|
|
表制約
|
[CONSTRAINT 制約名] FOREIGN KEY (外部キー列名 [, 外部キー列名]...)REFERENCES 親表名 (親キー列名 [, 親キー列名]...)
|
|
デフォルト
|
列
|
列名 データ型 DEFAULT 値
|
-
曜日の表示を行う日付書式要素
|
D
|
曜日(1~7)。
|
|
DY
|
曜日の省略形。
|
|
DAY
|
曜日。空白を埋め込んで、この要素に使用される日付言語の一番長い曜日の幅で表示します。
|
-
月の表示を行う日付書式要素
|
月
|
MM
|
月を 2 桁であらわす (00 ~ 12)
|
|
MON
|
月を省略名であらわす('1月 '~'12月':)。NLS_DATE_LANGUAGE などの初期化パラメータにより ('JAN' ~ 'DEC') に変化する。 最大桁数でフォーマットされる(後続スペースの付与)。
|
|
MONTH
|
月をフルスペルであらわす。日本語では関係なし('1月 '~'12月')
|
ちょいメモ(Bronze DBA11g)
-
データベース管理ツール
Oracle Universal Installer(OUI)
Database Configuration Assistant(DBCA)
Database Upgrade Assistant(DBUA)
Oracle Net Manager
Oracle Enterprise Manager
SQL*PlusとiSQL*Plus
Recovery Manager(RMAN)
Data Pump
SQL*Loader
-
読み方
-
CREATE USERは、データ定義言語(DDL)
-
Oracleインスタンスは、「システムグローバル領域(SGA)」と「バックグラウンドプロセス」から構成される。
-
プログラムグローバル領域(PGA)は、サーバプロセスに対して割り当てられる共有されないメモリ
-
Oracleデータベースを構成するファイルは、「制御ファイル」、「データファイル」、「REDOログファイル」の3種類
-
インスタンスとは、「バックグラウンドプロセス群」+「共有メモリ」。イメージ的には、データベースを管理しているもの(プロセス+メモリ)
-
「NOMOUNT」状態は、インスタンスが機動した状態。
-
Oracle Universal Installer(OUI)を用いて、非対話形式のインストールを行う場合は、レスポンスファイルを使用する。
-
Linux環境で、Oracleをインストールする為には、以下のユーザ・グループが必要である。
Oracleユーザ・・・Oracleソフトウェアの所有者
oinstallグループ・・・Oracleイベントリグループ
dbaグループ・・・OSDBAグループ
-
root.shとorainstRoot.shスクリプトを、Oracleインストール時に実行する必要あり。
-
Oracle Enterprise Manager Database Control(Batabase Control または EM)
-
Oracle Enterprise Manager Database Control(Batabase Control または EM)に初めからアクセス許可されているユーザ
SYS・・・データディクショナリを構成する実表とビューを所有している
SYSTEM・・・管理情報を格納する追加の表とビューおよび様々なOracleオプションとツールによって使用される内部表とビューを所有します。
SYSMAN・・・Oracle Enterprise Managerを使用して、データベースを操作するために使用します。
★DBSNMPユーザは、EMへログインは可能。管理者権限は付与されていない。
-
Oracle Enterprise Manager Database Control(Batabase Control または EM)にログインして管理タスクを実行できるユーザを作成すると、以下のロールが付与される。
MGMT_USERロール
-
クライアントが接続するOracleデータベース情報を解決する方法をネーミングメソッドと呼ぶ。
-
ディレクトリネーミング
名前解決にディレクトリサーバを使用する。名前解決情報を1箇所に集中させるため、ネットワーク構成の変更に柔軟。
LDAP(Lightweight Directory Access Protocol)はディレクトリサービスを提供するプロトコル。
-
外部ネーミング
Network Information Service(NIS)などのOracle以外のネーミングサービスを使って名前解決解決する。
-
REDOログバッファは、データベース起動中にサイズを変更できません。
-
インスタンス起動時に読み込むファイルが、パラメータファイル
●サーバパラメータファイル(SPFILE)
Oracleサーバによって読み書きが可能なバイナリーファイル。データベース起動中にコマンドで変更したパラメータ情報をほじするため、再起動時にも変更が有効となる。
手動では編集不可。テキスト初期化パラメータに優先して読み込まれる。
●テキスト初期化パラメータファイル
パラメータを記述したテキストファイル。Oracleサーバは読み込みは出来るが、書き込み不可。
手動では編集可能。編集した内容を反映させるには、データベースの再起動が必要。
-
自動共有メモリ管理では、SGA_TAGETパラメータで指定したサイズを元に、自動的に以下の領域に対してメモリを分配する。
共有プール
データーベースバッファキャッシュ
Javaプール
ラージプール
※REDOログバッファは、自動共有メモリ管理の対象ではない。
LOG_BUFFERパラメータより、個別にサイズ調整する。
-
データーベースを起動するために必要な権限
SYSDBA
SYSOPER
-
ストライピング
1つのデータを2つ以上のハードディスクに分けて同時に書き込むこと。
ちょいメモ(Silver DBA11g)
-
制御ファイルの名前を確認する方法
-
V$CONTROLFILE ビュー
-
show parameter control_filesコマンド
-
初期化パラメータファイル(CONTROL_FILES)で指定できる制御ファイルの数 1~8つのファイル名
-
初期化パラメータファイル(LOG_ARCHIVE_DEST_n)で指定できるアーカイブログファイル出力先 1~10つのファイル名
-
ブロック
ファイルとメモリ間のI/Oの最小単位。SYSTEM表領域で使用するブロックサイズを標準ブロックサイズという。
標準以外のブロックサイズを使用する表領域も作成可能だが、標準ブロックサイズの変更は不可。
2KB、4KB、8KB、16KB、32KBのブロックサイズが指定できる。
-
エクステント
オブジェクトの作成時に、表領域中にそのオブジェクト用に獲得する領域の最小単位。
エクステントは、複数のデータファイルにまたがることは出来ない。
-
1つの表領域内では、同一のブロックサイズでなければならない。
-
データディクショナリビューの一覧を取得する。
SELECT TABLE_NAME FROM DICTIONARY;
-
Management Service
Grid Control用のユーザインターフェースを提供するJ2EEWEBアプリケーションのこと。
-
ALTER SYSTEM SET ~ コマンド
初期化パラメータ を SQL から変更するコマンド
ALTER SYSTEM SET には、
稼動しているインスタンス設定のみを変更する MEMORY スコープ
設定ファイルのみを変更する SPFILE スコープ
その両方を設定する BOTH スコープがある。
-
ALTER SESSION文
データベースへの接続に影響するすべての条件またはパラメータを、設定または変更できます。
この文は、データベースとの接続を切断するまで有効です。
-
DBA_TABLESPACES
データベース内の表領域をすべて表示
用語
-
リテラル文字・・・SELECT句に含まれた「文字、数字、日付」のこと。文字と日付のリテラルは、単一引用符(')で囲む必要がある
Oracleのマニュアル
-
ここから取ってきた リリース1とリリース2のものが混ざってます。
-
SQL リファレンス
-
エラー・メッセージ
-
アプリケーション開発者ガイド
-
パフォーマンス・チューニング・ガイド
-
データ・ウェアハウス・ガイド
-
PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
-
グローバリゼーション・サポート・ガイド
-
概要(Oracle Database 概要マニュアル)
-
管理者ガイド
-
リファレンス
-
ユーティリティ
参考ページ
-
ORACLE MASTER Bronze DBA講座(1)
-
オラクル基本の落とし穴
最終更新:2013年06月03日 08:03