文档库 最新最全的文档下载
当前位置:文档库 › Oracle数据库表连接方式及常见用法

Oracle数据库表连接方式及常见用法

Oracle数据库表连接方式及常见用法
Oracle数据库表连接方式及常见用法

Oracle数据库表连接方式及常见用法

racle数据库表连接方式根据应用场景的不同会有不同的方法,本文向您介绍相等连接、外连接、不等连接、自连接和哈希连接等。一个SQL语句的关联表超过两个,那么连接的顺序如何呢?ORACLE首先连接其中的两个表,产生一个结果集;然后将产生的结果集与下一个表再进行关联;继续这个过程,直到所有的表都连接完成;最后产生所需的数据,,本文将主要从以下几个典型的例子来分析Orac

Oracle数据库表连接方式根据应用场景的不同会有不同的方法,本文向您介绍相等连接、外连接、不等连接、自连接和哈希连接等。

一个SQL语句的关联表超过两个,那么连接的顺序如何呢?ORACLE首先连接其中的两个表,产生一个结果集;然后将产生的结果集与下一个表再进行关联;继续这个过程,直到所有的表都连接完成;最后产生所需的数据,,本文将主要从以下几个典型的例子来分析Oracle表的几种不同连接方式:

1. 相等连接

通过两个表具有相同意义的列,可以建立相等连接条件。

只有连接列上在两个表中都出现且值相等的行才会出现在查询结果中。

例查询员工信息以及对应的员工所在的部门信息;

SELECT * FROM EMP,DEPT; SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.D EPTNO;

REM 显示工资超过2000的员工信息以及对应的员工的部门名称。

2. 外连接

对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。除了显示匹配相等连接条件的信息之外,还显示无法匹配相等连接条件的某个表的信息。

外连接采用(+)来识别。

◆左条件(+) = 右条件;

代表除了显示匹配相等连接条件的信息之外,还显示右条件所在的表中无法匹配相等连接条件的信息。

此时也称为"右外连接".另一种表示方法是:

SELECT ... FROM 表1 RIGHT OUTER JOIN 表2 ON 连接条件

◆左条件 = 右条件(+);

代表除了显示匹配相等连接条件的信息之外,还显示左条件所在的表中无法匹配相等连接条件的信息。

此时也称为"左外连接".

SELECT ... FROM 表1 LEFT OUTER JOIN 表2 ON 连接条件

例显示员工信息以及所对应的部门信息

--无法显示没有部门的员工信息

--无法显示没有员工的部门信息

--SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;

--直接做相等连接:

SELECT * FROM EMP JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;

REM 显示员工信息以及所对应的部门信息,显示没有员工的部门信息

--SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO(+) = DEPT.DEPTNO;

SELECT * FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;

REM 显示员工信息以及所对应的部门信息,显示没有部门的员工信息

--SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO(+);

SELECT * FROM EMP LEFT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;

3. 不等连接

两个表中的相关的两列进行不等连接,比较符号一般为>,<,...,BETWEEN.. AND..

REM SALGRADE

--DESC SALGRADE;

--SELECT * FROM SALGRADE;

REM 显示员工的编号,姓名,工资,以及工资所对应的级别。

SELECT EMPNO,ENAME,SAL,SALGRADE.* FROM SALGRADE,EMP

WHERE EMP.SAL BETWEEN LOSAL AND HISAL;

REM 显示雇员的编号,姓名,工资,工资级别,所在部门的名称;

SELECT EMPNO,ENAME,SAL,GRADE,DNAME FROM EMP,DEPT,SALGRADE

WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.SAL BETWEEN LOSAL AND HISAL;

4. 自连接

自连接是数据库中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。下面介绍一下自连接的方法:

将原表复制一份作为另一个表,两表做笛卡儿相等连接。

例显示雇员的编号,名称,以及该雇员的经理名称

SELECT WORKER.ENAME,WORKER.MGR,MANAGER.EMPNO,MANAGER.ENAME FROM EMP WORKER,EMP MANAGER

WHERE WORKER.MGR = MANAGER.EMPNO;

5.哈希连接

当内存能够提供足够的空间时,哈希(HASH)连接是Oracle优化器通常的选择。哈希连接中,优化器根据统计信息,首先选择两个表中的小表,在内存中建立这张表的基于连接键的哈希表;优化器再扫描表连接中的大表,将大表中的数据与哈希表进行比较,如果有相关联的数据,则将数据添加到结果集中。

当表连接中的小表能够完全cache到可用内存的时候,哈希连接的效果最佳。哈希连接的成本只是两个表从硬盘读入到内存的成本。

但是,如果哈希表过大而不能全部cache到可用内存时,优化器将会把哈希表分成多个分区,再将分区逐一cache到内存中。当表的分区超过了可用内存时,分区的部分数据就会临时地写到磁盘上的临时表空间上。因此,分区的数据写磁盘时,比较大的区间(EXTENT)会提高

I/O性能。ORACLE推荐的临时表空间的区间是1MB。临时表空间的区间大小由UNIFORM SIZE 指定。

当哈希表构建完成后,进行下面的处理:

