学习oracle数据库的总结(图文整理)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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='开发'
运行结果: