久しぶりすぎて、ほとんど微かな記憶となってしまったため
個人的なOracle関連の覚え書きです。
sqlplus
接続
sqlplus ユーザ/パスワード@接続先
接続先は、tnsnames.oraに記載されてる。
配置場所は「$ORACLE_HOME/network/admin」を目安に探す。
自分だけの接続先設定を作りたい
単体テストでたまに、接続先を変更したいときに便利。
環境変数TNS_ADMINを設定しておく。
加工したtnsnames.oraを環境変数に指定したpathに配置する。
# 例
export TNS_ADMIN="/home/uesr/hoge"
6 ローカル・ネーミング・パラメータ(tnsnames.ora)
NLS_LENGTH_SEMANTICS
文字数を、数えるときに、なにで数えるかを決める設定。
-
確認方法
select * from V$NLS_PARAMETERS where parameter = 'NLS_LENGTH_SEMANTICS'
value列が、[BYTE]なら文字数はByte単位になる。
[CHAR]なら文字数はChar単位になる。 -
一時的に変更する方法
ALTER SESSION SET NLS_LENGTH_SEMANTICS='CHAR';
ALTER SESSION SET NLS_LENGTH_SEMANTICS='BYTE';
ALTER SESSION ~
データベースとの接続を切断するまで有効となる設定
Oracleマニュアル 11g
- date型のフォーマット変更
ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';
文字列は、シングルクォーテーションで囲む
select 'hoge' from dual;
Oracle Application Express
oracleをインストールしなくても、WEBブラウザでSQLやPL/SQLを試せる。
全部出来るわけじゃないけど、便利。
無料でこれだけできれば、ありがたい。
apex.oracle
制約
一意制約(UNIQUE KEY)
- テーブルデータ内で重複を許可しない
- 複数の項目を指定できるが、値がNULLでもいい
・テーブル定義
CREATE TABLE uniq_tbl
(
id number(2) ,
c CHAR(8),
s VARCHAR(255),
UNIQUE (id, c)
)
・データ確認
select * from uniq_tbl
・データ追加
1回目:⇒OK
insert into uniq_tbl VALUES(1,'c','aaa')
insert into uniq_tbl VALUES(2,'c',null)
2回目:⇒NG「ORA-00001: 一意制約(SNNO.SYS_C0074917443)に反しています」
insert into uniq_tbl VALUES(3,'c',null)
制約の確認
・制約の確認
select table_name, constraint_name, CONSTRAINT_TYPE,status from user_constraints where table_name = 'XXX';