SQL


SQL

目次

+

joinを意味する

alter talbe テーブル名 add|modify (列名 データ型 [NOT] NULL [DEFAULT ...])

alter table today_capacity modify (max_capacity number(3) NULL)

concat(A, B)

文字列の連結

CREATE INDEX [ UNIQUE , BITMAP ] <インデックス名> ON <表名> ( <列名> )

索引を作る


create table テーブル名 (変数 型, ...);

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')
);

create sequence <順序名>

// パラメータ
[ START WITH <初期値> ]
[ INCREMENT BY <増分値> ]
[ MAXVALUE <最大値> | NOMAXVALUE ]
[ MINVALUE <最小値> | NOMINVALUE ]
[ CYCLE | NOCYCLE ]
[ CACHE <キャッシュ数> | NOCYCLE ]
// シーケンス番号の取得
SELECT <順序名>.CURRVAL FROM DUAL
// insert文などでは、<順序名>.CURRVALがそのまま利用できる

insert into テーブル名 values ('値', );

0から始まる値を代入するとき シングルクォーテーションで括らないと0が無視される

replace テーブル名 set 項目名='' where句

一致する項目を削除してから、新たに項目を追加。プライマリーキーであろうが関係ない。

select * from テーブル名;

テーブルの情報を取得する

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に代入される

desc テーブル名;

テーブルの列定義を表示

update テーブル名 set 列名=値;

文字列はシングルクォーテーションで括る

update テーブル名 set 列名=to_date('データ', 'yyyy/mm/dd hh24:mi:ss');

delete from テーブル名

ODBC

  • Microsoftによって提唱されたデータベースにアクセスするためのソフトウェアの標準仕様

substr(カラム名, index, nchars)

部分文字列を取得する

index: 何番目からか
nchars: 何文字か

外部キー(foreign key)

テーブルのプライマリキーと同じ値を持った別のテーブルのフィールド値。

ストアドプロシージャで配列を扱う

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のすべての行が出力される
    

主キー(primary key)

レコードを1行ずつ識別するためのフィールドで、プライマリキーは重複して同じ値を持つことができない。
自動的に、<UNIQUE>属性、<NOT NULL>属性を指定したことになる

最新の20件

2007-03-05 2008-07-30 2007-05-24 2007-05-09 2007-04-12
  • SQL
2007-03-20 2007-03-18 2007-02-20 2007-02-18 2007-02-04 2006-12-25 2006-09-22 2006-05-02 2005-12-09 2005-05-13 2005-04-28 2005-04-22