数据库学习之旅——实验1

学习数据库,首先要学会一些最基本的东西,比如创建表等等。。。。。。

本节实验主要内容包括:

· 使用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。

(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的三个属性列:CITY,QUANTITY,PRICE。

(4)为以上4个建立了各自的按主键增序排列的索引。

(5)取消步骤四建立的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;


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值