INTRODUCTION TO SQL

## DATA MODEL
1. 構造型データベース
  ・階層型データベース:親1人+兄弟
  ・ネットワーク型データベース:親1人以上+兄弟+叔父叔母従兄弟0人以上
2. 非構造型データベース
  ・リレーショナル型データベース:
   −2次元テーブル
   −複数テーブルで1データベース

## SQL/基本的データ型
 −CHARACTER STRING
  テキストを表す全てのデータ型。
  固定長と可変長がある。
  可変長の場合は CHARACTER VARYING と定義される。
  固定長の場合は、その文字数をとり、可変長の場合は文字数の最大値をとる。
  CHARACTER は CHAR、CHARACTER VARYING は CHAR VARYING や VARCHAR と省略できる。
 −NATIONAL CHARACTER
  実質的には CHARACTER STRING 型と同じ。
  NATIONAL CHAR または NCHAR と省略できる。
 −BIT STRING
  バイナリ数で、0 と 1 のシーケンスで構成される。
  固定長と可変長がある。
  可変長の場合は BIT VARYING と定義される。
  固定長の場合はその文字列を、可変長の場合は文字数の最大値をとる。
 −EXACT NUMERIC
  精度とスケールを指定または暗示する。4種類。
  −NUMERIC
   指定された桁数と小数点位置をもつ数値。
  −DECIMAL
   実装によっては定義されているものより大きな精度が選択される。
   NUMERIC が実際の精度を指定するのに対し、DECIMAL は最小の精度を指定する。
  −INTEGER
   小数点を持たない精度の整数値。
  −SMALLINT
   精度が INTGER よりも低いことを除けば、INTEGER と同じ。
 −APPROXIMATE NUMERIC
  精度を持つがスケールといったものはない。3種類。
  −FLOAT
   指定される精度の値以上の 2 進数精度を持つ。
  −REAL
   精度は 10 進数で、実装時に定義される。
  −DOUBLE PRECISION
   精度は 10 進数で実装時に定義されるが REAL の精度よりも高い。
 −DATETIME
  日付または時刻を示す表現の様々な部分を表す。3種類。
  −DATE
   YEAR、MONTH、DAY という 3つの整数フィールドの集合の型。
  −TIME
   HOUR、MINUTE、SECOND という 3つの数値フィールドの集合の型。
  −TIMESTAMP
   DATE と TIME の組合せの型。
 −INTERVAL
  様々な日付や時刻間の間隔で、時間の量を示すデータ型。

ref:
http://www.techscore.com/tech/sql/01_03.html
http://www.techscore.com/tech/sql/02_04.html

FUNCTION PROCEDURE

---DIFINITION OF PACKAGE---
CREATE OR REPLACE PACKAGE test_package

IS
TYPE REF_CURSOR IS REF CURSOR;
FUNCTION test_function RETURN REF_CURSOR;
FUNCTION test_function2 RETURN varchar2;
PROCEDURE test_procedure;
PROCEDURE test_procedure2;

END test_package;
/

---DIFINITION OF PACKAGE BODY---
CREATE OR REPLACE PACKAGE BODY test_package
IS

-- ===================================
-- test_function
-- -----------------------------------
FUNCTION test_function
RETURN REF_CURSOR

IS
INPUT_RESOURCE REF_CURSOR;
/*It must be INPUT_RESOURCE to use iBatis? or Spring? or sth else.*/

BEGIN
OPEN INPUT_RESOURCE
FOR
SELECT * FROM hoge_table WHERE hoge_col = 'hoge';
RETURN INPUT_RESOURCE;
END;

-- ===================================
-- test_function2
-- -----------------------------------
FUNCTION test_function RETURN varchar2 AS hoge_col_value varchar2(30);
BEGIN
select hoge_col into hoge_col_value from hoge_table;
RETURN hoge_col_value;
END;

-- ===================================
-- test_procedure
-- -----------------------------------
PROCEDURE test_procedure
IS
BEGIN
UPDATE hoge_table set hoge_col2 = 'aaa' where hoge_col = 'hoge';
END;

-- ===================================
-- test_procedure2
-- -----------------------------------
PROCEDURE test_procedure2
IS
BEGIN
INSERT INTO hoge_table (hoge_col, hoge_col2, hoge_col3) values ('hoge', 'piyo', '2008');
END;
-- ===================================

