LoginSignup
2
3

More than 5 years have passed since last update.

OracleとSQL メモ

Last updated at Posted at 2018-05-23

久しぶりすぎて、ほとんど微かな記憶となってしまったため
個人的な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回目:⇒NGORA-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';

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3