怎么建oracle的表格
1.创建表:
创建表使用CREATE TABLE命令。执行这个命令时,必须有CREATE TABLE的系统权限。如果想在其他用户的方案下创建表,必须被赋予CREATE ANY TABLE的系统权限。创建表的语法如下:
CREATE TABLE [schema.]table_name(
column_name datetype [DEFAUIT expr][,...]
);
上述语法将会在方案schema下创建一个名为table_name的表,在表中列用column_name表示,后面跟随的datetype表示该列的数据类型,可以通过DEFAULT子句给列指定默认值。如下图为在方案SCOTT下创建表TEST01:
2.修改表:
如果在建表后发现有不合适的表结构或表名,可以使用ALTER TABLE语句修改。包括增加列、修改列定义、删除列、修改列名和修改表名等。如下图依次为上述情况的实例。
3.截断表:
截断表使用TRUNCATE TABLE语句实现,作用是保留表结构删除表数据,语法如下:
TRUNCATE TABLE table_name;
如下图:
4.删除表:
当表不需要的时候,可以使用DROP TABLE 把表删除。删除表会将表的所以数据及结构都删除,并从数据字典中删除表的相关信息,所以未完成的事务自动提交,和表相关的所以索引也会被删除。语法如下:
DROP TABLE table_name [CASCADE CONSTRAINT];
如果要删除的表有主外键关联关系时必须使用CASCADE CONSTRAINT子句。
5.给表增加注释:
在应用程序设计时,必要的注释是十分有必要的,可以使用COMMENT语句来实现,给表和列增加注释的语法如下:
COMMENT ON TABLE table_name IS 'comment_string';
和
COMMENT ONCOLUMN table_name.column_name IS 'comment_string';
这种的注释是存储在数据库中的,一般在脚本文件,过程或函数中建议增加单行或多行注释以增加可读性,在Oracle数据库中,单行注释使用两个短的中划线“_ _”表示,多行注释使用“/*...*/”表示。
在数据字典中查看表的信息:
和表相关的数据字典主要包括USER_TABLES和USER_OBJECTS查看表信息,以及USER_TAB_COMMENTS和USER_COL_COMMJENTS查看表和列的注释信息。如下图:
--------------------------------------------------------------------------------
CREATE TABLE TABLE_NAME(
column1 DATATYPE [NOT NULL] [PRIMARY KEY],
column2 DATATYPE [NOT NULL],
...
[constraint <约束名> 约束类型 (要约束的字段名)... ]
);
说明:
TABLE_NAME --表名.
column1,column2 --列的名称 不能取关键字
DATATYPE --是Oracle的数据类型,可以查看附录.
NOT NULL /NULL --不可以/可以允许资料有空的.NULL一般省略.
PRIMARY KEY --是本表的主键。
CONSTRAINT --是对表里的字段添加约束.(约束类型有 Check,Unique,Primary key,not null,Foreign key)。
示例:
CREATE TABLE student(
s_id number(8) PRIMARY KEY,
s_name varchar2(20) NOT NULL,
s_sex varchar2(8) ,
clsid number(8) ,
CONSTRAINT u_1 UNIQUE(s_name),
CONSTRAINT c_1 CHECK (s_sex in ('MALE','FEMALE'))
);
表级约束
如 设置 两列不能同时为空
ALTER TABLE tablename ADD CONSTRAINT check_name CHECK (col1 is not null or col2 is not null) ;
复制表
--------------------------------------------------------------------------------
CREATE TABLE TABLE as <SELECT 语句>
(需注意的是复制表不能复制表的约束);
示例:
CREATE TABLE test AS SELECT * FROM emp;
会将表emp的数据一并复制到test中,但约束没有复制.
如果只复制表的结构不复制表的数据则:
CREATE TABLE test as (SELECT * FROM emp WHERE 1=2);
或者
CREATE TABLE test as (SELECT * FROM emp WHERE FALSE);