Recursive Relationships

Posted by & filed under DATABASE, ORACLE, SQLSERVER.

Recursive relationships: relationships exist between entity instances of the same type.

One-to-one: If we were to track which employees were married to other employees, we would expect each to be married to either zero or one other employee at any …

多对多必须通过单独的一张表来表示

Posted by & filed under DATABASE, ORACLE, SQLSERVER.

如班级和教师的关系由三张表来表示:班级表,教师 及 班级教师表

In particular, the logical model does not contain any many-to-many relationships. There is a simple rationale for this difference – relational databases do not directly support many-to-many relationships, so they must be transformed using an intersection entity.…

About Count

Posted by & filed under ORACLE, SQLSERVER.

select count(*) FROM [AdventureWorks].[Person].[Contact]
返回表中所有的记录的个数

select COUNT(MiddleName) from [AdventureWorks].[Person].[Contact]
返回字段中,值非空的记录的个数(重复的也算进去的) 

select COUNT(distinct MiddleName) from [AdventureWorks].[Person].[Contact]
返回字段中不重复且非空的记录的个数

Result:
19972
11473
70…

Cursors in SQL

Posted by & filed under DATABASE, ORACLE, SQLSERVER.

SQL was designed as a set-oriented processing language. Some business rules( or poor physical design) require performing actions on row-by-row basis. Consider the following example:
. Increase the price of books <=$15 by 15%
. Decrease the price of books …

Basic Rules of Normalization

Posted by & filed under DATABASE, ORACLE, SQLSERVER.

Without going into a dissertation on data modeling(itself a subject of many full-length treatises), tables should follow basic rules of normalization:

Avoid duplicate data, avoid repeating groups in tables, and only put data in tables where the information is directly

SQL の CASE 式って知ってますか?

Posted by & filed under ORACLE.

SQL の CASE 式って知ってますか? :: Drk7jp:
今日、同僚から MySQL って CASE 式を SQL の中に記述できましたっけ?と聞かれて、SQL 文に CASE – when 式を記述できることを初めて知りました。PL/SQL でのみ有効な構文かと勘違いしてました。

CASE 式はSQL-92 で標準に取り入れられており、意外と歴史は古いです。SQL99 からかと思いました。しかしながら、超便利な CASE 式を知っている人は意外と少ないと思います。Oracle なら同様の処理が記述できる DECODE 関数の方がメジャーですね。実際僕もこちらを用いて業務 SQL を書いてました。

が、CASE 式の方が明らかに高機能でした。DECODE 関数を使っているOracleユーザには、是非CASE 式への乗り換えを勧めます。CASE 式には下記の通り4つの利用方法があります。…

CASE式のススメ

Posted by & filed under ORACLE.

CASE式のススメ:

CASE式のススメ

 CASE式は SQL-92 で標準に取り入れられた、割と新しい道具です。そのため、便利な割に真価があまり知られておらず、利用されていなかったり、CASE式の簡略版である DECODE や COALESCE などの関数で代用されていたりします。しかしセルコが「SQL-92 で追加された中で最も有用かもしれない」[1]と言うように、CASE式を活用すると SQL でできることの幅がぐっと広がり、書き方もスマートになります。特に、DECODE関数を使っている Oracle ユーザには、是非 CASE式への乗り換えを勧めます[2]
 以下では、CASE式の魅力の一端を解説します。例によって『プログラマのためのSQL 第2版』から多くを受け売っています。

 稼働環境:Oracle(9i以降)、SQLServer、DB2、PostgreSQL、MySQL
  

0.導入:CASE式とは
1.既存のコード体系を新しい体系に変換して集計する
2.異なる条件の集計を一つのSQLで行なう
3.CHECK制約で二つの列の相関関係を定義する
4.条件を分岐させたUPDATE
5.テーブル同士のマッチング
6.CASE式の中で集約関数を使う
7.やってはいけない間違い

0.導入:CASE式とは

 まず基本的な文法から解説しましょう。CASE式の書式には、単純CASE式(simple case)と検索CASE式(searched case)という二通りがあります。それぞれ、次のように書きます。

     –単純CASE式

Pentium 4搭載マシンでOracle Universal Installerが起動しない[更新版]

Posted by & filed under ORACLE.

http://support.oracle.co.jp/open/owa/external_krown.f_detail?c_criterion=%7BOracle+Universal+Installer%7D%26%7Bpentium4%7D&i_key=CyberOOW&c_document_id=39224

内容:

[問題]
CPUにPentium4互換プロセッサを搭載したマシンで Oracle Universal Installer(OUI)が
立ち上がらず、インストールを行うことができません。


[原因]
この問題は、Pentium4互換(*) のCPUを搭載したマシンにおける、
Java JITライブラリの不具合が原因で発生します。

なお、この問題は、OUI 1.7.x (RDBMS 8.1.x に付属のインストーラ)にて
発生する問題であり、9i RDBMS 付属の OUI (2.0.1.6.0) では解消されております。
(iAS/9iAS でのPentium 4 サポートについては [文書番号:24345] を参照してください。)

[回避策]
回避の手順は以下の通りとなります。
(手順)
1. temporaryのディレクトリを作成します。