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

Posted Henry Zheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库学习之旅——实验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的主要内容,如果未能解决你的问题,请参考以下文章

sql 升序降序排列

sql查询降序和升序的问题

字符串String 升序和降序 Vue检测数据的原理

oracle 默认是升序还是降序

如何实现JSP列表升序或者降序

SQL语言中的升序,降序,是怎么会事