<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/adsl243/">
    <title>solaris10/oracle10g @ ウィキ</title>
    <link>http://w.atwiki.jp/adsl243/</link>
    <atom:link href="https://w.atwiki.jp/adsl243/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>solaris10/oracle10g @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2009-12-11T16:36:27+09:00</dc:date>
    <utime>1260516987</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/adsl243/pages/31.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/adsl243/pages/39.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/adsl243/pages/43.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/adsl243/pages/13.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/adsl243/pages/42.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/adsl243/pages/40.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/adsl243/pages/34.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/adsl243/pages/26.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/adsl243/pages/41.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/adsl243/pages/2.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/adsl243/pages/31.html">
    <title>ゴミ(´・ω・｀)</title>
    <link>https://w.atwiki.jp/adsl243/pages/31.html</link>
    <description>
      round(123.4567,3)

小数点を三行目まで残す
つまり四行目切り捨て

出力される値
123.457

round(123.4567,-2)
10の位を切り捨て

出力される値
100

round(123.4567,0)
少数以下全て切り捨て


mod(A,B) A/Bの余り

trunc(A) Aの小数点以下切捨て

trim(a from Aria)
aを削除

出力される値
ria

months_between(日付1,日付2)

日付1－日付2

一ヶ月は31日で計算

next_day(&#039;日付,曜日)

曜日
1 日曜日
2.月曜日
3.火曜日
4.水曜日
5.木曜日
6.金曜日
7.土曜日

add_months(&#039;日付,月)

日付に対して～ヵ月後

DROPはSQLコマンド

スクリプトファイル実行は
@
start
sta

バッファの内容をファイルに書き出し
save

データ型
varchar2
入力サイズをそのまま格納
余分なスペースの補充なし

char
最初に領域をとるので
足りない分はスペース追加。

number
number(全桁数,小数点)
整数分オーバーはエラーになるが、少数分オーバーは四捨五入

※number(p)のpを省略すると
1byteの文字列(&#039;A&#039;)

・GROUP BY句は、重複するデータの削除、昇順により並び替えます  

to_date関数は時間が省略されると自動的に0時になる。

値を指定する際defaultキーワードを使用することで
デフォルト値を設定出来る。
何も指定していない場合はnull

empnoのデフォルト値を0に設定。
例) (empno default 0,ename)

MM=月
MI=分

現在時刻表示
 select to_char(sysdate,&#039;HH24:MI:SS&#039;) &quot;現在時刻” from dual;

数値型から日付型へは変換出来ない。

数値型⇒文字型⇔日付型

ユーザーが所有する表、ビュー、クラスタ、シノニムおよび順序を調べるためのビュー
-USER_CATALOG

ユーザーが所有する順序を調べるためのビュー
-USER_SEQUENCES

ビューの列が更新、削除、追加可能かを調べる為のビュー
-USER_UPDATABLE_COLUMNS

表に設定したコメントを調べるためのビュー
-USER_TAB_COMMENTS 

結合条件がない (デカルト積)
select * from &lt;表A&gt;,&lt;表B&gt;
select * from &lt;表A&gt; cross join &lt;表B&gt;

UPDATE EMP SET COL2=NULL WHERE EMPNO = 123;
↑
UPDATE文では、列=NULL

MONTH = ～月
MM = MM&quot;月&quot;
DD = DD &quot;日&quot;

キャッシュが無効ならば、次の順序値になります
キャッシュが有効ならば、次にキャッシュに格納される値になります     </description>
    <dc:date>2009-12-11T16:36:27+09:00</dc:date>
    <utime>1260516987</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/adsl243/pages/39.html">
    <title>関数</title>
    <link>https://w.atwiki.jp/adsl243/pages/39.html</link>
    <description>
      *INITCAP関数
 書式 | (&lt;文字列&gt;)
-文字列(単語)の先頭を大文字にする
-全角は全角に半角は半角で出力する
-区切りはスペースや記号で判断する。

*NVL関数
 書式 | (a,b)
aがNULLのとき、bの値を戻します。
aがNULLでないとき、aの値を戻します

*NVL2関数
 書式 | NVL2(a,b,c)
aがNULLでない時bを戻します。aがNULLの時cを戻します

*SUBSTR関数
 書式 | SUBSTR((&lt;文字列&gt;,&lt;開始位置&gt;,&lt;文字数&gt;)
-開始位置を0にすると強制的に1にカウントされる
-文字数を0以下にすると戻り値はnullになる
-文字数を省略すると、指定した開始位置からすべての文字が返される。
-負も数は後ろから数える
《例》
※3文字目から最後まで(文字数省略)
SUBSTR(&#039;ABCDE&#039;,3)  　→ CDE

※3文字目から2文字分
SUBSTR(&#039;ABCDE&#039;,3,2)  → CD

後ろから2文字目から最後まで
SUBSTR(&#039;ABCDE&#039;,-2)   → DE

後ろから4文字目から2文字分
SUBSTR(&#039;ABCDE&#039;,-4,2) → BC

*DECODE関数
 書式 | DECODE(列名 ｜ 値 ，条件1，値1，条件2，値2，
 &lt;デフォルト値&gt; ）

列名と値、値1,値2を比較し
条件に合えば対応する条件を出力
どれにも合わない場合はデフォルト値を出力

*NULLIF関数
 書式 | NULLIF(a,b)
a=bの時nullを返す
a≠bの時aを返す

*NEXTDAY関数
 書式 | NEXT_DAY(d,c)

d:日付
c:曜日 

日付dから後のcでの指定曜日の日付を戻します    </description>
    <dc:date>2009-12-11T15:04:10+09:00</dc:date>
    <utime>1260511450</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/adsl243/pages/43.html">
    <title>索引</title>
    <link>https://w.atwiki.jp/adsl243/pages/43.html</link>
    <description>
       書式 | create index &lt;索引名&gt; on &lt;表名&gt;(&lt;列名&gt;)    </description>
    <dc:date>2009-12-10T17:27:02+09:00</dc:date>
    <utime>1260433622</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/adsl243/pages/13.html">
    <title>sql*plus</title>
    <link>https://w.atwiki.jp/adsl243/pages/13.html</link>
    <description>
      [[バッファ関連]]
[[表の結合]]
[[表の作成/削除]]
[[シノニムの作成]]
[[権限]]
[[ビュー関連]]
[[トランザクション関連]]
[[関数]]
[[索引]]
[[お役立ち情報]]

*SQL分の基礎

まずログインします。
solaris(SPARC)にインストールされたoracle10g(ver.10.2.0.1)に対して
クライアント側からOracleInstantClientでログインします。
http://www24.atwiki.jp/adsl243/editx/13.html
今回はoracle10g(R10.2)がトライアル版の為OracleInstantClientを使用しています。
ダウンロードはOTNのtopページから
「ダウンロード⇒ページ上のDatabaseの中にあるInstant Client」で
該当のOSを選んでダウンロードして下さい。

OracleInstantClientのインストール方法は[[ここ&gt;http://billyboy.blog81.fc2.com/blog-entry-164.html]]を参考にしてください。

***OracleInstantClientからのログイン手順
1.[Windows+R]でコマンドラインを起動しcmdとタイプします。

2.以下コマンドを入力しログインします。
 書式 | sqlplus system/passwd@oracleサーバーのURL:ポート番号/Oracle_SID

例)
sqlplus system/passwd@192.168.150.42:1521/orcl

正常にログインされればプロンプトの表示が

SQL&gt;

になります。
必ずsystemユーザーでログインしてください。
一般ユーザーはデフォルトだとロックが掛かっている可能性が高いです。

***ログインできない場合のエラーに対しての対処
①リスナーが起動しているか下記コマンドで確認する。

lsnrctl status

ステータスが停止だった場合は下記コマンドでリスナーを起動してください。

lsnrctl start

②$ORACLE_HOME/network/admin/tnsnames.oraの記述が間違っていないか確認する

*select文
表から列を選択するのに使います。
if.EMP表を全て出力したい場合。

例)
select * from emp;
 書式 | select &lt;列名&gt; from &lt;表名&gt;

-*は全ての列を指定しています。
-式の終わりには「;」セミコロンが必要です。

*ユーザーの作成
 書式 | create user &lt;ユーザー名&gt; idetified by &lt;password&gt;
例)create user hanako identified by neko

-デフォルト表領域と一時表領域を追加
 書式 | create user &lt;ユーザー名&gt; idetified by &lt;password&gt;
 書式 | default tablespace &lt;デフォルト表領域&gt; temporary tablespace &lt;一時表領域&gt;;

例) 
create user yamada identified by taro
default tablespace users temporary tablespace temp;

-割り当て制限の設定
 書式 | quota &lt;割り当てサイズ&gt; on &lt;表領域&gt;

例)
quota 10m on users;

※割り当てサイズを無制限にする場合はunlimitedを指定する。
例)
quota unlimited on users;



-ユーザー設定の変更
 書式 | ater user &lt;作成するユーザー名&gt; identyfied by &lt;新しいパスワード&gt; default_tablespace &lt;新しいデフォルト表領域&gt; temporary_tablespace &lt;一時表領域&gt; quota &lt;割当て制限のサイズ&gt; on &lt;割り当てを与える表領域&gt;

例) 山田のパスワードをtigerに変更
alter user yamada identified by tiger

例) 山田のデフォルト表領域を20mに変更
alter user yamada quota 20m on users

*表の作成
 書式 | create table &lt;表名&gt;(&lt;列の名前&gt; &lt;列のデータ型&gt; &lt;列の制約&gt;,&lt;列の名前&gt; &lt;列のデータ型&gt; &lt;列の制約 constraint &lt;表の制約&gt;);

例)
create table department(
deptno NUMBER(2) NOT NULL, dname VARCHAR2(14), loc VARCHAR2(13), 
constraint dept_primary_key primary key (deptno)
);

*データの入力
 insert into department(&lt;入力する列名&gt;) values(入力するデータ);

例)
insert into department(deptno, dname, loc) values(10, &#039;開発&#039;, &#039;赤坂&#039;);

※すべての列に値を入れる場合。
 insert into &lt;表名&gt; values(入力するデータ);

例)
insedrt into department values(70, &#039;開発&#039;, &#039;池袋&#039;);

*データの修正
 update &lt;変更する表&gt; set &lt;変更する列&gt; = &lt;変更する値&gt; where &lt;変更する行の条件&gt;
※whereを省略すると表の全体を表示する。

例)
update department set loc = &#039;上野&#039; where dname = &#039;開発&#039;
※開発部の場所が上野に変更になった。

すべての列を削除
truncate table &lt;削除する表名&gt;

truncate table department

deleteとの主な違いは列を切り捨てた後に自動でコミットされる。
よって文字通り元に戻せない。

-対象の行にロックをかける
 書式 | select * from &lt;検索する表名&gt; where &lt;対象の列名&gt; = &lt;列の値&gt; for update;

例)
select * from department where deptno = 20 for update