END test_package;
/


select test_package.test_function from dual;
select test_package.test_function2 from dual;
select test_package.test_procedure from dual;
select test_package.test_procedure2 from dual;

join types

■表の外部結合
there are 4 types.

when join tableA and tableB as A.columA とB.columB;

■インナージョイン□INNER JOIN
・AかつBにあるレコード

■レフトジョイン□LEFT JOIN
・AかつBにあるレコード
+
・AにあってBにないレコード

■ライトジョイン□RIGHT JOIN
・AかつBにあるレコード
+
・BにあってAにないレコード

■アウタージョイン□OUTER JOIN
・AかつBにあるレコード
+
・AにあってBにないレコード
+
・BにあってAにないレコード


ref:
http://www.genba-oriented.jp/training/spring_base/dl/spring_base.pdf

foreign key

create table tableone
(
calone char(4),
caltwo char(25),
calthree char(30),
primary key (calone)
);

insert into tableone (calone, caltwo, calthree)
values
('sth', 'sth', 'sth');

create table anothertable
(
firstcol int primary key,
secondcal char(20),
thirdcal char(20),
foreign key (firstcol) references tableone (calone)
);

insert into anothertable (firstcol, secondcol, thirdcol) values ('sth', 'nth', null, 'nth');

SQLコマンド&SQL関数

□SQLコマンド&SQL関数

