目次
joinを意味する
alter table today_capacity modify (max_capacity number(3) NULL)
文字列の連結
索引を作る
CREATE TABLE group_authority ( group_id VARCHAR2(64) NOT NULL, authority VARCHAR2(32) NOT NULL, delete_flag VARCHAR2(1) NOT NULL default '0', create_date DATE NOT NULL default NOW(), update_date DATE NOT NULL default NOW(), CONSTRAINT pk_group_authority PRIMARY KEY (group_id), // primary key CONSTRAINT fk_group_authority FOREIGN KEY (group_id) REFERENCES group_info(group_id), // foreign key CHECK (delete_flag = '0' OR delete_flag = '1') );
// パラメータ [ START WITH <初期値> ] [ INCREMENT BY <増分値> ] [ MAXVALUE <最大値> | NOMAXVALUE ] [ MINVALUE <最小値> | NOMINVALUE ] [ CYCLE | NOCYCLE ] [ CACHE <キャッシュ数> | NOCYCLE ]
// シーケンス番号の取得 SELECT <順序名>.CURRVAL FROM DUAL // insert文などでは、<順序名>.CURRVALがそのまま利用できる
0から始まる値を代入するとき シングルクォーテーションで括らないと0が無視される
一致する項目を削除してから、新たに項目を追加。プライマリーキーであろうが関係ない。
テーブルの情報を取得する
select to_char(列名, 'yyyy/mm/dd hh24:mi:ss') from テーブル名; select * from tab;: テーブル全てを表示 select distinct 〜: 重複したレコードを非表示にする select count(*) from 〜: ヒット数を表示 select ... for update: 目的とする行のロック。 現行のトランザクションが終了するまで、ロックした行が他のトランザクションによって更新されたり削除されたりすることがなくなる。 select A into B From 〜: selectした結果AがBに代入される
テーブルの列定義を表示
文字列はシングルクォーテーションで括る
update テーブル名 set 列名=to_date('データ', 'yyyy/mm/dd hh24:mi:ss');
部分文字列を取得する
index: 何番目からか nchars: 何文字か
テーブルのプライマリキーと同じ値を持った別のテーブルのフィールド値。
CREATE OR REPLACE FUNCTION GREATEST(TEXT[]) RETURNS TEXT AS $emp_stamp$ DECLARE ARRY ALIAS FOR $1; GREATEST TEXT; BEGIN GREATEST := ARRY[1]; FOR I IN 1 .. ARRAY_UPPER(ARRY,1) LOOP IF ARRY[I] > GREATEST THEN GREATEST := ARRY[I]; END IF; END LOOP; RETURN GREATEST; END; $emp_stamp$ LANGUAGE 'PLPGSQL';
SELECT GREATEST( ARRAY['HARRY', 'HARRIOT', 'HAROLD'] ) AS "Greatest";
sqlplus ユーザ名/パスワード @ファイル名
// oracle A.商品ID (+) = B.商品ID // Bのすべての行が出力される // sql from A right [outer] join B (A.商品ID=B.商品ID) // Bのすべての行が出力される
レコードを1行ずつ識別するためのフィールドで、プライマリキーは重複して同じ値を持つことができない。
自動的に、<UNIQUE>属性、<NOT NULL>属性を指定したことになる