Oracle 课程设计源码

 创建主表空间:

create tablespace test
datafile 'D:\OracleSpace\test' size 20m
extent management local;

创建用户,使用主表空间(用户名:haige  密码:123456)

create user haige
identified by 123456
default tablespace test
quota 20m on test
temporary tablespace temp;

haige用户授予其create session权限

grant create session,create table to haige;

给用户创建存储过程的权限

grant create any procedure to haige;

给用户执行存储过程的权限

grant execute any procedure to haige;

给用户操作触发器的权限

grant create trigger to haige;

使用profile管理密码,失败三次,Oracle会自动锁定该账户

create profile lock_account limit
failed_login_attempts 3
password_lock_time 10;

alter user haige profile lock_account;

设置密码过期时间(控制用户的密码有效期为30天,密码宽限期为1天)

create profile password_life_time limit
password_life_time 30
password_grace_time 1;

创建4块表空间

SQL> create tablespace space01
  2  datafile 'D:\OracleSpace\space01' size 10m
  3  extent management local;

SQL> create tablespace space02
  2  datafile 'D:\OracleSpace\space02' size 10m
  3  extent management local;

SQL> create tablespace space03
  2  datafile 'D:\OracleSpace\space03' size 10m
  3  extent management local;

SQL> create tablespace space04
  2  datafile 'D:\OracleSpace\space04' size 10m
  3  extent management local;

使用haige用户创建数据表

create table user1(
user_id number(10) constraint user_pk primary key,
blog_id number(10) constraint blog_user_pk references blog(blog_id),
user_name varchar2(30) not null,
user_pwd varchar2(20) not null,
user_sex varchar2(6) not null,
user_email varchar2(50) not null,
user_picture blob,
user_basicInfo clob
);

create table blog(
 blog_id number(10) constraint blog_pk primary key,
 blog_title varchar2(50) not null,
 blog_logo varchar2(50) not null
 );
 create table category(
 category_id number(10) constraint category_pk primary key,
 blog_id number(10) constraint blog_category_pk references blog(blog_id),
 category_title varchar2(50) not null
 );
范围分区建表
create table article(
  article_id number(10) constraint article_pk primary key,
  article_random number(30) not null,
  category_id number(10) not null constraint article_category_pk references category(category_id),
  article_title varchar2(200) not null,
  article_date date default sysdate,
  article_content clob,
  article_summary clob,
  article_acessNum number(15)  default 0,
  artocle_reviewNum number(15) default 0
) partition by range(article_date)(
  partition part_01 values less than(to_date('2017-04-01','yyyy-mm-dd'))
 tablespace space01,
  partition part_02 values less than(to_date('2017-07-01','yyyy-mm-dd'))
 tablespace space02,
  partition part_03 values less than(to_date('2017-10-01','yyyy-mm-dd'))
  tablespace space03,
   partition part_04 values less than(maxvalue) tablespace space04
  );

散列分区建表
create table review(
  review_id number(10) constraint review_pk primary key,
  article_id number(10) not null constraint review_article_pk references article(article_id),
  review_content clob not null,
  review_datetime date default sysdate,
  user_id number(10) not null constraint review_user_pk references user1(user_id)
  ) partition by hash(review_id,review_datetime)
 (
   partition part_01 tablespace space01,
   partition part_02 tablespace space02,
   partition part_03 tablespace space03,
   partition part_04 tablespace space04
 );

create table album(
   album_id number(10) constraint album_pk primary key,
   user_id number(10) not null constraint album_user_pk references   user1(user_id),
   album_name varchar2(50) not null
 );

create table picture(
   picture_id number(10) not null constraint picture_pk primary key,
   picture_doc varchar2(50) not null,
   picture_file varchar2(60) not null,
   album_id number(10) not null constraint picture_album_pk references  album(album_id),
   picture_name varchar2(255) not null
 );

数据操作:

insert into blog(blog_id,blog_title,blog_logo) values(1,'海哥','图片1');

insert into category(category_id,blog_id,category_title) values(1,1,'烟台风光');

Insert into user1(user_id,blog_id,user_name,user_pwd,user_sex,user_email,user_basicInfo) values(1,1,'海哥','123456','男','1150979146@qq.com','一个积极向上的小伙');

insert into article(article_id,article_random,category_id,article_title,article_content,article_summary) values(1,23131543,1,'烟台的雪','三月的天,烟台还是下起了漫天大雪','三月的天');

insert into review(review_id,article_id,review_content,user_id) values(1,1,'写得很好!',1);

insert into album(album_id,user_id,album_name) values(1,1,'烟台大学');

insert into picture(picture_id,picture_doc,picture_file,album_id,picture_name) values(1,'烟大东门','D:\OracleSpace',1,'烟大');

创建存储过程

create or replace procedure add_blog(
 id_param in number,
 title_param in varchar2,
 logo_param in varchar2) is
 begin
 insert into haige.blog(blog_id,blog_title,blog_logo)
 values(id_param,title_param,logo_param);
 end add_blog;
/
传递参数调用存储过程add_blog
exec add_blog(2,'杨旭','图片2');

创建查询存储过程

create or replace procedure search_blog(
 id_param in number,
 title_param out blog.blog_title%type,
 logo_param out blog.blog_logo%type) is
 begin
 select blog_title,blog_logo
 into title_param,logo_param
 from haige.blog
 where blog_id=id_param;
 exception
 when no_data_found then
    title_param:='null';
    logo_param:='null';
    dbms_output.put_line('未找到指定编号的博客信息!');
 end search_blog;
 /

创建序列号(序列号+触发器实现主键自增长)

create sequence blog_id_seq
maxvalue 200
start with 2
increment by 1
cache 2;

创建触发器,实现插入数据时,blog_id字段自增
 create or replace trigger blog_trigger
 before insert on blog
 for each row
 declare
 begin
 select blog_id_seq.nextval into:New.blog_id from dual;
 end blog_trigger;
 /

创建增删改触发器(操作存储在日志中)

create table blog_log(
who varchar2(30),
when date,
action varchar2(50)
);
create or replace trigger blog_op
 before insert or update or delete
 on blog
 declare
   var_action varchar2(50);
 begin
 if inserting then
    var_action :='你执行了插入数据操作!';
 elsif updating then
    var_action :='你执行了修改操作!';
 elsif deleting then
    var_action :='你执行了删除操作!';
 end if;
 insert into blog_log(who,when,action)
 values(user,sysdate,var_action);
 end blog_log;
 /

创建blog_title列索引

create index blog_title on blog(blog_title);

select * from blog where blog_title='海哥';

增加article表的触发器

create or replace trigger article_raise
after insert or update on article
for each row
begin
  if inserting then
     dbms_output.put_line('已执行插入数据操作!');
  elsif updating then
     dbms_output.put_line('已执行修改数据操作!');
end if;
end;
/

创建一个视图,显示文章的基本信息和所在分类的名称

create view category_article_view
 as select article_title,article_content,article_summary,category_title from
 category,article
 where category.category_id=article.category_id;

article的article_title列上建立位图索引

 create bitmap index article_title_bmp
 on article(article_title)
 tablespace test;

引用位图索引,对索引列进行查询

alter system set create_bitmap_area_size=8388608
scope=spfile;

set autotrace on explain
select * from article
where article_title='烟台的雪';

建立聚簇索引,通过blog_id字段对haige.user和haige.blog这两个表进行聚簇存储

create cluster user_blog_clu (blog_id number(10))
 pctfree 20 pctused 60
 size 500 tablespace test;


总结:只为运用知识解决问题,为了减少篇幅,相同的东西就不赘发了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇潇雨歇_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值