データベースシステム概念ノートCH 4(下)


データベースシステム概念ノートCH 4(下)


第四章:中級SQL


4.4整合性制約
整合性制約は、データベースに対する認可されたユーザーの変更がデータの一貫性を損なわないことを保証します.
1つの関係の制約:
  • not null
    -- 
    name varchar(20) not null
    budget numeric(12,2) not null
    
    SQLリレーショナルモードのプライマリコードに空の値が表示されないことを禁止
  • unique
    unique(A1,A2...,An)
    -- 
    -- 
    
  • check()
    create table section (
    course_id varchar (8),
    sec_id varchar (8),
    semester varchar (6),
    year numeric (4,0),
    building varchar (15),
    room_number varchar (7),
    time slot id varchar (4),
    primary key (course_id, sec_id, semester, year),
    check (semester in (’Fall’, ’Winter’, ’Spring’, ’Summer’)) 
        -- 
    );
    
    参照整合性は、ある関係において与えられた属性の値が他の関係の特定の属性セットの値にも現れることを保証するために使用される.外部コード制約:
    dept_name varchar(20) references department  -- , department
    -- , , 
    
    -- :
    --on delete cascade    on update cascade
    -- :
    dept_name varchar(20) references department 
    		on delete cascade
    		on update cascade,
    		
    -- , 
    
  • 4.5 SQLのデータ型とモード
    日付と時刻のタイプ
  • date:カレンダー日付、年(4桁)、月、日
  • を含む
  • time:時間、分、秒を含む1日の時間.明示的な宣言time§は、秒の小数点以下の桁数
  • を示す.
  • timestamp:dateとtimeの組合せと時間に関するいくつかの関数:
  • cast e as t:文字列eをタイプtに変換し、tはdate、time、timestampの一種であってもよく、もちろん文字は規範に合致する必要がある.
  • extract(field from d)は、year、month、day、hour、minute、secondのいずれかであってもよいdateまたはtimeから個別のドメインを提案する.
  • current_dateは現在の日付を返し、current_timeは現在の時刻を返し、
  • xとyがともに時間タイプである場合、x-yは両者の時間間隔
  • を表す.
    デフォルト
    SQLでは、属性のデフォルト値を設定できます.操作は次のとおりです.
    create table student
    (ID varchar (5),
    name varchar (20) not null,
    dept_name varchar (20),
    tot_cred numeric (3,0) default 0,
    primary key (ID));
    

    ここにいるよcredのデフォルト値は0です.これは、作成時に値を割り当てない場合、デフォルトは0です.
    大きいオブジェクトタイプ
  • blob:バイナリデータの大きいdオブジェクトデータ型
  • clob:文字データ型の大オブジェクトデータ型
    book review clob(10KB)
    image blob(10MB)
    movie blob(2GB)
    
  • ユーザー定義タイプ
    -- 
    create type Dollars as numeric (12,2) final;
    -- 
    create table department
    (dept_name varchar (20),
    building varchar (15),
    budget Dollars);
    
    -- 
    create domain person_name char(20) not null;
    
    create domain degree_level varchar(10)
    constraint degree_level_test
    check (value in (’Bachelors’, ’Masters’, ’Doctorate’));
    -- , , , 
    

    create tableの拡張
    -- , 
    create table temp_instructor like instructor;
    
    create table t1 as
    (select *
    from instructor
    where dept name= ’Music’)
    with data; 
    

    4.6ライセンス
    データの認可には、次のものが含まれます.
  • 読み出しデータselect
  • 新しいデータinsert
  • を挿入
  • 更新データupdate
  • 削除データdelete
  • 権限の付与と回収:
    grant文は、権限を付与するために使用されます.
    grant < >    
    on < >
    to < > 
    

    権限付与の例:
    -- 
    grant  select on department to Amis;
    -- 
    grant update(budget) on department to Amis;
    

    revoke回収権限:
    revoke < >    
    on < >
    from < > 
    
    -- 
    revoke  select on department from Amis;
    -- 
    revoke update(budget) on department from Amis;
    

    ロール#ロール#
    ロールセットを作成し、ロールに権限を付与できます.
    -- 
    creat role instructor;
    -- 
    grant select on takes
    to instructor;
    -- , 
    grant dean to Amit;
    creat role dean;
    grant instructor to dean;
    grant dean to Satoshi;
    

    ビューの承認
    create view geo_instructor as
    (select *
    from instructor
    where dept_name = ’Geology’);
    The creator of the view must have select authorization on the instructor relation..
    grant select on geo_instructor to geo_staff
    

    権限の移行:
    grant select on department to Amit with grant option;
    -- Amit 
    

    権限の回収:
    revoke select on department from Amit, Satoshi restrict;
    --