ITPub博客

首页 > 数据库 > Oracle > sql创建和管理表

sql创建和管理表

Oracle 作者:gfr43 时间:2014-02-23 23:51:53 0 删除 编辑

一、创建表:create table

1.语法:CREATE TABLE  用户名表名

     (列名 数据类型 default 默认值约束条件 ......]  )  

TABLESPACE 表空间名

 

2.表名和列名命名规则:

必须以字母开头

必须在1–个字符之间

必须只能包含A–Z, a–z, 0–, _, $, #

必须不能和用户定义的其他对象重名

必须不能是Oracle 的保留字

 

3.必须指定:

表名

列名, 数据类型, 尺寸

 

4.数据类型:

varchar2(size)  变长字符型(最大字符)

nvarchar2(size)   变长unicode字符型(最大字符)

char(size)     字长字符型(最大字符)

number(p,s) 数值型(p为长度最大,s为小数点后的位数-~)

data     日期型

 

5.引用其他用户的表

其他用户定义的表不在当前用户的方案中

应该使用用户名作为前缀,引用其他用户定义的对象

 

6.DEFAULT 选项

插入时为一个列指定默认值

字符串, 表达式, SQL 函数都是合法的

其它列的列名和伪列是非法的

默认值必须满足列的数据类型定义

 

7.使用默认值:

插入记录时,可省略那个字段,也可显示的加default

 

8.查询数据字典

查看用户定义的表,

SELECT table_name FROM user_tables ;

查看用户定义的各种数据库对象

SELECT DISTINCT object_type  FROM user_objects ;

查看用户定义的表, 视图, 同义词和序列

SELECT *  FROM user_catalog ;

 

9.利用子查询创建表:

CREATE TABLE table

[(column, column...)]

AS subquery;

 

10.利用子查询创建一个空表:

create table xx as select * from yy where 1=0;  字段可以指定的

 

11.使用子查询创建表时候用

AS subquery 选项,将创建表和插入数据结合起来

指定的列和子查询中的列要一一对应

通过列名和默认值定义列

 

二、修改表:

1.添加新列( 添加的列在最后,没办法调整其位置)

ALTER TABLE tablename

ADD (column datatype [DEFAULT expr] constraint [, column datatype]...);

 

2.修改现有的列

ALTER TABLE tablename

MODIFY (column datatype [DEFAULT expr] constraint 

[, column datatype]...);

 

可以被修改的内容:

列的长度

数字列的精度

列的数据类型

修改列的默认值

 

a.修改列的长度

 

 ALTER TABLE scott.emp MODIFY(ename varchar2(30));

 

         b.修改列的数据类型

--jobidVARCHAR2类型改为CHAR类型

 ALTER TABLE scott.emp

 MODIFY (jobid CHAR(20));

 

3.删除列(一次只能删除一个列,无法删除属于SYS 的表中的列):

ALTER TABLE tablename DROP  COLUMN columnname;

 

 

 

 

 

 

三、对象改名:

 

列改名:

ALTER TABLE tablename RENAME COLUMN oldname TO newname

 

表改名:

ALTER TABLE tablename RENAME TO newname

 

 

对于表、索引、视图、序列、同义词等对象可直接用RENAME 

格式:RENAME oldname TO newname

 

 

、表和列的注释

使用COMMENT 语句给表或列添加注释

表加注释:

COMMENT ON TABLE tablename IS '.....'

 

列加注释:

COMMENT ON COLUMN tablename.columnname IS '......';

 

可以通过下列数据字典视图查看所添加的注释:

–ALL_COL_COMMENTS

–USER_COL_COMMENTS

–ALL_TAB_COMMENTS

–USER_TAB_COMMENTS

 

 

六、截断(清空)表

TRUNCATE TABLE tablename

 

TRUNCATE TABLE 语句:

 删除表中所有的数据,但保留结构

 释放表的存储空间

 不触发表的删除触发器

 TRUNCATE语句不能回滚

   可以使用DELETE 语句删除数据

 

 

 

七、删除表:DROP TABLE tablename

 

数据和结构都被删除

所有正在运行的相关事物被提交

所有相关索引被删除

DROP TABLE 语句不能回滚

所有基于该表扣视图和别名依然保留但已无效

 

 

 

更多详情请参阅:http://blog.sina.com.cn/u/2712691875

更多详情请参阅:http://www.waen.com.cn

 

 

 

 
<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21459818/viewspace-1116435/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-04-23