Recursive Relationships

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 one point in time. One-to-many: It is common to track the employment “food chain” of  […]

Read More…

About Count

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 […]

Read More…

Cursors in SQL

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 > $15 by 10% Here is a set-oriented solution: update titles set price = price […]

Read More…

View – With Check Option

Creating a view using With Check Option will restrict the queries to only those rows directly visible by the view. http://www.sqlteam.com/FORUMS/topic.asp?TOPIC_ID=66019 It prevents row from dissappearing from the view implementing this option. drop table  T100 go drop view  VT100 go Create table T100 (A int) GO Create view VT100 AS (SELECT * FROM T100 WHERE […]

Read More…

Basic Rules of Normalization

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 relevant.Remove Unnormalized relation ->(Remove repeating and multivalued atrributes)-> First normal form relation ->(Remove partially dependent […]

Read More…

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

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つの利用方法があります。 […]

Read More…

CASE式のススメ

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式      CASE sex      WHEN ‘1’ THEN ‘男’      WHEN ‘2’ THEN ‘女’      ELSE ‘その他’ END      –検索CASE式      CASE WHEN sex = ‘1’ THEN ‘男’          WHEN sex = […]

Read More…

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

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のディレクトリを作成します。 2. 作成したtemporaryディレクトリに Oracle RDBMS Server CD の内容をコピーします。 3. 作成したディレクトリにある symcjit.dll というファイル名を探して 見つかったものすべてを symcjit.old に変更します。 4. installwin32 以下のsetup.exeを実行し、Oracle 8.1.x.のインストールを行って下さい。 […]

Read More…