1) 第二个大表进行扫描

2) 如果大表不能完全cache到可用内存的时候,大表同样会分成很多分区

3) 大表的第一个分区cache到内存

4) 对大表第一个分区的数据进行扫描,并与哈希表进行比较,如果有匹配的纪录,添加到结果集里面

5) 与第一个分区一样,其它的分区也类似处理。

6) 所有的分区处理完后,ORACLE对产生的结果集进行归并,汇总,产生最终的结果。

当哈希表过大或可用内存有限,哈希表不能完全CACHE到内存。随着满足连接条件的结果集的增加,可用内存会随之下降,这时已经CACHE到内存的数据可能会重新写回到硬盘去。如果出现这种情况,系统的性能就会下降。

当连接的两个表是用等值连接并且表的数据量比较大时,优化器才可能采用哈希连接。哈希连接是基于CBO的。只有在数据库初始化参数HASH_JOIN_ENABLED设为True,并且为参数PGA_AGGREGATE_TARGET设置了一个足够大的值的时候,Oracle才会使用哈希边连接。HASH_AREA_SIZE是向下兼容的参数,但在Oracle9i之前的版本中应当使用HASH_AREA_SIZE。当使用ORDERED提示时,FROM子句中的第一张表将用于建立哈希表。

select https://www.wendangku.net/doc/4e3553114.html,er_name,b.dev_no from user_info a, dev_info b where https://www.wendangku.net/doc/4e3553114.html,er_id = https://www.wendangku.net/doc/4e3553114.html,er_id; Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=5 Card=82 Bytes=3936 ) 1 0 H ASH JOIN (Cost=5 Card=82 Bytes=3936) 2 1 TABLE ACCESS (FULL) OF 'USER_INFO' ( Cost=2 Card=82 Bytes =1968) 3 1 TABLE ACCESS (FULL) OF 'DEV_INFO' (Cost=2 C ard=82 Bytes= 1968)

可以通过在SQL语句中添加HINTS,强制ORACLE优化器产生哈希连接的执行计划。

select /*+ use_hash(a b)*/ https://www.wendangku.net/doc/4e3553114.html,er_name,b.dev_no from user_info a, dev_info b where https://www.wendangku.net/doc/4e3553114.html,er_id = https://www.wendangku.net/doc/4e3553114.html,er_id;

当缺少有用的索引时,哈希连接比嵌套循环连接更加有效。哈希连接也可能比嵌套循环连接更快,因为处理内存中的哈希表比检索B_树索引更加迅速。

【编辑推荐】

MySQL左连接、右连接和内连接详解数据库连接性能深度探索 https://www.wendangku.net/doc/4e3553114.html,数据库连接、操作SQL举例a> 如何处理几种常见的数据库不当连接多数据库环境的连接策略 red7 】

ORACLE数据库与实例的关系

ORACLE数据库与实例的关系 1 数据库名 1.1 数据库名的概念 数据库名(db_name)就是一个数据库的标识,就像人的身份证号一样。如果一台机 器上装了多个数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。 数据库名在$Oracle_HOME/admin/db_name/pfile/init.ora(或 $ORACLE_BASE/admin/db_name/pfile/init.ora或$ORACLE_HOME/dbs/SPFILE<实 例名>.ORA)文件中 ########################################### # Database Identification ########################################### db_domain="" db_name=orcl 在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是 以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。 1.2 数据库名的作用 数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的(注意这些时候不能使用sid,还有alter database时都是使用数据库名)。 有很多Oracle安装文件目录是与数据库名相关的,如: winnt: F:\oracle\product\10.2.0\oradata\DB_NAME\...

oracle创建表与增删改

-- 数据准备:创建工资等级表 CREATE TABLE salgrade_test ( grade NUMBER (2), lowsal NUMBER (7, 2), hisal NUMBER (7, 2) ); -- 查看工资等级表结构 DESC salgrade; -- 查看工资等级表数据 SELECT * FROM salgrade_test; -- 插入数据 INSERT INTO salgrade_test VALUES (1, 10001, 99999); INSERT INTO salgrade_test VALUES (2, 8001, 10000); INSERT INTO salgrade_test VALUES (3, 6001, 8000); INSERT INTO salgrade_test VALUES (4, 4001, 6000); INSERT INTO salgrade_test VALUES (5, 1, 4000); -- 计算员工的薪水等级 SELECT NAME, salary, grade FROM emp_test, salgrade_test WHERE emp_test.salary BETWEEN salgrade_test.lowsal AND salgrade_test.hisal; -- ------------------------------------------------------SELECT NAME, salary, grade FROM emp_test