ロックをかけられなかった場合エラーを返す。

 書式 | select * from &lt;検索する表名&gt; where &lt;対象の列名&gt; = &lt;列の値&gt; for update nowait;
例)
select * from department where deptno = 30 for update nowait

※エラーの出力例
行1でエラーが発生しました。:
ORA-00054: リソース・ビジー、NOWAITが指定されていました。

*ユーザー削除(DROP USER権限が必要)
-systemユーザーでログインする。
-他のユーザーが削除するユーザーでログインしている場合削除できない。
 drop user &lt;ユーザー名&gt; cascade

例)
drop user yamada cascade

*誰がデータベースにアクセスしているか確認

 select sid, serial#, username, machine, program from v$session;

*データベースの停止/開始
 shutdown immediate
※強制停止(DBに接続しているユーザーがいても有無を言わさず停止)

 shutdown normal
※通常停止(DBに接続しているユーザが接続を切るまで待機し切ったら停止)

-データベースの起動
 startup

*データディクショナリのリストを取得
select table_name from dict where table_name like &#039;%TABLE%&#039;

-データディクショナリuser_tablesの簡単な説明
select * from dict where table_name=&#039;USER_TABLES&#039;

*ユーザー山田の表領域確認

select username, default_tablespace, temporary_tablespace 
from dba_users where username = &#039;YAMADA&#039;

