Oracle百问百答(三)(二)
指定任何连接则为内连接
select t1.name,t2.name from cip_temps t1 inner join cip_tmp t2 on t1.ID=t2.id;
左外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行,
select t1.name,t2.name from cip_temps t1 left join cip_tmp t2 on t1.ID=t2.id;
右外连接查询不仅返回满足调价的所有记录,而且还会返回不满足连接条件的连接操作符右边表的其他行
select t1.name,t2.name from cip_temps t1 right join cip_tmp t2 on t1.ID=t2.id;
全连接查询不仅返回满足调价的所有记录,而且还会返回不满足连接条件的其他行,
select t1.name,t2.name from cip_temps t1 full join cip_tmp t2 on t1.ID=t2.id;
使用(+)操作符执行左外连接
当使用左外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的左边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到右边表的一端,
select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID=t2.id(+);
使用(+)操作符执行右外连接
当使用右外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的右边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到左边表的一端,
select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID(+)=t2.id;
外连接就是查两张表
左连接左边的表全有值,右边表的值可以为空(+
右连接右边的表全有值,是左边表值可以为空(+)
全连接是左连接和右连接的并集 union
内连接是左连接和右连接的交集即 =
26.Oracle内存结构是怎样的?
Sga(系统全局区):是所有用户都可以访问的实例的共享内存区域,数据块、事务处理日志、数据字典、用户执行的sql语句、存储过程、函数等都存储在sga中。
Sga由db高速缓存、共享池、重做日志缓存、大型池组成。
Db高速缓存的作用:保存最近从数据文件中读取的数据块,其中的数据被所有的用户共享。在用户初次访问数据时,oracle将读取磁盘上的数据文件,将数据放入数据高速缓存,再进行下一步的数据处理。如果数据已经位于数据高速缓存中时,oracle将直接操作数据。
共享池:保存了最近执行的sql语句、pl/sql语句程序和数据字典信息。
Pag(程序全局区):是一类没有共享的内存(主要为了某个用户进程所服务),它专用于特定的服务器进程,并且只能够由这个进程访问。
Pga由排序区、会话区、游标区、堆栈区组成。
Uga(用户全局区):为用户进程存储会话状态。
27.实例和数据库有什么区别?
Oracle实例是SGA和后台进程的组合(不含PGA),数据库只有调入到实例所包含的内存和进程中,才可以使用。
数据库:数据文件+重做文件+控制文件+临时文件等。
Oracle服务启动时先启动实例,然后才装载数据库文件,也就是装载数据库。
28. 进程和内存结构、数据文件件的协作关系是怎样的?
29. 用户和模式有什么区别?
Oracle用户(user):是用连接数据库和访问数据库对象的。(用户是用来连接数据库访问数据库)。
模式(schema):是数据库对象的集合。模式对象是数据库数据的逻辑结构。(把数据库对象用模式分开成不同的逻辑结构)。
30.Oracle数据导入导出imp/exp报错,错误提示为:未知的命令开头。。。忽略了剩余的行 ?
查询资料才知道应该在cmd的dos命令窗口直接执行,而不是sqlplus.exe
相关的导出命令格式如下:
a.将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
b.将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
c.将数据库中的表A、B导出
exp aichannel/aichannel@TEST
DB2 file= d:\data\newsmgnt.dmp tables=(A,B)
相关的导入命令格式如下:
a. 将D:\daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmp
imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp ignore=y
b. 将d:\daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)