Oracle创建与管理表

表是数据库对象,数据库中存储数据都需要依赖于表,表由行和列组成。数据库中的表分为两种,一种是Oracle自动创建的表,另一种是用户自己创建的表。

    在PLSQL中可以通过SELECT * FROM USER_TABLES来查询用户自己创建的所有表以及这些表的属性。

Oracle创建与管理表

 

1)命名规范

    在日常生活中,我们对于新的事物都会给其起个名字。数据库的表也不例外,在创建一个表之前也要先给这个表的表名和列名起个名字,而这个名字也不是随便起的,它是有命名规范的。

1.须以字母开头。

2.长度最多为30个字符。

3.只能以A-Z、a-z、0-9、_、$和#命名。

4.不能与用户定义的其他对象同名。

5.不能是Oracle的保留字。

 

 

2)数据类型

    Oracle中常用的数据类型分别是VARCHAR2、NUMBER、CHAR、DATE和BLOB。

VARCHAR2:可变的长字符类型。

NUMBER:可变的长数值类型。

CHAR:定长的长字符类型。

DATE:日期类型。

BLOB:二进制类型,最大4G。

 

3)创建表

    在创建表之前需要注意,在Oracle中用户存在权限,要创建表的前提是当前用户有创建表的权限。此外还有另一个条件就是存储空间。这两个条件都满足的情况下就可以进行表的创建。

创建表时需要指定表名、列名、列的数据类型与尺寸,创建表的语句是CREATE TABLE。

Oracle创建与管理表

    CREATE TABLE语句后面跟的是表名,表名后面用括号把要定义的列名、列的数据类型、尺寸与默认值包起来。创建完成之后查询该表时是没有任何数据的,只有列名。

 

创建表并不仅限于只能创建,还可以通过一张已有的表来进行复制。复制表的关键在于AS语句,AS语句后面跟的是子查询,查询出需要复制表的列名还有数据,然后把查询出来的结果复制到需要创建的表,注意:CREATE TABLE TESTEMP(ID,NAME)定义了表名与列名,其中列名的定义是可以省掉的,写成CREATE TABLE TESTEMP AS…。如果不定义列名的话,那么在复制的时候就会把原来的表的名字一并复制过来。如果定义了新的列名,在查询时指定的列和子查询中的列要一一对应。上述这种情况是复制表时要表的数据而不要列名,相应的就会有要列名而不要表数据的情况。

Oracle创建与管理表

 

    经过上面的复制表之后,如果要复制EMPLOYEES全表的数据,那么代码就是CREATE TABLE EMPONE AS SELECT * FROM EMPLOYEES。这里复制了除表名以外的所有信息。如果不要表的数据,只要列名的话,那么子查询就需要有一个能把所有数据都过滤掉的条件,比如1=2。

Oracle创建与管理表

4)管理表

    数据库的表创建完成之后就需要对其进行管理,也就是要对这个表进行操作。

1、添加

使用ALTER TABLE table ADD (column datatype)语句给表添加新的列。

Oracle创建与管理表

 

2、修改

使用ALTER TABLE table MODIFY (column datatype)语句修改指定的列的数据类型、尺寸和默认值。

Oracle创建与管理表

 

使用ALTER TABLE table RENAME COLUMN oldname TO newname语句修改指定的列的名字。

Oracle创建与管理表

 

使用RENAME tableoldname TO tablenewname语句修改指定的表的表名。

Oracle创建与管理表

3、删除

使用ALTER TABLE table DROP COLUMN column语句删除指定的列。

Oracle创建与管理表

 

 

使用TRUNCATE TABLE table语句删除表的数据。注意:TRUNCATE语句无法回滚(慎用)。

Oracle创建与管理表

 

 

使用DELETE语句来删除数据是可以回滚的。DELETE语句执行完了之后再执行ROLLBACK就可以把删除掉的内容回滚回来,DELETE语句执行完了之后执行COMMIT就会把删除的数据提交,提交之后就无法再回滚了。

Oracle创建与管理表

 

 

使用DROP TABLE table语句删除指定的表。注意:DROP语句无法回滚(慎用)。

Oracle创建与管理表