-表割り当て領域確認

select username, tablespace_name, max_bytes from dba_ts_quotas where username = &#039;YAMADA&#039;

*ユーザーの権限確認

 select * from user_sys_privs;

*一度与えたユーザー権限の取り消し
 書式 | revoke &lt;システム権限の名前&gt; from &lt;ユーザーの名前&gt;

例) ユーザー山田のCREATE USER権限取り消し
revoke create user from yamada

例)全てのユーザーでscottのemp表を検索されないようにする。
revoke all on scott.emp from public;

*ロールの作成

例)
create role ap1_user

-ロールの削除
 書式 | drop role &lt;削除するロールの名前&gt;

例)
drop role ap1_user

*表の追加
 書式 | alter table &lt;表の名前&gt; add ( &lt;名前&gt; &lt;データ型&gt;);

例)
alter table del_me add ( col timestamp(3) with time zone );

-列の削除
 書式 | alter table dell_me drop (削除対象名) CASCADE CONSTRAINTS;
例)
alter table dell_me drop (id) CASCADE CONSTRAINTS;    </description>
    <dc:date>2009-12-10T17:25:32+09:00</dc:date>
    <utime>1260433532</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/adsl243/pages/42.html">
    <title>さ</title>
    <link>https://w.atwiki.jp/adsl243/pages/42.html</link>
    <description>
      *シノニム
