Oracle数据库的开发与应用(3)

2019-05-17 16:20

下表列出了这些数据类型之间的区别: LONG、LONG RAW 表只能有一个LONG或LONG RAW列 最大长度:2GB 不支持对象类型 存放在表段中 SELECT:直接返回数据 列数据顺序访问 LOB(CLOB、BLOB) 表可以有多个LOB列 最大长度:4GB 支持对象类型 小于4000:存放在表段中 大于4000:存放到LOB段 SELECT:返回定位符 列数据可以随机访问

? 伪列ROWID和ROWNUM

? ROWID

用于惟一地标识表行,它间接给出了表行的物理位置,并且ROWID是定位表行最快的方式。如果某表包含了完全相同的行数据,为了删除重复行,那么可以考虑使用ROWID作为条件。当使用INSERT语句插入数据时,Oracle会自动生成ROWID,并将其值与表数据一起存放到表行。ROWID与表列一样可以直接查询,如 SELECT dname,rowid FROM dept; ? ROWNUM

用于返回标识行数据顺序的数字值。当执行SELECT语句返回数据时,第1行的ROWNUM为1,第2行的ROWNUM为2,以此类推

常见的集中数据类型:integer char varchar2 number date timestamp

3.2 建表

语法:CREATE TABLE [schema.]table_name( Column_name datatype [DEFAULT expr] [,…] );

其中:schema用于指定方案名(与用户名完全相同),table_name用于指定表名,column_name用于指定列名,datatype用于指定列的数据类型,DEFAULT子句用于指定列的默认值。(每张表最多可定义1000列)

[注释:查询表结构:DESC]

? 在当前方案中建表(默认为当前方案) CREATE TABLE dept01(

dno NUMBER(2),name VARCHAR2(10),loc VARCHAR2(20) );

? 在其他方案中建表

CREATE TABLE scott.dept02(

dno NUMBER(2),name VARCHAR2(10),loc VARCHAR2(20) );

? 在建表时为列指定默认值

11

CREATE TABLE scott.dept03(

dno NUMBER(2),name VARCHAR2(10), loc VARCHAR2(20) DEFAULT ?呼和浩特? );

? 使用子查询建表

CREATE TABLE emp04(name,salary,job,dno) AS

SELECT ename,sal,job,deptno FROM emp WHERE deptno=30; ? 建立临时表

临时表用于存放会话或事务的私有数据。临时表包括事务临时表和会话临时表两种类型,其中事务临时表是指数据只在当时事务内有效的临时表,会话临时表是指数据只在当前会话内有效的临时表。当建立临时表时,需要使用CREATE GLOBAL TEMPORARY TABLE命令。通过使用ON COMMIT DELETE ROWS选项可以指定事务临时表,通过使用ON COMMIT PRESERVE ROWS选项可以指定会话临时表,例:

CREATE GLOBAL TEMPORARY TABLE temp1(cola INT) ON COMMIT DELETE ROWS

说明:当执行了以上语句之后,会建立事务临时表TEMP1。因为事务临时表的数据只在当前事务内有效,所以在事务结束之后会自动清除其数据。

**基于己存在表创建另一个表,即创建快表(新表中有新增列)

create table t5 as select d.deptno,0 cola,’abc’ colb from dept d;

3.3 修改表

如果表结构不符合实际情况,建表之后,可用ALTER TABLE改变表结构。 ? 增加列

语法:ALTER TABLE table_name ADD(

column datatype [DEFAULT expr][,column datatype…] );

如ALTER TABLE emp01 ADD eno NUMBER(4); ? 修改列定义

语法:ALTER TABLE table_name MODIFY(

column datatype [DEFAULT expr][,column datatype…] };

如ALTER TABLE emp01 MODIFY job VARCHAR2(15);

? 删除列

语法:ALTER TABLE table_name DROP(column); 如:ALTER TABLE emp01 DROP COLUMN dno; ? 修改列名

语法:ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name; 如:ALTER TABLE emp01 RENAME COLUMN eno TO empno; ? 修改表名

语法:RENAME object_name TO new_object_name; 如:RENAME emp01 TO employee; ? 增加注释

12

语法:COMMENT ON TABLE table_name IS ?text?; COMMENT ON COLUMN table_name.column IS ?text?; 如:COMMENT ON TABLE employee IS ?存放雇员信息?; COMMENT ON COLUMN employee.name IS ?描述雇员姓名?;

3.4 截断和删除表

? 截断表

当表结构必须保留,而表数据不再需要时,可以使用TRUNCATE TABLE命令截断表。执行此命令时,会删除表的所有数据,并释放表所占用的空间,但会保留表的结构。

语法:TRUNCATE TABLE table_name; 说明:当删除表的所有数据时,既可以使用DELETE语句,也可以使用TRUNCATE TABLE命令。注意的是,DELETE(DML)操作可以回退,但TRUNCATE TABLE(DDL)操作不能回退。

如:TRUNCATE TABLE employee; ? 删除表

当表不再需要时,可以使用DROP TABLE命令删除表。用此命令,不仅会删除表的所有数据,而且会删除表结构。

语法:DROP TABLE table_name [CASCADE CONSTRAINTS] [PURGE];

CASCADE CONSTRAINTS用于指定级联删除从表的外键约束,PURGE用于指定彻底删除表(这个选项是10g的新特征)

如:DROP TABLE employee; ? 恢复被删除表

当执行DROP TABLE语句删除表时,Oracle会将被删除表存放到数据库回收站。从Oracle Database 10g开始,使用FLASHBACK TABLE命令可以恢复被删除表。 语法:FLASHBACK TABLE table_name TO BEFORE DROP;

3.5 显示表信息

? USER_TABLES

当建立表时,Oracle会将表信息存放到数据字典。通过查询数据字典视图USER_TABLES,可以显示当前用户的所有表信息。 如:conn scott/tiger SELECT table_name FROM user_tables; ? USER_OBJECTS

当建立数据库对象(表、视图、索引等)时,Oracle会将对象信息存放到数据字典中。通过查询数据字典视图USER_OBJECTS,可显示所有数据库对象。 如:SELECT object_name FROM user_objects WHERE object_type=?TABLE?; ? USER_TAB_COMMENTS

当执行COMMENT命令为表、视图增加注释信息时,Oracle会将注释存放到数据字典中。通过查询数据字典视图USER_TAB_COMMENTS,可以显示当前用户所有表的注释。 如:SELECT comments FROM user_tab_comments WHERE table_name=?EMPLOYEE?;

13

? USER_COL_COMMENTS

当执行COMMENT命令为列增加注释信息时,Oracle会将注释存放到数据字典中。通过查询数据字典视图USER_COL_COMMENTS,可以显示当前用户所有表的列注释。 如:SELECT comments FROM user_col_comments WHERE table_name=?EMPLOYEE? AND column_name=?NAME?; [注释:表名及列名均大写,因为Oracle中是以大写字母存储对象名及列名.

4 Oracle操作符

Oracle中有很多的操作符,每种操作符都有自己的含义,在使用时需要很好的理解其中的内涵。这些操作符与平时大家见到的一些操作符几乎是一样的,含义也差不多。需要注意一点的是,oracle中的赋值语句用:=的方式,而不是=。

14

15


Oracle数据库的开发与应用(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:工艺生产实习报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: