sql >> データベース >  >> RDS >> Oracle

OracleSQLでの複雑なIFステートメントの使用

    ドキュメント をお読みください 仮想列:

    CREATE TABLE Rent_Band
    (
        Plot_ID NUMBER(3),
        Band VARCHAR(1) AS
           (CASE WHEN Owner_Category = 'Council' AND Sheds ='No' THEN 'A'
                WHEN Owner_Category = 'Private' AND Water_Supply ='Yes' THEN 'D'
                WHEN Owner_Category = 'Council' AND Water_Supply ='No' AND Sheds ='Yes' THEN 'B'
                WHEN Owner_Category = 'Private' AND Water_Supply ='No' AND Sheds ='No' THEN 'B'
           ELSE 'C' END),
        Rent_Charge NUMBER(4), 
        Owner_Category VARCHAR(10) CONSTRAINT Checking_Owner_Category CHECK((Owner_Category='Private') OR (Owner_Category='Council')), 
        Sheds VARCHAR(3) CHECK((Sheds='Yes') OR (Sheds='No')), 
        Water_Supply VARCHAR(3) CHECK((Water_Supply='Yes') OR (Water_Supply='No'))
    )
    

    ところで、私は強くお勧めします:

    • bitを使用する Yesの代わりにフィールド /No Shedsの制約 およびWater_Supply (スペースとオーバーヘッドのチェックの制約を節約し、ほとんどのアプリ言語でブール値に直接変換されます)
    • Owner_Categoryのルックアップテーブルを使用する 基本的に同じ理由で文字列制約の代わりに



    1. 挿入された行だけを更新するトリガー

    2. 1つのSQLスクリプトで子と親の行を削除します

    3. 主キーを作成してインデックスを作成することに何か利点はありますか?

    4. git&phpfogを使用したPHPマルチデータベース環境