-表やビューの別名の事

*パブリックシノニム
-誰でもアクセス可能なシノニム

*制約
-表の中に一定の規則を作ること、以下のようなものがある

-一意キー制約    UNIQUE KEY制約
他の行と同じ値を入れられない

-NOT NULL 制約    NOT NULL 制約
NULLの入力禁止

-主キー制約    PRIMARY KEY 制約
一意キー+NOT NULL 制約

-チェック制約    CHECK 制約
列の値に条件をつける。

-参照整合性制約    FOREIGN KEY 制約
外部キーの設定
存在しない値が入力されるのを未然に防ぐ

-複合主キー制約
複数列の主キー制約の事    </description>
    <dc:date>2009-12-10T15:04:22+09:00</dc:date>
    <utime>1260425062</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/adsl243/pages/40.html">
    <title>チラ裏</title>
    <link>https://w.atwiki.jp/adsl243/pages/40.html</link>
    <description>
      しょーもない情報

サクラエディッタ
ショートカット表

Ctrl+A すべて選択
Alt+R 右側のスペースをすべて消す。
Alt+L 左側のスペースをすべて消す。

Alt+矢印キー 矩形選択
(Shift+F6)

Alt+;
今日の日付入力

Ctrl+Alt+X 行を折り返さない

グーグル日本語入力で「ばーじょん」で変換すると
バージョン番号が表示されます。

solarisでログ取り

script &lt;保存先パス&gt;
※Exit又はCtrl+Dで終了　    </description>
    <dc:date>2009-12-10T14:55:10+09:00</dc:date>
    <utime>1260424510</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/adsl243/pages/34.html">
    <title>お役立ち情報</title>
    <link>https://w.atwiki.jp/adsl243/pages/34.html</link>
    <description>
      *削除した表がゴミ箱に残っているのを空にする。
 purge recyclebin;

*日付形式変更(nls_date_format関数を変更)
 alter session set nls_date_format=&#039;YYYY/MM/DD HH:MI:SS&#039;;

変更確認
select sysdate from dual;

画面クリア
 書式 | cl[ear] scr[een]

例) cl scr    </description>
    <dc:date>2009-12-10T13:57:36+09:00</dc:date>
    <utime>1260421056</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/adsl243/pages/26.html">
    <title>は</title>
    <link>https://w.atwiki.jp/adsl243/pages/26.html</link>
    <description>
      *バッファ
-SQL*PLUSで最後に入力した文を一時的に保存しておく記憶領域の事。

*表領域
-データベースのデータを保存しておくディスクの領域に対してoracleが名前をつけたもの

*ビュー
-検索結果を表のように見せかける

*フラッシュバックテーブル
BIN$..で始まるテーブル
テーブルを削除すると出来る。oracle10.1か実装されて
表を削除してもロールバックが出来るようになっている    </description>
    <dc:date>2009-12-09T09:20:21+09:00</dc:date>
    <utime>1260318021</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/adsl243/pages/41.html">
    <title>シノニムの作成</title>
    <link>https://w.atwiki.jp/adsl243/pages/41.html</link>
    <description>
      パブリックシノニム
 書式 | create public synonym &lt;シノニム名&gt; for オブジェクト名;    </description>
    <dc:date>2009-12-08T15:02:17+09:00</dc:date>
    <utime>1260252137</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/adsl243/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/adsl243/pages/2.html</link>
    <description>
      **メニュー
-[[メニュー]]
-[[Solaris10(SPARC)編]]
-[[Oracle10g編]]
-[[チラ裏]]

----

**リンク
-[[@wiki&gt;&gt;http://atwiki.jp]]
-[[@wikiご利用ガイド&gt;&gt;http://atwiki.jp/guide/]]

**他のサービス
-[[無料ホームページ作成&gt;&gt;http://atpages.jp]]
-[[無料ブログ作成&gt;&gt;http://atword.jp]]
-[[2ch型掲示板レンタル&gt;&gt;http://atchs.jp]]
-[[無料掲示板レンタル&gt;&gt;http://atbbs.jp]]
-[[お絵かきレンタル&gt;&gt;http://atpaint.jp/]]
-[[無料ソーシャルプロフ&gt;&gt;http://sns.atfb.jp/]]

// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります


//**更新履歴
//#recent(20)

&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2009-12-07T17:16:17+09:00</dc:date>
    <utime>1260173777</utime>
  </item>
  </rdf:RDF>
