データベース学習の旅——実験1

3246 ワード

データベースを学ぶには、まずテーブルの作成など、最も基本的なことを学ばなければなりません....
本節の実験の主な内容は以下のとおりである.
・CREATE文を使用して基本テーブルを作成する.
・基本テーブルの定義の変更、列の追加、列の削除、列のデータ型の変更.
・テーブルの昇順降順インデックスを作成する.
・テーブル、テーブルのインデックスまたはテーブルの制約を解除します.
実験要求:
(1)SQL文を使用してリレーショナル・データベース表を作成する:人員表PERSON(P#,PNAME,PAGE,PGENDER)、ルーム表ROOM(R#,RNAME,RAREA)、表P-R(P#,R#,DATE).ここでP#は表PERSONのプライマリ・キーであり、一意性制約があり、PAGEは制約がある:18より大きい;R#は表ROOMのプライマリ・キーであり、一意性制約がある.表P-RのP#,R#は外部キーである.
(2)表PERSONを変更し、属性PTYPE(タイプはCHAR、長さは10)を追加し、PAGEが18より大きい制約を解除する.表ROOM割込み空腹属性RNAMEのデータ型を長さ30に変更する.
(3)テーブルROOMの属性RAREAを1つ削除する.
(4)表PRの取消し
(5)ROOMテーブルにR#降順のインデックスを作成する
(6)PERSONテーブルにP#昇順のインデックスを作成する
(7)テーブルPERSONのPNAME昇順で一意性インデックスを作成する
(8)PERSONテーブルP#昇順索引の取消し
以下は実験の答えです.
create table PERSON
(P# char(20) not null unique,
Pname char(20) not null,
Page int,
Pgender char(10) ,
primary key(P#),check (Page>18)
);
create table ROOM
(R# char(20) not null unique,
Rname char(20),
Rarea float(10),
primary key(R#)
);
create table PR
(P# char(20),
R# char(20),
Date datetime,
primary key (P#,R#),
foreign key (P#) references PERSON(P#),
foreign key (R#) references ROOM(R#)
);

drop table PERSON;
drop table ROOM;
drop table PR;
alter table PERSON add Ptype char(10);
alter table PERSON drop constraint CK_PERSON_Page_78B3EFCA;
alter table ROOM alter column Rname char(30);
alter table ROOM drop column Rarea;
create index XCNO on ROOM(R# desc);
create index XSNO on PERSON(P# asc);
create unique index RNUA on PERSON(Pname asc);
drop index PERSON.XSNO;

***以上の実験について、以下の追加練習を行います.
(1)データベーステーブルCUSTOMERS(CID,CNAME,CITY,DISCNT)、データベースAGENTS(AID,ANAME,CITY,PERCENT)、データベーステーブルPRODUCTS(PID,PNAME)を作成する.ここでCID,AID,PIDはそれぞれ各テーブルのプライマリキーであり、一意性制約を有する.
(2)データベーステーブルORDERS(ORDNA,MONTH,CID,AID,PID,QTY,DOLLARS)を作成し、ここで、ORDNAはプライマリキーであり、一意性制約を有し、CID,AID,PIDは外部キーであり、それぞれテーブルCUSTOMERSのCIDフィールド、テーブルAGENTSのAIDフィールド、テーブルPRODUCTSのPIDワードセグメントを参照する.
(3)データベーステーブルPRODUCTSの3つの属性列:CITY,QUANTITY,PRICEを追加する.
(4)は、以上の4つのそれぞれのプライマリ・キー・インクリメンタル配列が確立されたインデックスである.
(5)ステップ4で作成した4つのインデックスをキャンセルする.
以下は練習の答えです.
create table CUSTOMERS
(CID char(20) not null unique,
AID char(20),
PID char(20),
DISCNT int,
primary key (CID)
);
create table AGENTS
(AID char(20) not null unique,
ANAME char(20),
CITY char(20),
"PERCENT" float,
primary key (AID)
);
create table PRODUCTS
(PID char(20) not null unique,
PNAME char(20),
primary key (PID)
);
create table ORDERS
(ORDNA char(20) not null unique,
"MONTH" int,
CID char(20),
AID char(20),
PID char(20),
QTY int,
DOLLARS float,
primary key (CID,AID,PID),
foreign key (CID) references CUSTOMERS(CID),
foreign key (AID) references AGENTS(AID),
foreign key (PID) references PRODUCTS(PID)
);

alter table PRODUCTS add CITY char(20);
alter table PRODUCTS add QUANTITY char(20);
alter table PRODUCTS add PRICE char(20);
create index XCON on CUSTOMERS(CID asc);
create index XAON on AGENTS(AID asc);
create index XPON on PRODUCTS(PID asc);
create index XOON on ORDERS(ORDNA asc);
drop index CUSTOMERS.XCON;
drop index AGENTS.XAON;
drop index PRODUCTS.XPON;
drop index ORDERS.XOON;
--******   :     PRODUCTS  CITY  ?(  :  )
alter table PRODUCTS drop column CITY;