1, 创建新用户,使用系统用户授权
createuser chrieu identified by 123456;
grantconnect,resource to chrieu;
grantcreate session to chrieu;
grantcreate sequence to chrieu;
grantcreate any index to chrieu;
grantcreate synonym to chrieu;
grantcreate view to chrieu;
2, 使用新建的用户登录,并创建表、视图、序列、索引和同义词,修改表结构
这是一个针对某出版社的出版物管理的3张表,分别为类别表、出版社表以及出版物表,
表名分别是:category 、publishers、titles,各表的字段名、字段的数据类型和描述如下:
表1 类别表:category
列名 描述 数据类型 备注
CategoryID 类别ID number 主键
CategoryName 类别名称 Varchar2(50) 非空
表2 出版社表:publishers
列名 描述 数据类型 备注
PubCode 出版社代码 Char(4) 主键
PubName 出版社名称 Char(50) 唯一约束
Phone 联系电话 Char(15)
Address 地址 Varchar2(100)
表3 出版物表:titles
列名 描述 数据类型 备注
TitleCode 出版物代码 Char(6) 主键
TitleName 出版物名称 Varchar2(80) 非空
Author 作者 Char(8) 非空
CategoryID 类别ID number 外键(自category)
PubCode 出版社代码 Char(4) 外键(自publishers)
Price 价格 number >0
PubDate 出版日期 Date
createtable category
(
CategoryID number primary key,
CategoryName varchar2(50) not null
)
create table publishers
(
PubCode char(4) primary key,
PubName char(50) unique,
Phone char(15),
Address varchar2(100)
)
create table titles
(
TitleCode char(6) primary key,
TitleName varchar2(80) not null,
Auther char(8) not null,
CategoryID number constraint FK_CIDreferences category(categoryID),
PubCode char(4) constraint FK_PC references publishers(PubCode),
Price number check(Price>0),
PubDate date
)
使用新用户登录,并完成如下操作:
1)在新用户用中按要求创建以上3张数据表
2)修改表结构
a,修改表category,增加一列tele 字符类型 长度是20 ,命令执行后查看表结构。
Alter table category add tele char(20);
b,修改表titles,修改author字段,使其长度为15个字符,然后查看表结构
Alter table titles modify auther char(15);
c,修改表publishers,修改Phone字段,使其长度为20个 字符,查看表结构。
Alter table publishers modify Phonechar(20);
d,删除category表的tele列,查看表结构。
Alter table category drop column tele;
3) 创建序列、索引和同义词
a,创建序列cate_seq,初始值为1,增量为1,其他参数默认(即可以不指定)
create sequence cate_seq
increment by 1
start with 1;
b,在titles表的TitleName列上创建索引title_idx.
create index title_idx on titles(TitleName);
c,给titles表创建私有同义词title
create synonym title for titles;
d,使用数据字典查看所创建的表、序列、索引和同义词
select object_name,object_type fromuser_objects;
4, 数据操作(增加、修改和删除数据)
1) 增加数据:在3个表上分别插入以下数据:
category表:使用上题创建的序列在category表插入数据
INSERT INTOcategory VALUES(cate_seq.nextval,'C#基础');
INSERT INTOcategory VALUES(cate_seq.nextval,'数据库');
INSERT INTOcategory VALUES(cate_seq.nextval,'网站开发');
INSERT INTOcategory VALUES(cate_seq.nextval,'计算机基础理论');
INSERT INTOcategory VALUES(cate_seq.nextval,'JAVA');
INSERT INTOcategory VALUES(cate_seq.nextval,'电子商务');
INSERT INTOcategory VALUES(cate_seq.nextval,'移动互联网');
publishers表:
insert into publishers values('ABYC','白云出版社','020-87056743','广州市市政大街10号');
insert into publishers values('AXXW','新希望出版社','020-84756554','广州市天府大道22号');
insert into publishers values('BDDA','东大阿尔出版社','024-73217876','沈阳市铁西路33号');
insert into publishers values('DDXC','电信出版社','0755-67866755','深圳市深东路120号');
insert into publishers values('DGZC','贵族出版社','0755-56564367','深圳市深东路1号');
insert into publishers values('EMDC','牡丹出版社','023-67548956','重庆火锅街10号');
insert into publishers values('HDJT','大家庭出版社','010-67573321','北京市部外大街3号');
Titles表
insert into titles values('T001','C#开发技巧','王江江',1,'ABYC',34.50,'01-6月-11');
insert into titles values('T002','网页设计与制作教程','朱丽叶',3,'BDDA',35.00,'22-3月-09');
insert into titles values('T003','C#设计模式','刘丽',1,'DGZC',50.00,'26-12月-10');
insert into titles values('T004','数据库原理','张田田',2,'AXXW',45.30,'20-2月-08');
insert into titles values('T005','Java程序设计基础','麦考林',5,'DGZC',32.00,'12-3月-10');
insert into titles values('T006','Oracle数据库初学者指南','斯考特',2,'BDDA',65.20,'17-5月-09');
insert into titles values('T007','Android程序设计与开发','张楚贵',7,'AXXW',55.00,'03-3月-12');
注意:日期数据可以和图中显示的不同
2) 修改和删除表数据:
a, 修改publishers数据:修改“白云出版社”的电话为020-33338888,地址为广州市革新路100号,提交。
update publishersset phone='00-33338888' where pubname='白云出版社';
b, 修改titles表数据:将“数据库原理”一书价格从45.30调到49元,提交
update titlesset price='49' where titlename='数据库原理';
c,删除titles表数据:删除TitleID是T008和 T007的出版
物数据,使用select查看后回滚。
deletefrom titles where TitleCode='T007';
3) 创建视图
a, 创建视图view1,查看出版物表的出版物名称、作者和价格。
create view titles_view1
as
select TitleName,Auther,Price from titles;
select * from titles_view1;
b, 创建视图view2,查看2011年以后出版的出版物的名字、出版社名称和出版日期。
createview titles_view2
as
select p.pubname,t.titleName,t.price frompublishers p full join
titles t on p.pubcode = t.pubcode
where t.pubdate > to_date('20110101','YYYYMMDD')