# ABS ― 数値式の絶対値を返す汎用スカラ数値関数です。
# ACOS ― 指定されたコサインのアークコサインを、ラジアン表示で返すスカラ数値関数です。
# ALL ― クエリ内のすべての値を比較します。
# %ALPHAUP ― 非推奨。アルファベット文字を、ALPHAUP 照合形式に変換するケース変換関数です。
# ALTER TABLE ― テーブルを変更します。
# ALTER USER ― ユーザ・パスワードを変更します。
# ALTER VIEW ― ビューを変更します。
# ANY ― クエリ内の値を比較します。
# ASCII ― 文字列式の最初の文字 (左端にある文字) を整数 ASCII コード値として返す、スカラ文字列関数です。
# ASIN ― 与えられた角度の正弦のアークサインを、ラジアン表示で返すスカラ数値関数です。
# ATAN ― 与えられた角度の三角関数のアーク・タンジェントを、ラジアン表示で返すスカラ数値関数です。
# AVG ― 指定した列の値の平均値を返す集約関数です。
# CALL ― ストアド・プロシージャを実行します。
# CASE ― 条件に従って、特定の値の組み合わせを返します。
# CAST ― 与えられた式を、特定のデータ型に変換する汎用 SQL 関数です。
# CEILING ― 指定された数値式に等しいか、より大きい最小整数値を返すスカラ数値関数です。
# CHAR ― 文字列式で指定された ASCII コード値を持つ文字を返す、スカラ文字列関数です。
# CHARACTER_LENGTH ― 文字列式の文字数を返す汎用 SQL 関数です。
# CHAR_LENGTH ― 文字列式の文字数を返す汎用 SQL 関数です。
# %CHECKPRIV ― 指定の特権がユーザにあるかどうかを確認します。
# CLOSE ― カーソルをクローズします。
# COALESCE ― NULL でない最初の式の値を返す汎用 SQL 関数です。
# COMMIT ― トランザクションの終了を表します。
# CONCAT ― 2 つの文字列式を連結した結果として、文字列を返すスカラ文字列関数です。
# CONVERT ― 与えられた式を、特定のデータ型に変換する汎用スカラ・システム関数です。
# COS ― 与えられた角度の三角関数のコサインを、ラジアン表示で返すスカラ数値関数です。
# COT ― 与えられた角度の三角関数のコタンジェントを、ラジアン表示で返すスカラ数値関数です。
# COUNT ― テーブルや特定の列から、行の数を返す集約関数です。
# CREATE FUNCTION ― クラス内でメソッドとして関数を生成します。
# CREATE INDEX ― テーブルにインデックスを定義します。
# CREATE METHOD ― クラスにメソッドを生成します。
# CREATE PROCEDURE ― SQL ストアド・プロシージャとして公開されるメソッドまたはクエリを生成します。
# CREATE QUERY ― クエリを作成します。
# CREATE ROLE ― ロールを生成します。
# CREATE TABLE ― テーブルを作成します。
# CREATE TRIGGER ― トリガを作成します。
# CREATE USER ― ユーザ・アカウントを作成します。
# CREATE VIEW ― ビューを作成します。
# CURDATE ― 現在の日付を返す、スカラ日付/時間関数です。
# CURRENT_DATE ― 現在の日付を返す、汎用 SQL 日付/時刻関数です。
# CURRENT_TIME ― 現在のローカル時刻を返す、汎用日付/時刻関数です。
# CURRENT_TIMESTAMP ― 現在の日付と時刻を返す、汎用日付/時刻関数です。
# CURTIME ― 現在のローカル時刻を返す、スカラ日付/時刻関数です。
# DATABASE ― データベース名の修飾子を返すスカラ文字列関数です。
# DATEADD ― 日付部分 (時刻や日など) の数値を、指定されたタイムスタンプに加算することによって計算された日付を返す、汎用日付/時刻関数です。
# DATEDIFF ― 2 つの日付間の間隔を指定された時間単位の整数で返す、汎用日付/時刻関数です。
# DATENAME ― 日付/時刻式の指定された部分の値名を含む CHARACTER STRING を返す、汎用日付/時刻関数です。
# DATEPART ― 日付/時刻式の指定された部分の値を表す整数を返す、汎用日付/時刻関数です。
# DAYNAME ― 与えられた日付式の曜日名を含む文字列を返す、スカラ日付/時刻関数です。
# DAYOFMONTH ― 与えられた日付式で、その月の日付を 1 から 31 までの整数値で返す、スカラ日付/時刻関数です。
# DAYOFWEEK ― 与えられた日付式で、その週の曜日を 1 から 7 までの整数値で返す、スカラ日付/時刻関数です。
# DAYOFYEAR ― 与えられた日付式の日付がその年の日付に対応する整数値を返す、スカラ日付/時刻関数です。
# DECLARE ― カーソルを宣言します。
# DECODE ― 与えられた式を評価し、指定された値を返す汎用 SQL 関数です。
# DELETE ― テーブルの行を削除します。
# DROP FUNCTION ― 関数を削除します。
# DROP INDEX ― インデックスを削除します。
# DROP METHOD ― メソッドを削除します。
# DROP PROCEDURE ― プロシージャを削除します。
# DROP QUERY ― クエリを削除します。
# DROP ROLE ― ロールを削除します。
# DROP TABLE ― テーブルおよびデータを削除します。
# DROP TRIGGER ― トリガを削除します。
# DROP USER ― ユーザ・アカウントを削除します。
# DROP VIEW ― ビューを削除します。
# %EXACT ― 文字列を EXACT 照合フォーマットに変換するケース変換関数です。
# EXISTS ― 要素の存在をチェックします。
# EXP ― 与えられた数値式の Log 指数値 (基数 e) を返す、スカラ数値関数です。
# %EXTERNAL ― DISPLAY 形式の式を返す汎用形式変換関数です。
# $EXTRACT ― 文字列から、指定された位置にある文字を抽出する汎用 SQL 関数です。
# FETCH ― カーソルからデータを取り出します。
# $FIND ― 値を基準に部分文字列を特定し、文字列内でのその部分文字列の末尾位置を表す整数を返す汎用 SQL 関数です。
# FLOOR ― 与えられた数値式に等しいか、より小さい最大整数値を返す、スカラ数値関数です。
# FROM ― クエリの対象となる 1 つ以上のテーブルを指定する SELECT 節です。
# GETDATE ― 現在の日付と時刻を返す、汎用日付/時刻関数です。
# GRANT ― ユーザまたはロールに特権を与えます。
# GROUP BY ― 1 つ以上の列に基づいて、クエリの結果行をグループ化する SELECT 節です。
# HAVING ― 1 つ以上の制限条件を指定する SELECT 節です。
# HOUR ― 与えられた日付/時刻式内で時間の構成要素に対応する 0 から 23 までの整数値を返す、スカラ日付/時間関数です。
# IFNULL ― NULL テストを行い、適切な式を返す汎用スカラ関数です。
# INSERT ― テーブルに 1 行以上の新しい行を追加します。
# %INTERNAL ― LOGICAL 形式の式を返す汎用形式変換関数です。
# INTO ― 選択された値をホスト変数に格納するように指定する SELECT 節です。
# ISNULL ― NULL テストを行い、適切な式を返す汎用 SQL 関数です。
# JOIN ― 2 つのテーブルのデータを基にして、テーブルを作成します。
# LCASE ― 文字列内のすべての大文字を、小文字に変換するスカラ文字関数です。
# LEFT ― 文字列式の最初 (一番左) の文字から、指定された数の文字を返す文字列関数です。
# LENGTH ― 文字列式の文字の数を返す文字列関数です。
# $LENGTH ― 文字列内の文字数、または文字列内の区切られた部分文字列数を返す汎用 SQL 関数です。
# LIST ― コンマで区切られたリストの値を生成する集約関数です。
# $LIST ― リスト内の要素を返す汎用 SQL 関数です。
# $LISTDATA ― 指定された要素が存在し、データ値を持つかどうかを示す値を返す汎用 SQL 関数です。
# $LISTFIND ― 指定されたリストで、要求された値を検索する汎用 SQL 関数です。
# $LISTGET ― リスト内の要素または指定された既定値を返す汎用 SQL 関数です。
# $LISTLENGTH ― 指定されたリストの要素数を返す汎用 SQL 関数です。
# LOG ― 与えられた数値式の自然対数を返す、スカラ数値関数です。
# LOG10 ― 与えられた数値式の対数 (底 - 10) を返す、スカラ数値関数です。
# LOWER ― 文字列式内のすべての大文字を、小文字に変換する汎用 SQL 関数です。
# LTRIM ― 先頭の空白を削除した文字列を返す文字列関数です。
# MAX ― 指定された列内の最大データ値を返す集約関数です。
# MIN ― 指定された列内の最小データ値を返す集約関数です。
# MINUTE ― 与えられた日付/時刻式で、分の構成要素に対応する 0 から 59 までの整数値を返す、スカラ日付/時刻関数です。
# MOD ― ある数を別の数で割った係数 (剰余) を返す、スカラ数値関数です。
# MONTH ― 与えられた日付式で、その月を 1 から 12 までの整数値として返す、スカラ日付/時刻関数です。
# MONTHNAME ― 与えられた日付式の月名を含む文字列を返す、スカラ日付/時刻関数です。
# - (負の数) ― 式を数値の負の数として返す、単項演算子です。
# NOW ― 現在の日付と時刻を返す、スカラ日付/時刻関数です。
# NULLIF ― 式が真であれば NULL を返す汎用 SQL 関数です。
# NVL ― NULL テストを行い、適切な式を返す汎用 SQL 関数です。
# %ODBCIN ― LOGICAL 形式の式を返す汎用形式変換関数です。
# %ODBCOUT ― ODBC 形式の式を返す汎用形式変換関数です。
# OPEN ― カーソルをオープンします。
# ORDER BY ― 結果セットでの行のソートを指定する SELECT 節です。
# PI ― 円周率の定数値を返すスカラ数値関数です。
# $PIECE ― 指定された部分文字列を返す汎用 SQL 関数です。
# POSITION ― 文字列内にある文字列式の位置を返す汎用 SQL 関数です。
# + (正の数) ― 式を数値の正の数として返す単項演算子です。
# POWER ― 与えられた式の値を、指定の数で累乗して返すスカラ数値関数です。
# QUARTER ― 与えられた日付式で、その年の四半期を 1 から 4 までの整数値として返す、スカラ日付/時刻関数です。
# REPEAT ― 指定した回数だけ文字列を繰り返す汎用スカラ関数です。
# REVOKE ― ユーザまたはロールから特権を削除します。
# RIGHT ― 文字列式の末尾 (最右端) の文字から、指定された数の文字を返す、スカラ文字列関数です。
# ROLLBACK ― トランザクションをロール・バックします。
# ROUND ― 指定した桁数で数値を丸める汎用スカラ数値関数です。
# RTRIM ― 末尾の空白を削除した文字列を返す文字列関数です。
# SAVEPOINT ― トランザクション内のポイントを指定します。
# SECOND ― 与えられた日付/時刻式で、秒の構成要素に対応する 0 から 59 までの整数値を返す、スカラ日付/時刻関数です。
# SELECT ― データベース内のテーブルから行を検索します。
# SET OPTION ― 実行オプションを設定します。
# SET TRANSACTION ― トランザクションのパラメータを設定します。
# SIGN ― 与えられた数値式の正負符号を返す、数値関数です。
# SIN ― 与えられた角度の三角関数のサインを、ラジアン表示で返す、スカラ数値関数です。
# SOME ― クエリ内の値を比較します。
# SPACE ― 文字列タイプのスペースを返す汎用 SQL 関数です。
# %SQLSTRING ― 値を文字列としてソートする照合関数です。
# %SQLUPPER ― 値を大文字の文字列としてソートする照合関数です。
# SQRT ― 与えられた数値式の平方根を返す、スカラ数値関数です。
# START TRANSACTION ― トランザクションの開始を表します。
# STRING ― 式を文字列に変換して連結する関数。
# %STRING ― 非推奨。文字列を STRING 照合フォーマットに変換するケース変換関数です。
# SUBSTR ― 指定された文字式から得られた部分文字列を返す汎用 SQL 文字列関数です。
# SUBSTRING ― より大きい文字列から部分文字列を返す文字列関数です。
# SUM ― 指定の列の値の合計値を返す、集約関数です。
# TAN ― 与えられた角度の三角関数のタンジェントを、ラジアン表示で返すスカラ数値関数です。
# TIMESTAMPADD ― 指定されたタイムスタンプに、特定タイプの間隔の数を加えることで計算された、新しいタイムスタンプを返すスカラ数値関数です。
# TIMESTAMPDIFF ― 2 つのタイムスタンプ間の間隔を指定されたタイプの整数値で返す、スカラ数値関数です。
# TO_CHAR ― 日付や値数を文字列へ変換する汎用 SQL 文字列関数です。
# TO_DATE ― フォーマットされた文字列を日付 (あるいは日付をフォーマットされた文字列) に変換する汎用 SQL 文字列関数です。
# TO_NUMBER ― 与えられた文字列式を NUMBER データ型の値に変換する、汎用 SQL 文字列関数です。
# TRIM ― 先頭や末尾の文字列を削除する文字列を返す、汎用 SQL 文字列関数です。
# TRUNCATE ― 指定された桁で数値を切り捨てるスカラ数値関数。
# UCASE ― 文字列内のすべての小文字を、大文字に変換するスカラ文字列関数です。
# UNION ― 1 つ以上の SELECT 文を組み合わせます。
# UPDATE ― 指定されたテーブルの指定された列に新しい値を設定します。
# UPPER ― お勧めしません。アルファベット文字を UPPER 照合フォーマットに変換するケース変換関数です。
# %UPPER ― お勧めしません。アルファベット文字を UPPER 照合フォーマットに変換するケース変換関数です。
# USER ― 現ユーザのユーザ名を返す汎用スカラ関数です。
# VALUES ― フィールド内で使用するデータ値を指定します。
# WEEK ― 与えられた日付式で、その年の週を 1 から 53 までの整数値として返す、スカラ日付/時刻関数です。
# WHERE ― 1 つ以上の制限条件を指定する SELECT 節です。
# WHERE CURRENT OF ― カーソルを使用している現在の行を指定する節です。
# XMLAGG ― 値を連結した文字列を作成する集約関数です。
# XMLCONCAT ― XML 要素を連結する関数です。
# XMLELEMENT ― 指定された列から返された値にタグを付ける関数です。
# XMLFOREST ― 複数の列から返された値にタグを付ける関数です。
# YEAR ― 与えられた日付式で年を返す、スカラ日付/時刻関数です。

==================================================
ex.
INSERT INTO SAMPLE_TABLE (ID, DATETIME, ETC) VALUES (1, CURDATE, 'STH');
==================================================


ref:
http://www.intersystems.co.jp/support/csp/rsql/rsql.html

Top

HOME

09 | 2008/10 | 11
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

QR

name:
mail:
title:
body:

N/A