oracle数据库学习笔记(积累)

  • 格式:doc
  • 大小:374.50 KB
  • 文档页数:7

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、在开发环境中连接到数据库,进行基本的select查询操作;

2、熟悉plsql的使用;

3、熟悉sqlplus相关命令(登录、查询、导入导出等)

登录sqlplus:

第一:使用dos窗口登录sqlplus

Sqlplus 用户名/密码@数据库实例名

Sqlplus system/密码@数据库实例名as sysdba

第二:使用oracle自带的一个sqlplus登录,提供界面,显得更简单一些。

显示当前用户名:show user;

创建一个用户:create user 用户名identified by 密码;

给用户赋予登录的权限:grant connect to 用户名;(此时才可以使用这个用户来登录这个数据库。)给其赋予dba的权限。

修改用户的密码:alter user 用户名identified by 新密码;

查询:

Select * from t_user;

Select id from t_user;

Select name from t_user;

Select birthday from t_user;

Select id,name from t_user;

导入导出:

导出表:

(注意,导出表的exp命令不是在sqlplus下使用的,是在dos窗口下使用的命令。)

exp userid=test/sa@test tables=(qx) file=d:\e1223.dmp

exp userid=test/sa@test tables=(t_user,qx) file=f:\test.dmp

导出方案:

Exp userid=test/sa@test owner=test file=f:\test2.dmp

导出数据库:

Exp userid=test/sa@test full=y inctype=complete file=f:\all.dmp

导入表:

下面以一个例子来说明:

看下面的图,我的用户名test,密码sa,数据库实例名test,所有的表都在这里

现在我执行导出表JD的操作:exp userid=test/sa@test tables=(jd) file=f:\jd.dmp

在我的f盘下就出现了这么一个.dmp文件

现在我删除test数据库中的jd文件

现在表JD已经从数据库中删除了

下面我执行表jd的导入操作(就是把表JD导入到我们的test数据库实例中去):imp userid=test/sa@test tables=(jd) file =f:\jd.dmp

然后重新刷新我们的数据库中的表,看到jd表被导入进来了。Ok。

导入方案:

4、数据较复杂的查询(关联查询、多表查询、子表查询等)新建的两张表(包括已经插入的数据):dept和emp如下:

多表查询:

外连接查询:例子,查询员工表,显示员工姓名,部门名称,部门位置,即使该员工还没有部门。此时使用内连接查询时不可以的,所有使用左连接查询(查询左边表中所有的数据,无论其在右表中是否相对应的数据)

select a.empname,b.deptname,b.deptloc

from emp a left outer join dept b

on a.deptno=b.deptno

右连接查询:(查询右边表中的所有的数据,无论其在左边表中是否有相对应的数据)查询所有的部门,显示部门名称,部门人员信息(姓名,工作)无论该部门是否有人员。现在我们新建一个部门(无名氏),该部门没有任何的人员。查询语句如下

select a.deptname,b.empname,b.job

from emp b right outer join dept a

on a.deptno=b.deptno

全连接(左右连接)查询两个表中所有的记录

select a.deptname,b.empname,b.job

from emp b full outer join dept a

on a.deptno=b.deptno

上面的左右连接也可以使用+来代替,如下的查询

select a.empname,b.deptname

from emp a,dept b

where b.deptno=a.deptno(+)和

select a.empname,b.deptname

from emp a,dept b

where b.deptno(+)=a.deptno分别表示查询所有部门和所有人,无论该部门是否有人,或者某个人时候

是某个部门的。当然,使用+不能表示full的情况。

Union的使用(查询结果的联合):

Union将多个结果集联合在一起,去除重复的记录。Union all将多个结果集联合在一起,不去除重复的记录。例子:我数据库中的数据如下图,emp表和dept表

select empno,empname

from emp

where deptno=1

union

select deptno,deptname

from dept

查询结果如下:

关于union和union all,后者不会去除重复的记录,看下面两段plsql代码和运行的结果便知。select * from emp where deptno=1

union all

select * from emp where job='开发'

运行结果:

select * from emp where deptno=1

union