Oracle DB使用DDL语句创建和管理表(五)
门80 中工作的所有雇员的详细资料。请注意,DEPT80表中的数据来自EMPLOYEES表。
可以使用DESCRIBE命令验证数据库表的存在,并检查列定义。
但是,在选择表达式时请务必提供列别名。表达式SALARY*12被赋予了别名ANNSAL。
如果没有别名,系统就会生成以下错误:
hr@TEST0924> CREATE TABLE dept80
2 as
3 SELECT employee_id, last_name,salary*12 ,hire_date FROM employees WHERE department_id = 80;SELECT employee_id, last_name,salary*12 ,hire_date FROM employees WHERE department_id = 80
*
ERROR at line 3:
ORA-00998: must name this expression with a column alias
ALTER TABLE语句
使用ALTER TABLE语句可:
添加新列
修改现有列定义
定义新列的默认值
删除列
重命名列
将表的状态更改为“只读”
在创建表之后,可能会因以下原因而需要更改表结构:
省略了某列。
列定义或列名需要更改。
需要删除列。
要将表设置为“只读”模式。
可以使用ALTER TABLE语句完成此任务。
只读表
可以使用ALTER TABLE语法执行下列操作:
将表置于只读模式,从而阻止在维护表过程中进行DDL 或DML 更改
将表重新置于读/写模式
ALTER TABLE employees READ ONLY;
-- 执行表维护,然后再将表改回读/写模式
ALTER TABLE employees READ WRITE;
在Oracle Database 11g中,可以通过指定READ ONLY将表设置为“只读”模式。当表处于READ-ONLY模式时,用户不能发出可对表造成影响的任何DML 语句或任何SELECT ... FOR UPDATE语句。可以发出DDL 语句,但前提条件是不对表中的任何数据进行修改。当表处于READ ONLY模式时,可以对与表关联的索引执行操作。
指定READ/WRITE,可令处于“只读”模式的表返回“读/写”模式。
注:可以删除处于READ ONLY模式的表。DROP命令只能在数据字典中执行,因此无需访问表内容。在表空间返回“读/写”状态之前,系统不会回收表使用的空间,此时可对块段头进行必要的更改。
删除表
将表移至回收站
如果指定了PURGE子句,则可将表及其所有数据全部删除
使从属对象失效并删除表的对象权限
DROP TABLE dept80;
使用DROP TABLE语句可以将表移至回收站或从数据库中全部删除该表及其所有数据。
如果不指定PURGE子句,DROP TABLE语句就不会将使用的空间重新释放到表空间中供其它对象使用,而且该空间会继续视为用户的空间限额。删除表会使从属对象失效并删除表的对象权限。
删除表后,在数据库中会失去表的所有数据以及与表关联的所有索引。
语法
DROP TABLE table [PURGE]
在该语法中,table是表的名称。
准则
删除表中的所有数据。
保留视图和同义词,但不再有效。
提交所有待定的事务处理。
只有表的创建者或具有DROP ANY TABLE权限的用户才能删除表。
注:使用FLASHBACK TABLE语句可从回收站中还原已删除的表。