`
atgoingguoat
  • 浏览: 190985 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

oracle 9i 学习 过程

阅读更多
  1. 启动

 

之前已经安半了数据 oracle 9i ,很久没发,用 plsql 连,出现:ORA-12514 。在网上看了。

是:C:\oracle\ora92\network\admin\tnsnames.ora 文件,没有配置本地的数据,通过C:\oracle\ora92\network\admin\listener.ora 看到信息在tnsnames.ora 文件增加了配置如下:

 

oracle9i =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =baobao)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oracle9i)
    )
  )

 

就OK了。

 

 

2.Oracle9i创建表空间

用sys帐号登陆,连接身份选SYSDBA,执行如下语句

// 创建表空间
drop tablespace test;

create tablespace test

DATAFILE 'D:\oracle\oradata\test\test.dbf'
size 10M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;

alter user scott quota unlimited on test;
commit;

创建了一个名为test的表空间,数据库文件创建 在D:\oracle\oradata\test\test.dbf,并给scott 帐号授权使用表空间。

//创建scott用户 并分配表空间

drop user scott cascade;
create user scott
identified by tiger
default tablespace test
quota 100M on test;
commit;

//创建完毕后授权

Grant connect,resource,DBA to scott;

 

//sql plus 中执行.sql 文件

@d:\xzsp_hrb_oracle_doc.sql

//创建一个名为manager的角色

create role manager;

//给manager这个角色授于相应的系统权限

grant create table,create view,create session to manager;

//授予针对某个对象的权限如查询某个表的权限

grant select on 表名字 to manager; //可以把一个权限同时赋予多个角色或者用户,但不能把多个权限同时赋予多个角色或者用户,需分开执行。

//把manager这个角色分配给scott,xzsp两个帐号。

grant manager to scott,xzsp;

//修改帐号scott密码为tiger

alter user scott identified by baobao;

//scott用户建的表,如果想给其他用户权限则必须用scott用户登陆后执行如下语句,即使你是DBA也不把   

一个用户(scott)所创建的表赋予给另外一个用户(xzsp)操作的权限,除非scott用户给DBA授权。

grant select on 表名字 to xzsp;

grant select on employees to scott,xzsp;

//用scott用户登陆 给system授权

grant select on student to system with grant option;

//用system 登陆,再把查询student的权限授予另外一个用户。

grant select on scott.student to xzsp;

//system同时可取消xzsp用户的该权限。

revoke select on scott.student from xzsp;

权限传递的级联:scott用户把权限给A(同时允许A传递给其他用户 with grand option),A把权限再传递给B,如果scott用户撤消A的权限,则B也会失去相应的权限。

grant update (department_name,location_id) on departments to scott,xzsp; //授予用户修改某个表中指定字段的权限。

grant select,insert on departments to scott with grant option; //把查询,增加departments表的权限给scott用户并允许他把权限授予给其他拥护。

grant select on scott.departments to public; //授予public 角色查询scott下departments表的权限。

//访问其他数据库对象(database links)

create public database link hq.acme.com using 'sales';

select * from emp@hq.acme.com      //emp为表名

 

CREATE USER 创建一个用户(通常由DBA来完成)。

GRANT 给于其他用户使用你自己对象的权限。

CREATE ROLE 创建一个权限的集合,即角色。

ALTER USER 修改一个用户的密码。

REVOKE 撤消一个用户在某个对象上的权限,如 表 视图等。

 

3.导入导出

 

exp scott/123456 owner=scott file=d:/scott.dmp log=d:/scott.log

exp asxa/123456@192.168.1.132 owner=mmsa file=d:/scott.dmp log=d:/scott.log

 

imp scott/123456 fromuser=asxa touser=scott file=d:/scott.dmp

 

USERID 用户名/口令
FULL 导出整个文件 (N)
BUFFER 数据缓冲区的大小
OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 导入一个范围 (Y)
RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y)
INCTYPE 增量导出类型
INDEXES 导出索引 (Y)
RECORD 跟踪增量导出 (Y)
ROWS 导出数据行 (Y)
PARFILE 参数文件名
CONSTRAINTS 导出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件
STATISTICS 分析对象 (ESTIMATE)
DIRECT 直接路径 (N)
TRIGGERS 导出触发器 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句

下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TABLESPACES 将传输的表空间列表

 

 

USERID 用户名/口令
FULL 导入整个文件 (N)
BUFFER 数据缓冲区大小
FROMUSER 所有人用户名列表
FILE 输入文件 (EXPDAT.DMP)
TOUSER 用户名列表
SHOW 只列出文件内容 (N)
TABLES 表名列表
IGNORE 忽略创建错误 (N)
RECORDLENGTH IO 记录的长度
GRANTS 导入权限 (Y)
INCTYPE 增量导入类型
INDEXES 导入索引 (Y)
COMMIT 提交数组插入 (N)
ROWS 导入数据行 (Y)
PARFILE 参数文件名
LOG 屏幕输出的日志文件
CONSTRAINTS 导入限制 (Y)
DESTROY 覆盖表空间数据文件 (N)
INDEXFILE 将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
ANALYZE 执行转储文件中的 ANALYZE 语句 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
TOID_NOVALIDATE 跳过指定类型 id 的校验
FILESIZE 各转储文件的最大尺寸
RECALCULATE_STATISTICS 重新计算统计值 (N)

下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据文件
TTS_OWNERS 拥有可传输表空间集中数据的用户

 

 

 

 

 

 

 

 

 

 

 

 

 

------------------------------查看用户权限--------------------------------------------------------------

1.查看所有用户:
select * from dba_users;
select * from all_users;
select * from user_users;
2.查看用户或角色系统权限:
select * from dba_sys_privs;
select * from user_sys_privs;
3.查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4.查看所有角色:
select * from dba_roles;
5.查看用户或角色所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Oracle 9i基本SQL操作


---------重命名表------
Rename HR_BASE_CATEGORY To HR_TEMP_TABLE;

----------把一个表的数据拷到另一个相同结构的表
Insert Into HR_BASE_CATEGORY Select
 CATEGORY_ID,
 CATEGORY_NAME,
 CATEGORY_ALIAS,
 CATEGORY_DESC,
 MODULE_ID,
 MODULE_NAME,
 SORT_ORDER
From HR_TEMP_TABLE;

---------创建表----------

-- 创建班级表

Create table class
(
 class_id  varchar2(10) not null primary key, --主键
 class_name varchar2(10) not null,
 class_create date default sysdate,
 class_number number(2,0),
 class_remark  varchar2(50)
)

-- 删除表class

drop table class cascade constraint;


-- 创建学生表
create table student
(
 stu_id varchar2(10) not null primary key,
 stu_name varchar2(8),
 stu_gender integer default 0,
 stu_birthday date,
 stu_from varchar2(20),
 stu_tel varchar2(14),
 stu_dorm varchar2(8),
 stu_class_id varchar2(10)
)


--创建课程表
create table course
(
course_id varchar2(6) not null primary key,
course_name varchar2(16),
course_book varchar2(30)
)

drop table course cascade constraint;


--创建成绩表
create table score
(
score_stu_id varchar2(10) not null ,
score_course_id varchar2(6) not null,
score_pingshi  number(5,2),
score_final number(5,2),
score_Total number(5,2) --总成绩
)


--------修改表---------

alter table student add  email varchar2(30);         ------在学生表中增加字段:email地址;-------

alter table course modify course_book varchar2(36);  ------增加课程表字段"教科书"的长度;-------

alter table score modify score_Total default 0;    ------设置成绩表的总评成绩字段缺省值为0;-----


--------创建视图----------
如果你在创建视图时使用了DISTINCT语句,那么你就不能插入或更新这个视图中的记录
create view student_view(stu_name,course_name,score_info)
as
select student.STU_NAME , course.COURSE_NAME , score.score_Total
from student,score,course
where student.STU_ID = score.SCORE_STU_ID
    and course.COURSE_ID = score.SCORE_COURSE_ID;


--------创建索引----------

create index score_index on score(score_stu_id,score_course_id);

--------约束条件的创建-------


--------创建主键---------

--如果在表创建时已创建主键,可不再单独创建主键

alter table class add constraint pk_class_id primary key;

alter table student add constraint pk_stu_03 primary key;

alter table score add constraint pk_score_03 primary key;


----------创建外键---------

alter table student add constraint fk_class foreign key (stu_class_id) references class(class_id);

alter table score add constraint fk_stu_id foreign key(score_stu_id) references student(stu_id);

alter table score add constraint fk_course_id foreign key(score_course_id) references course(course_id);


----------创建check约束---------

alter table student add constraint ck_stu_gender check( stu_gender in (0,1) );


----------插入数据 和 事务控制语句------------

insert into class values(031,jsj,to_date(2003-09-01,yyyy-mm-dd,30,good);
insert into class values(032,xg1,to_date(2003-09-01,yyyymm-dd,26,good);

insert into student
values(001,xinhe,0,to_date(1977-09-22,yyyy-mm-dd),hunan,135,e208,031wxinhe2004@126.com);

insert into student values(002,huarong,0,to_date(1977-09-22,yyyy-mm-dd),hunan,135,e209,032,wxin004@126.com);

insert into course values(001,c++,jixietushu);
insert into course values(002,shujuku,qinghuatushu);

insert into score values(001,001,90.00,90.00,90.00);
insert into score values(002,001,80.00,80.00,80.00);

commit;


----------修改数据 和 事务控制语句------------

update course set coursename=cyuyan where coursename=c++;
update student set name=wangxinhe where name=xinhe;
update class   set appendxi=average where classid=032;
update score set totalscore=95.0 where totalscore=90.00;

commit;

----------修改数据 和 事务控制语句------------
delete course where coursename=c++;
rollback;

delete student;

delete score;

delete class;

commit;


------------多表连接查询语句-----------

1)查询学生名称、编号、性别、生日(按yyyy-mm-dd显示)、所在班级的名称,其中,0显示为“男”,1显示为“女”(decode函数);

  select a.stu_name ,a.stu_id , decode(a.stu_gender,0,男,1,女) 性别,
       to_char(a.stu_birthday,yyyy-mm-dd) 出生日期, b.class_name
  from student a,class b
  where a.stu_class_id=b.class_id;


2)查询学生的各门功课的平时成绩、期末成绩和总评成绩;

   select a.stu_id,a.stu_name, b.course_name, c.score_pingshi 平时,c.score_final 期末,c.score_Total 总成绩
   from student a,course b, score c
   where  a.stu_id = c.score_stu_id
       and b.course_id = c.score_course_id


3)查询姓名XX所在班级所有学生信息(嵌套查询);

   select * from student where stu_class_id =
       (select stu_class_id from student where stu_name=xinhe);


4)查询课程编号为“xxx”和“xxx”的学生成绩信息(集合查询);

   select stu_id,score_Total  from score  where score_course_id = 001 
   union
   select stu_id,score_Total  from score  where score_course_id = 002;


5) 查询各班每门功课的最好成绩;
   
   select A.stu_class_id, B.score_course_id, max(score_Total)
   from student A,score B
   where A.stu_id=B.score_stu_id
   group by A.stu_class_id, B.score_course_id

 

分享到:
评论

相关推荐

    Redhat Enterprise 5.5下安装Oracle9i

    学习Oracle,大家都知道在Linux下玩比较有意思,因此鉴于初学者对在Linux下安装Oracle数据库有种莫名的恐惧,本人特用了一天的时间,完成了在Redhat Enterprise Linux 5.5下安装Oracle9i的完整步骤,这个文档对安装...

    oracle9i 学习资源

    这个是oracle的学习的总结,实用性很强。是老师在教的过程中总结出来,并写成chm格式的电子书。请浏览一下,很不错哦

    《Oracle9i关系数据库实用教程》电子教案.rar

    Oracle9i的学习教材,包含sql的基础语言,PLSQL编程,以及操作Oracle9i常用工具等!值的推荐

    如何解决Oracle 9i与Tomcat的端口冲突

    在学习和工作的过程中,我们可能在调试程序时发现TOMCAT提示8080端口已被占用,于是运行NETSTAT -ANO查看端口使用情况,发现8080端口被ORACLE的监听器占用了。如果出现这种情况,本文介绍了如下三种方法来解决问题:...

    Oracle 10g 学习笔记

    │ Oracle9i数据库管理实务讲座.pdf │ OraclePLSQL语言基础.exe │ Oracle傻瓜手册.pdf │ oracle最权威工具TOAD使用大全.chm │ oracle的入门心得.pdf │ Oracle程序员开发指南.pdf │ └─北大青鸟...

    ORACLE 安裝配置

    本文档详细介绍了oracle9i的安装全过程,供你学习

    oracle 创建函数和包

    适合oracle9i初学者,学习存储过程的编写

    Oracle入门教程.三思笔记.一步一步学Oracle

    [三思笔记]ORACLE9I服务器的一次调优实施过程.pdf [三思笔记]ORACLE 10gR2 RAC环境增加及删除节点.pdf [三思笔记]Oracle+RAC数据库配置DataGuard.pdf [三思笔记]oracle著名及非著名函数介绍.doc [三思笔记]RHEL AS4...

    Oracle Programmer's Hand Book - Beginner.CHM

    SQL 常用函数:本章内容翻译自 Oracle9i 的《SQL Reference》。当然,只翻译了一些我们常用的 SQL 函数。 数据库常见问题:本章内容介绍了一些现场实施过程中经常遇到的问题,希望对你的实施工作有所帮助。 在第二...

    精通Oracle 10g PL/SQL编程

    另外,本书还为应用开发人员提供了大量Oracle9i和Oraclelog新增加的PL/SQL特征。 本书不仅适合于PL/SQL初学者,而且也适合于有经验的PL/SQL编程人员,本书还可以作为Oracle培训班的教材或者辅助材料。

    精通Oracle 10g PL SQL编程

    另外,本书还为应用开发人员提供了大量Oracle9i和Oracle 10g新增加的PL/SQL特征。 本书不仅适合于PL/SQL初学者,而且也适合于有经验的PL/SQL编程人员,本书还可以作为Oracle培训班的教材或者辅助材料。

    oracle开发帮助文档两部

    SQL 常用函数:本章内容翻译自 Oracle9i 的《SQL Reference》。当然,只翻译了一些我们常用的 SQL 函数。 数据库常见问题:本章内容介绍了一些现场实施过程中经常遇到的问题,希望对你的实施工作有所帮助。 在第二...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    深入解析Oracle.DBA入门进阶与诊断案例

    包括详细的操作步骤,具有很强的实战性和可操作性,适用于具备一定数据库基础、打算深入学习Oracle技术的数据库从业人员,尤其适用于入门、进阶以及希望深入研究Oracle技术的数据库管理人员。 第1章 数据库的启动...

    深入解析OracleDBA入门进阶与诊断案例 3/4

    包括详细的操作步骤,具有很强的实战性和可操作性,适用于具备一定数据库基础、打算深入学习Oracle技术的数据库从业人员,尤其适用于入门、进阶以及希望深入研究Oracle技术的数据库管理人员。 目录 第1章 数据库的...

    深入解析OracleDBA入门进阶与诊断案例 2/4

    包括详细的操作步骤,具有很强的实战性和可操作性,适用于具备一定数据库基础、打算深入学习Oracle技术的数据库从业人员,尤其适用于入门、进阶以及希望深入研究Oracle技术的数据库管理人员。 目录 第1章 数据库的...

    深入解析OracleDBA入门进阶与诊断案例 4/4

    包括详细的操作步骤,具有很强的实战性和可操作性,适用于具备一定数据库基础、打算深入学习Oracle技术的数据库从业人员,尤其适用于入门、进阶以及希望深入研究Oracle技术的数据库管理人员。 目录 第1章 数据库的...

    Oracle_Database_11g完全参考手册.part3/3

    13.2.1 Oracle9i以前版本中的外部连接的语法 13.2.2 现在的外部连接语法 13.2.3 用外部连接代替NOTIN 13.2.4 用NOTEXISTS代替NOTIN 13.3 自然连接和内部连接 13.4 UNION、INTERSECT和MINUS 13.4.1 IN子查询 13.4.2 ...

Global site tag (gtag.js) - Google Analytics