FULL JOIN salgrade_test ON emp_test.salary BETWEEN salgrade_test.lowsal AND salgrade_test.hisal; -- 复制表:只复制结构 , 不复制数据 CREATE TABLE salgrade_copy AS ( SELECT * FROM salgrade_test WHERE 1 <> 1 ); SELECT * FROM salgrade_copy; -- 复制表:复制一部分数据----通过设置别名的方式 , 指定新表中的列名(year_sal) CREATE TABLE emp_test_copy AS ( SELECT emp_id, NAME, salary * 12 year_sal FROM emp_test WHERE dept_test_id = 10 ); SELECT * FROM emp_test_copy; -- 复制表:复制一部分数据 -- 新表中的列名 CREATE TABLE emp_count (did, emp_num) AS ( SELECT dept_test_id, COUNT (*) FROM emp_test GROUP BY dept_test_id ); SELECT * FROM emp_count; -- 创建一个同 emp 表结构相同的空表 , 将部门号为 10 的员工信息放入该表 -- 如果有一张表 emp 的数据量为一百万条 , 此时需要建立 1 张测试表只放入少量测试数据( 如 100条 ) , 执行步骤如下所示: -- 第 1 步创建一个空表 CREATE TABLE emp_copy AS (

windows环境下配置连接oracle数据库的方法及步骤

配置oracle连接 怎么在windows环境下配置连接oracle数据库? 步骤如下: 一、安装PL/SQL: 1、获取PL/SQL安装包;(PL/SQL是连接oracle的客户端) 2、安装PL/SQL; (1)双击PL/SQL安装程序,安装PL/SQL; (2)选择“I Agree”进行安装;

(3)选择安装路径(一般选择默认路径);点击【Next】按钮; (4)默认选择,点击【Next】按钮; (5)默认选择,点击【Finish】按钮,开始安装;

(6)安装进度显示 (7)窗口提示“PL/SQL Developer installed successfully”,安装完成,点击【Close】按钮。

二、配置连接 1、获取oci.dll文件(该文件是用来连接数据库的文件),将该文件及其所在的文件夹放置在一个不含有中文的路径下(如:F:\instantclient); 2、双击打开PL/SQL客户端,点击【Cancel】按钮; 3、跳转到PL/SQL页面,如下图所示。选择【Tool】—>Preferences; 4、按下图进行选择,在“Oracle Home(enpty is autodetect)”栏中选择oci.dll文件所在的目录;在“OCI library(enpty is autodetect)”栏中选择oci.dll文件

5、点击【OK】按钮即可完成 6、退出PL/SQL页面,重新登录。双击PL/SQL客户端,在Oracle Logon窗口中填写数据库的用户名、密码、数据库名和连接方式;点击【OK】按钮即可查询数据库。 完毕!谢谢!

oracle创建表

CREATE TABLE DEPT(id NUMBER(7),name VARCHAR2(25)); 2、将Departments表中数据插入到DEPT表中 SELECT * FROM HR.DEPARTMENTS; INSERT INTO DEPT(ID,NAME) SELECT * FROM DEPARTMENTS; CREATE TABLE EMP (id NUMBER(7),last_name VARCHAR2(25),first_name VARCHAR2(25),dept_id NUMBER(7)); 4、修改EMP表,允许输入更长(50)员工的姓氏(LAST_NAME) ALTER table EMP modify(last_name varchar2(50)); 5、在数据字典中确认DEPT表和EMP表的创建结果 DESCRIBE dept; DESCRIBE emp; 6、根据表Employees的结构创建表Employees2表,仅包含EMPLOYEE_ID、FIRST_NAME、 LAST_NAME、SALARY和DEPARTMENT_ID。将新表中的各列分别命名为EMPLOYEE_ID、FIRST_NAME、LAST_NAME、SALARY和DEPT_ID CREATE TABLE employees2 as SELECT employee_id,first_name,last_name,salary,department_id dept_id FROM employees; 7、删除EMP表 HR> drop table emp; 8、将EMPLOYEES2表重命名为EMP HR> alter table employees2 rename to emp; 9、删除表EMP的FIRST_NAME列,并确认

Oracle 建表(一对多)代码及相关约束示例

建表(一对多)代码及相关约束 create table t_class( c_id number(3) primary key, c_name varchar2(20) not null ); create table t_stu( s_id number(5) primary key, s_name varchar2(8) not null, sex char(2) default '男', birthday date, school_age number(2) check(school_age>0), school_score number(5,2), c_id number(3), id_card char(18) unique, foreign key(c_id) references t_class(c_id) ); 附:测试数据: insert into t_class values(1,'订单班'); insert into t_class values(2,'开发班'); insert into t_class values(3,'美工班'); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (1, 'a', '男', to_date('01-01-1980', 'dd-mm-yyyy'), 24, 90, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (2, 'b', '男', to_date('11-05-1981', 'dd-mm-yyyy'), 23, 80, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (3, 'c', '女', to_date('19-09-1982', 'dd-mm-yyyy'), 22, 50, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (4, 'd', '女', to_date('28-01-1984', 'dd-mm-yyyy'), 21, 80, 2, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD)

配置Oracle数据库连接串

配置Oracle数据库连接串 1、点击:开始—>程序—>Oracle - OraHome81—>Network Administration—>Net8 Configuration Assistant 启动 Net8 Configuration Assistant如下图: (图ORCL_01) 2、选择本地网络服务名配置,点击下一步。 (图ORCL_02) 3、选择添加,点击下一步

(图ORCL_03) 4、选择Oracle8i数据库或服务,点击下一步 (图ORCL_04) 5、在上图中输入全局数据库名,(勿必与安装ORACLE服务器时输入的全局数据库名一致。如:ORCL)点击下一步。 (图ORCL_05)

6、选择TCP协议,点击下一步。 (图ORCL_06) 7、填入实际数据库服务器的主机名(请使用IP地址),如主机名为:192.168.0.1, 选择请使用标准端口号1521, 点击下一步。 (图ORCL_07) 8、选择:是,进行测试,点击下一步。

(图ORCL_08) 9、在上图中如果提示测试不成功,请点击后退按钮,检查在图ORCL_04中输入的全书数据库名是否正确,检查图ORCL_05中选择的是否是TCP协议,检查图ORCL_06中输入的主机名(IP地址)是否正确。 如果上图中提示测试成功,则点击下一步。(请确保测试成功) (图ORCL_09) 10、在上图中输入网络服务名为:Ecom1.3 (请确保输入为Ecom1.3) 点击下一步。

(图ORCL_10)11、在上图中选择否,点击下一步。 (图ORCL_11)12、点击下一步。

Oracle数据库远程连接设置的四种方法

Oracle数据库远程连接设置的四种方法 Oracle数据库的远程连接可以通过多种方式来实现,本文我们主要介绍四种远程连接的方法和注意事项,并通过示例来说明,接下来我们就开始介绍。 第一种情况: 若oracle服务器装在本机上,那就不多说了,连接只是用户名和密码的问题了。不过要注意环境变 量%ORACLE_HOME%/network/admin/是否设置。 第二种情况: 本机未安装oracle服务器,也未安装oracle客户端。但是安装了pl sql development、toad sql development、sql navigator等管理数据库的工具。在虚拟机或者另一台电脑上安装了oracle服务器,也就是虚拟机或者另一台电脑此时作为服务器。 这种情况下,本人以pl sql development远程连接ORACLE服务端数据库为例: 1、在安装oracle服务器的机器上搜索下列文件: ?oci.dll ?ocijdbc10.dll ?ociw32.dll ?orannzsbb10.dll ?oraocci10.dll ?oraociei10.dll ?sqlnet.ora ?tnsnames.ora ?classes12.jar ?ojdbc14.jar 把这些找到的文件复制放到一个文件夹,如 oraclient,将此文件夹复制到客户端机器上。如放置路径为 D:oraclient。 2、配置tnsnames.ora,修改其中的数据库连接串。 1.oracledata = 2. 3.(DESCRIPTION = 4. 5.(ADDRESS_LIST = 6. 7.(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.58)(PORT = 1521)) 8. 9.(CONNECT_DATA =

oracle大型数据库简答题题库

共享和专用操作模式的工作过程有什么区别? 在专用服务器操作模式中,Oracle为每个连接到数据库实例的用户进程启动一个专门的服务进程,其用户进程数与服务器进程数的比例为1:1因为在用户进程空闲期间,对应的服务器进程始终存在,数据库的效率比较低。共享服务器操作模式可以实现只运行少量的服务器进程,由少量的服务器进程为大量用户提供服务。在此模式下,数据库实例启动的同时也将启动一定数量的服务进程,在调度进程Dnnn 的调度下位任意数量的用户进程提供服务。 简述oracle的初始化参数文件? 答:在传统上,Oracle在启动实例时将读取本地的一个文本文件,并利用从中获取初始化参数对实例和数据库进行设置,这个文本文件称为初始化参数文件(简称为PFILE)。 简述如何修改初始化参数文件? 答:如果要对初始化参数进行修改,必须先关闭数据库,然后在初始化参数文件中进行编辑,再重新启动数据库使修改生效。 简述启动数据库时的状态。 答:开启数据库分成4种状态。SHUTDOWN状态:数据库是关闭的。NOMOUNT状态:Instance被开启的状态,会去读取初始化参数文件。MOUNT状态:会去读取控制文件。数据库被装载。OPEN状态:读取数据文件、在线重做日志文件等,数据库开启。 简述数据库的各种关闭方式。 答:(1)正常关闭(SHUTDOWN NORMAL):不允许新的USER连进来。(2)事务关闭(SHUTDOWN TRANSACTIONAL):等待所有未提交的事务完成后再关闭数据库(3)立即关闭(SHUTDOWN IMMEDIATE):任何未提交的事务均被回退。(4)终止关闭(SHUTDOWN ABORT):立即终止当前正在执行的SQL语句,任何未提交的事务 页脚内容1

Java连接oracle数据库方法

Java连接oracle数据库 一、普通的连接数据库 1、注册驱动 Class.forName(“oracle.jdbc.driver.OracleDriver”); 2、获取连接 Connection conn=null; conn= DriverManager.getConnection(“jdbc:oracle:thin:@127.0.0.1:1521:XE”,user,pa ssword); 3、建立statement Statement stat=conn.createStatement(); 4、执行SQL语句 stat.execute(“SQL语句”); 5、处理结果集 ResultSet rs=null; rs=stat.executeQuery(“SQL语句”); While(rs.next()){ System.out.println(“id:”+rs.getInt(“id”)+”last_name”+getString(“l ast_name”)); } 6、关闭连接 Rs.close(); Stat.close(); Conn.close();

二、加载properties文件连接数据库并使用PreparedStatement --------------------首先准备xxx.properties文件---------------------user=xxxxx password=xxxxxx driver=oracle.jdbc.driver.DriverOracle url=jdbc:oracle:thin:@127.0.0.1:1521:XE -------------------------------------------------------------------------------- 1、创建properties实例对象 Properties prop=new Properties(); 2、加载xxx.properties文件 prop.load(new FileInputStream(“xxx.properties文件路径”)); 3、获取xxx.properties文件中的属性 Class.forName(prop.getString(“driver”)); conn=DriverManager.getConnetion(prop.getString(“url”,prop)); 4、创建PreparedStatement实例对象并执行语句 String sql=“select*from table_name where id=?And last_name=?”; PreparedStatement ps=conn.preparedStatement(sql); ps.setInt(1,4); ps.setString(2,”nihao”);

Oracle数据库管理与应用实例教程(刘志成)课后习题及答案

【填空题】 1.默认情况OEM的URL地址是https://sd04:1158/em(其中sd04为机器名) 2.Oracle9i发布于2001,i代表Internet,11G发布于2007,g代表grid(网格) 3.在oracle内存结构中,保存正在执行或可能执行的代码的区是代码区 4.在oracle进程结构中,用于实现进程监控功能的进程是PMON 1.Oracle数据库系统的物理存储结构主要由3类文件组成,分别为数据文件、重做日志文件、控制文件。 2.一个表空间物理上对应一个或多数据文件 3.在oracle的逻辑存储结构中,根据存储数据的类型,可以将段分成为数据段、索引段、回滚段、LOB段和临时段。 1.在设计表时,对于邮政编码最适合的数据类型是CHAR 2.在alter table语句中,如果要删除列,可以通过指定DROP COLUMN关键字来实现。 3.如果需要在表中插入一批已经存在的数据,可以在insert语句中使用SELECT语句。 4创建一个update语句来修改goods表中的数据,并且把每一行的t-id值都改成15,应该使用的SQL语句是UPDATE SCOTT.Goods SET t_ID=’15’ 5.使用DESC命令可以显示表的结构信息 6.两个表的主关键字和外关键字的数据应该对应一致,这是属于引用完整性,通常可以通过主键和外键来实现。 7.UNIQUE约束通过确保在列中不输入重复值保证一列或多列的实体完整性。 1.在select语句中选择满足条件的记录使用where关键字,分组之后进行选择使用having 关键字 2.用来返回特定字段中所有值得总和的聚合函数是SUM 3.编写查询语句时,使用%通配符可以匹配多个字符。 18.集合运算符UNION实现集合的并运算,操作符INTERSECT实现了对集合的交运算,而MINUS则实现了减运算 19.如果要定义只读的视图,可以在创建视图时使用READ ONLY关键字 20.删除视图的PL\SQL语句是DROP VIEW [用户方案.]视图名 21.在使用CREATE INDEX创建索引时,使用BITMAP关键字可以创建位图索引 22.聚集(Cluster)是存储表数据的可选择的方法。一个聚集是一组表,将具有同一公共列值的行存储在一起,并且它们经常一起使用,表中相关的列称为聚集键 23.在为表中某个列定义PRIMARY KEY约束PK_ID后,则系统默认创建的索引名为PK_ID 24.如果表中某列的基数比较低,则应该在该列上创建反向索引 25.如果要获知索引的使用情况,可以通过查询DBA_INDEXES视图,而要获知索引的当前状态,可以查询INDEX_STATS视图。 26. 在Oracle的PL/SQL程序中,除了可以使用Oracle规定的数据类型外,还可以使用%TYPE 类型的变量,由系统根据检索的数据表列的数据类型决定该变量的类型,也可以使用%ROWTYPE 类型的变量用来一次存储从数据表中检索的一行数据。 27. SYSDATE函数可以获得当前系统的日期,SUBSTR(s,start,len)函数可以实现从指定的字符串中取指定长度的字符串。 28. 用来变异存储过程的PL/SQL语句是ALTER PROCEDURE,CREATE FUNCTION语句可以用来创建函数。

oracle创建表基础

?VARCHAR2(size)和NVARCHAR2(size):变长字符型数据。 首先,该数据类型存储变长的字符数据,在使用该数据类型定义数据时,该数据的存储区大小是不固定的,依据存储数据的长度进行动态分配存储区。参数size是该变量存储的最大的字符数,该值最大为4000。size的最小或默认值都是1。一般在定义该数据类型时,都要指定该长度值,即指定size值。NVARCHAR2(size)的不同之处在于它支持全球化数据类型,支持定长和变长字符集。 ?CHAR(size) NCHAR(size):定长字符型数据 该数据类型一旦定义,则存储该变量的存储区的大小就固定下来。显然在存储区分配上它没有VARCHAR2(size)和NVARCHAR2(size)数据类型具有动态性,但是在实际中,如果可以预测到一个变量存储的字符数量,且数量不是很大,则最好还是使用定长字符型数据来定义该变量,这样可以提高存储的效率。因为使用变长字符型数据要不断的计算存储的数据长度,再分配存储数据块,会消耗计算资源。定长字符型数据的最小值和默认值都为1个字符,而最大值为2000。NCHAR(size)的不同之处在于它支持全球化数据类型,支持定长和变长字符集,此时定长字符型数据的最小和默认值都为1个字节。 ?DATE:日期型数据 ORACLE服务器使用7个定长的存储区存储日期型数据,它可以月,年,日,实际,时,分和秒。日期型数据的取值范围从公元前4712年1月1日到公元9999年12月31日。 ?NUMBER(P,S):数字型数据。 参数p指十进制数的中长度,s为该十进制数小数点后的位数,如NUMBER(10,2)表示该数字型数据的中长度为10位,而小数后为2为。其中参数p的最大值为38,最小值为1,而参数s的最大值为124,最小值为-84。

Oracle数据库基础题库【含答案】

1、判断题,正确请写写"T",错误请写写"F", 1、oracle数据库系统中,启动数据库的第一步是启动一个数据库实 例。( T )2、Oracle服务器端的监听程序是驻留在服务器上的单独 进程,专门负责响应客户机的连接请求。( F) 3、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务, 非集群)。( T) 4、系统全局区SGA 是针对某一服务器进程而保留的内存区域,它是不 可以共享的。( F ) 5、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信 息。( F ) 8、数据字典中的内容都被保存在SYSTEM表空间中。( T ) 9、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等, WHERE 后面的条件中也可以有聚集函数。( F ) 10、"上海西北京" 可以通过like ‘%上海_’查出来。( F ) 11、表空间是oracle 最大的逻辑组成部分。Oracle数据库由一个或多 个表空间组成。一个表空间由一个或多个数据文件组成,但一个数据文 件只能属于一个表空间。( T ) 12、表空间分为永久表空间和临时表空间两种类型。( T ) 13、truncate是DDL操作,不能 rollback。( T ) 14、如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使 用WHERE语句。( F ) 15、Oracle数据库中字符串和日期必须使用双引号标识。( F ) 16、Oracle数据库中字符串数据是区分大小写的。( T ) 17、Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特 殊操作时候保证操作能正常进行。( F ) 18、为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字 段列表的末尾。( T )  20、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在 结果中,那么这种连接是全外连接。( T ) 21、自然连接是根据两个表中同名的列而进行连接的,当列不同名时, 自然连接将失去意义。( T ) 23、PL/SQL代码块声明区可有可无。( T ) 24、隐式游标与显式游标的不同在于显式游标仅仅访问一行,隐式的可 以访问多行。( F )

Oracle tablespace创建参数

Oracle tablespace创建参数 ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方存放,Oracle会提示:没有存储配额.因此,在创建对象之前,首先要分配存储空间. 分配存储,就要创建表空间: 创建表空间示例如下: CREATE TABLESPACE "SAMPLE" LOGGING DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.ora' SIZE 5M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO 上面的语句分以下几部分: 第一: CREATE TABLESPACE "SAMPLE" 创建一个名为 "SAMPLE" 的表空间. 对表空间的命名,遵守Oracle 的命名规范就可了. ORACLE可以创建的表空间有三种类型: (1)TEMPORARY: 临时表空间,用于临时数据的存放; 创建临时表空间的语法如下: CREATE TEMPORARY TABLESPACE "SAMPLE"...... (2)UNDO : 还原表空间. 用于存入重做日志文件. 创建还原表空间的语法如下: CREATE UNDO TABLESPACE "SAMPLE"...... (3)用户表空间: 最重要,也是用于存放用户数据表空间 可以直接写成: CREATE TABLESPACE "SAMPLE" TEMPORARY 和 UNDO 表空间是ORACLE 管理的特殊的表空间.只用于存放系统相关数据. 第二: LOGGING 有 NOLOGGING 和 LOGGING 两个选项, NOLOGGING: 创建表空间时,不创建重做日志. LOGGING 和NOLOGGING正好相反, 就是在创建表空间时生成重做日志. 用NOLOGGING时,好处在于创建时不用生成日志,这样表空间的创建较快,但是没能日志,数据丢失后,不能恢复,但是一般我们在创建表空间时,是没有数据的,按通常的做法,是建完表空间,并导入数据后,是要对数据做备份的,所以通常不需要表空间的创建日志,因此,在创建表空间时,选择NOLOGGING,以加快表空间的创建速度. 第三: DATAFILE 用于指定数据文件的具体位置和大小. 如: DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.ora' SIZE 5M

在ArcGIS中如何使用Oracle直连方式连接oracle数据库

在ArcGIS中如何使用直连方式连接Oracle数据库 1.背景 直连方式比使用SDE方式更加稳定,特别是在大数据量处理的应用中,不易出场由SDE连接进程造成的gsvr错误。同时直连方式由于采用Orale客户端连接数据库,在数据库双机部署或集群部署时可以直接利用数据库的负载机制,如RAC,勿需额外的负载均衡服务器。 2.方法 在ArcGIS中使用直连,最简单和常用的工具莫过于ArcCatalog。 打开ArcCatalog,找到Database connections,选择添加空间数据库连接项: 双击后如下,填写连接参数。

使用SDE连接与直连的参数对比如下: 表中IP当采用SDE连接方式为SDE服务所在的IP。 3.遇到问题 在本机测试的过程中遇到一个离奇的问题,即直连本机好用,直连远程服务器不好使了。 采用直连方式可以连通本机39上的oracle服务器,其它连接参数不变把IP 修改为192.168.0.81后,连上的仍然是本机(39)的数据库。 考虑到81上的数据库为11g ,将service参数修改为sde:oracle11g直连81的Oracle,此时居然报错,连接服务器失败。 这个问题一直搹浅了很久,也没有找到原因。后来请教了专业人员,才知道还是对ArcGIS直连Oracle的原理不清楚。 4.分析直连原理 ArcGIS直连Oracle的原理见下图。首先ArcGIS直连Oracle是通过在ArcGIS 所在客户端上安装一个oracle client实现的。oracle client去连接oracle database,而不是采用SDE方式中的SDE服务去连接。 其次,ArcGIS客户端如ArcCatalog将连接请求发给oracle client时必须有一个与所请求的服务器对应的监听服务(Net lisenter)。监听服务可以使用oracle client的Net Manager管理工具配置。配置后的监听服务信息记录在一个Tnsnames.ora文件中,用过Oracle客户端的人对这个文件应该都不陌生,这个文件存储在“安装目录\db_1\NETWORK\ADMIN”下,因此高手也可以不用Net Manager管理工具配置,直接修改这个文件即可。

Oracle-基本建表语句

--创建用户 create user han identified by han default tablespace users Temporary TABLESPACE Temp; grant connect,resource,dba to han; //授予用户han开发人员的权利 --------------------对表的操作-------------------------- 创建表格语法: create table 表名( 字段名1 字段类型(长度) 是否为空, 字段名2 字段类型是否为空 ); -增加主键 alter table 表名 add constraint 主键名 primary key (字段名1); -增加外键: alter table 表名 add constraint 外键名 foreign key (字段名1) references 关联表 (字段名2); 在建立表格时就指定主键和外键 create table T_STU ( STU_ID char(5) not null, STU_NAME varchar2(8) not null, constraint PK_T_STU primary key (STU_ID) ); 主键和外键一起建立: create table T_SCORE ( EXAM_SCORE number(5,2),

EXAM_DATE date, AUTOID number(10) not null, STU_ID char(5), SUB_ID char(3), constraint PK_T_SCORE primary key (AUTOID), constraint FK_T_SCORE_REFE foreign key (STU_ID) references T_STU (STU_ID) ) --创建表 create table classes( id number(9) not null primary key, classname varchar2(40) not null ) --查询表 select * from classes; --删除表 drop table students; --修改表的名称 rename alist_table_copy to alist_table; --显示表结构 describe test --不对没查到 -----------------------对字段的操作 ----------------------------------- --增加列 alter table test add address varchar2(40); --删除列 alter table test drop column address; --修改列的名称 alter table test modify address addresses varchar(40; --修改列的属性 alter table test modi

PB如何连接ORACLE数据库

PB如何连接ORACLE数据库如果你已经是个PowerBuilder高手,那么下面的东西对你来说毫无价值,你大可不必再看下去,如果你刚刚步入PowerBuilder的殿堂,那么下面的东西对你来说可能有点价值,你应该看一看。 作为一个优秀的客户端开发工具,PowerBuilder必然需要与大型的数据库相连接,尽管许多资料上都介绍了如何通过ODBC或者PowerBuilder自带的DB Profile或者专用接口连接上数据库,但仍然有许多使用者按此方法却无法连接上数据库,这方面的原因可能是P owerBuilder本身的原因,比如在安装PowerBuilder时的选项、ODBC的版本之类;也可能是在安装客户端的Oracle、Sybase、Informix、SQL Server等软件上的问题,下面就从最根本的ODBC配置开始,教你一步步如何连接上数据库。 ODBC数据源的配置 进入控制面板,打开ODBC数据源(32位),如图1所示,点击“ADD”按钮,进入OD BC数据源的配置面板,如图2所示:

选择“Oracle ODBC Driver”一项,注意当前版本号为“8.00.0400”,如果你的操作系统中安装的是Oracle7,则相应的版本号会不同。提醒一点:在Windows98操作系统上是无法安装Oracle8.0.4的(只能安装Oracle7.2.3),Oracle8.0.5则没有试过。因而会有一些使用者在Windows98系统上无法正常配置ODBC数据源,因为Windows98本身自带的OD BC数据源已经比Oracle7数据源版本要高,无论你怎样配置ODBC,系统总会提示你要安装一个更高版本的Oracle,自然你就无法配置ODBC了,有一个解决方法就是用PB7第二张光盘上的ODBC安装程序覆盖系统中的ODBC,或者把你的操作系统改为Windows95/97算了。 然后进入“Oracle8 ODBC Driver Setup”设置,在“Data Source Name”一项中随便输入一个名字,在“Data Source Service Name”一栏中输入Oracle连接数据库的字符串名,这可以在你安装的Oracle目录中的Tnsnames.ora文件中查看到(Oracle7安装路径为“ORAWIN95\NETWORK\ ADMIN”;Oracle8安装路径为“ora win95\NET80\ADMIN”),或者你通过“SQL Net Easy Configuration”新添加一个数据库连接配置,将配置中的字符串填入即可,其他的就不必再填入,避免出现画蛇添足之错,反而连接不上数据库了。

Oracle数据库链接建立技巧与实例讲解

Oracle数据库链接建立技巧与实例讲解 数据库链接(DATABASE LINK)是在分布式环境下,为了访问远程数据库而创建的数据通信链路。数据库链接隐藏了对远程数据库访问的复杂性。通常,我们把正在登录的数据库称为本地数据库,另外的一个数据库称为远程数据库。有了数据库链接,可以直接通过数据库链接来访问远程数据库的表。常见的形式是访问远程数据库固定用户的链接,即链接到指定的用户,创建这种形式的数据库链接的语句如下: CREATE DATABASE LINK 链接名 CONNECT TO 账户 IDENTIFIED BY 口令 USING 服务名; 创建数据库链接,需要CREATE DATABASE LINK系统权限。 数据库链接一旦建立并测试成功,就可以使用以下形式来访问远程用户的表。 表名@数据库链接名 例:在局域网上创建和使用数据库链接。 步骤1:创建远程数据库的服务名,假定局域网上另一个数据库服务名为MYDB_REMOTE。 步骤2:登录本地数据库SCOTT账户,创建数据库链接: CONNECT SCOTT/TIGER@MYDB CREATE DATABASE LINK abc CONNECT TO scott IDENTIFIED BY tiger USING 'MYDB_REMOTE'; 执行结果为: 数据库链接已创建。 查询远程数据库的数据: SELECT * FROM emp@abc; 结果略。 步骤4:一个分布查询: SELECT ename,dname FROM emp@abc e,dept d WHERE e.deptno=d.deptno; 结果略。

力控与Oracle数据库的连接

力控连接Oracle数据库 力控?实时数据库是一个高性能、高速度、高吞吐能力、可靠性强、跨网络系统的开放软件。力控可与oracle及access等数据库进行高速数据交换,本说明是以Oracle 9i为例,介绍力控与ORACLE进行数据交换的配置注意事项: 在使用Oracle作为数据时应先考虑随数据库软件所携带ODBC版本问题,可以到Oracle的官方网站下在最新的ODBC版本(WWW. https://www.wendangku.net/doc/4e3553114.html,)。如使用其它版本数据库也应考虑其ODBC 的版本,以避免不必要的麻烦。 Oracle数据库的结构简单的说可以表示为数据库?方案(Schema)?表(Table)?记录。使用“方案管理”来管理方案对象。 Oracle数据库中的方案与用户帐号是一一对应的。(如使用System用户登陆则只能对System方案中的数据库表进行操作,虽然在有些情况下可以浏览其它数据表但不可操作)。 Oracle数据库在成功安装之后创建了一些系统自定义的方案和数据表,(如System等),建议在使用时确保系统可靠,通过自定义创建新的方案(Schema)共我们使用。 下面简述方案的建立方法(更详细的信息请参考Oracle的相关资料,: 1. 使用“database configration assistant”创建一个新的数据库:(如已有数据库 可跳过这一节) 1) 选择创建新的数据库: 2) 选择新的数据库:

3) 输入数据库名称和SID: 4) 根据需要配置特性:

5) 配置初始化参数: 6) 更改或查看数据库存储:

7) 点击完成,建立新数据库: 2. 启动“Oracle Enterprise Manager Console”;如数据库为本机则选择独立启动, 否则选择网络方式启动。 1) 图示为新建的数据库:

JAVA中通过JDBC(THIN方式)连接ORACLE数据库 程序示例

Java中通过jdbc(thin方式)连接Oracle数据库 package com.jdbc.OracleTest; import java.sql.DriverManager; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class OracleJdbcConnectionTest{ /** *Java中通过jdbc(thin方式)连接Oracle数据库 *by jarin2008年12月13日 * *@param args */ public static void main(String[]args){ try{ //第一步要Jar包:在oracle安装的目录下,盘 符:\oracle\ora92\jdbc\lib\ojdbc14.jar //加载驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); //连接字符串(协议名:jdbc,子协议名:oracle:thin子名 称:@localhost:1521:oracleDB) String url="jdbc:oracle:thin:@localhost:1521:ora92"; try{ //建立连接 Connection conn=DriverManager.getConnection(url, "scott","1234"); //创建Statement或者是PreparedStatement语句 Statement st=conn.createStatement(); String sqlStr="select ename from emp"; //执行查询 ResultSet rs=st.executeQuery(sqlStr); //遍历结果

相关文档
相关文档 最新文档