データベース言語

last update 2007.4.7

◆SQL

表の作成 CREATE TABLE/ ビューの作成 CREATE VIEW/ 問合せ SELECT/ 挿入 INSERT/ 更新 UPDATE/ 権限 GRANT
◇作成(CREATE TABLE)
まずは表を作成する必要がある。 単純な表は、列名と属性を書き連ねていくだけで作成できる。
/* 表の作成例 */
CREATE TABLE 社員表
  ( 社員コード NUMBER(7),
    社員氏名   CHAR(20),
    住所       CHAR(40),
    電話番号   CHAR(12),
    生年月日   CHAR(8) )


各項目について、データーベース特有の属性、制約を 追加することが出来る。

◇作成(CREATE VIEW)
「ビュー VIEW」とは、表の実体はそのままにして、 自分の見たい情報を切り出したり計算して取り出して作成した 一時的・論理的な表。
/* ビューの作成例 */
CREATE VIEW 試験平均点ビュー
    AS SELECT 科目コード, AVG(点数)
    FROM 試験成績表
    GROUP BY 科目コード
・列に別名を付与してビューを作成
CREATE VIEW SEビュー(SE番号,氏名,部署,級)
    AS SELECT 社員番号,社員氏名,部署コード,職級
      FROM 全従業員表
      WHERE 職種='SE'
    WITH READ ONLY

◇カーソル宣言(DECLARE CURSOR)

◇問合せ(SELECT)
表を作って莫大な量のデータを突っ込んだら、 次は効率的に自分の欲しい情報だけを選んでくる、という機能が必要。 データベースを作る以上、どのように情報選択(SELECT)が出来るか、 ということが最も重要であり、 問い合わせ機能こそがSQLの命であり核心である。
/* 条件合致行数のカウント */
SELECT COUNT(*) FROM <表名> WHERE A=1 AND B=1
/* 指定項目の降順出力 */
ORDER BY <項目名> DESC
/* GROUP BY による平均値の算出 */
SELECT 発注番号, AVG(発注数量) FROM 発注明細
    GROUP BY 発注番号
SELECT 部署ID,部署名,SUM(売上金額)
   FROM 部署表,売上表             /* 表を2つ指定→結合 */
   WHERE 部署表.部署ID = 売上表.部署ID       /* 等価結合 */
        AND 職種 = '営業'   /* 集計対象部署をWHEREで絞る */
   GROUP BY 部署ID                  /* グループ(要約)化 */
   HAVING SUM(売上金額) > 1000000 /* 要約結果を更に絞る */
・SQL関数 ・GROUP BY ・副問合せ subquery
  SLECT * FROM 顧客表
      WHERE 顧客番号 NOT IN (
         SELECT Distinct(顧客番号) FROM 注文表)
  
・相関副問合せ correlation subquery
  SELECT * FROM 商品表 A
      WHERE A.単価 > ALL(
         SELECT 単価 FROM 商品表 B
                 WHERE A.商品番号 <> WHERE B.商品番号)
  
  SELECT 商品番号 FROM 商品表
      WHERE EXISTS(
         SELECT * FROM 売上明細
                 WHERE 売上明細.商品番号 = 商品表.商品番号)
  

◇挿入(INSERT)
・VALUES句で値を指定し、単一行を挿入する。
INSERT INTO 部署表
    VALUES (18, '営業部', '三田地区')
・副問合せが戻す行の全てを挿入する。
INSERT INTO 賞与表
    SELECT 氏名, 職級, 基本給与, 成績点 FROM 売上表
       WHERE 成績点 > 75
             OR 職級 IN ('社長', '取締役', '管理職')

◇更新(UPDATE)
UPDATE 試験成績表
    SET 追試フラグ = 1
    WHERE 点数 < 平均点数 - 30
UPDATE 雇用表
    SET 職級='主任', 給料=給料+1050, 部署コード=17
    WHERE 氏名='HIJK'

◇権限(GRANT)
GRANT SELECT, UPDATE ON 教育受講履歴表 TO PUBLIC
GRANT REFERENCES(雇用者コード), UPDATE(雇用者コード,給料,職級)
    ON 雇用表 TO 人事部員