Oracle常见表操作
Oracle表常见操作如下。
列规范创建表
要创建标准的表,可以使用下面的语法:
CREATE TABLE [schema.] table
(column datatype [DEFAULT expression],……)
这里需要了解scheme指的是模式名称,模式可以简单理解为和用户相对应,一个用户对应一个模式,因此在省略scheme时指的是在当前用户模式,通常需要指定模式名称的场景是A用户需要操作B用户的表,这时还需要当前A用户有操作B用户表的权限才能生效。(可以作为了解内容)
例子:
CREATE TABLE GIGGLE.USER
(USERNO NUMBER(4),
USERNAME VARCHAR2(10),
AGE NUMBER(3),
REMARK VARCHAR2(255) DEFAULT 'common user');
这会在GIGGLE模式下创建一个USER表,表对应4列,其中REMARK有默认值。
这种创建表方式使用较多。
使用子查询创建表
上面的使用列规范创建的表是一个空表,数据还需要相应的INSERT语句;
使用子查询可以通过其他表来创建表,这种方式创建的表可以表结构和源表一样,也可以只选择源表中一部分列,其语法如下:
CREATE TABLE [scheme.] table AS subquery;
简单示例:CREATE TABLE USER_COPY AS SELECT * FROM USER;
这条语句将会完全将USER表复制到USER_COPY中;通过这种方式创建的新表将继承源表中的非空(NOT NULL)和检查约束(CHECK),需要索引的主键约束(PRIMARY KEY),唯一约束(UNIQUE)和外键约束(FOREIGN KEY)将不被继承。
子查询中可以使用WHERE关键字指定限定条件,从而选择性的将源表数据插入新表;这里WHERE条件假如是不成立的条件,则新表中不会有源表任何数据,相当于只是复制了源表的表结构。例如:CREATE TABLE USER_COPY AS SELECT * FROM USER WHERE 1=2;
子查询SELECT关键字可以指定列,使新表中字段只是源表中的一部分;
表定义更改
添加列:ALTER TABLE USER ADD (USERID NUMBER);
修改列:ALTER TABLE USER (USERNO VARCHAR2(8));
删除列:ALTER TABLE DROP COLUMN REMARK;
重命名列: ALTER TABLE USER RENAME COLUMN REMARK INFORMATION;
删除表或删除表数据
删除表中数据:DELETE FROM TABLENAME [WHERE condition];
删除表:DROP TABLE TABLENAME;
TRUNCATE TABLE TABLENAME;
PS: 上述三种删除表数据的区别:
delete是按照where条件删除符合条件的数据,是DML语句,受事务控制,事务提交会才会生效;drop是DDL语句,会删除表和表中所有数据,不受事务控制;truncate功能上和不使用where条件的语句相同,但是速度比delete快,因为使用的系统和事务日志资源少。使用drop和truncate时候要慎重,因为不可回滚。
以上内容都是自己学习Oracle过程中的学习笔记,学习教材为OCP认证考试指南。