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
多对多必须通过单独的一张表来表示 如班级和教师的关系由三张表来表示:班级表,教师 及 班级教师表 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.… 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
OracleのUser-Defined Exceptionエラーの解決方法 utl_file_dirのセット方法 ①init.oraのUTL_FILE_DIR=’*’を追加する ②show parameters utl_file_dir Oracle8.1.7でテスト済み… 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