操作数据表结构
1.复制相同结构的表
确认test1表是否存在,如果创建一个与已存在表相同名称的表将出现错误,通过DESC test1命令查看test1表。
DESC TEST.TEST1
-- 复制表结构
CREATE TABLE TEST.TEST1
AS -- AS 复制表结构的关键字
SELECT * FROM TEST.TEST WHERE 1=2; -- WHERE子句表示只复制表结构,不复制表数据
DESC TEST.TEST2 --查看表结构是否一致
2.使用DROP TABLE命令删除表
-- 确认test2表是否存在,若存在使用命令
DROP TABLE TEST.TEST2
/
DROP TABLE命令执行后,目标表即从数据库中被移除到回收站中(没有完全消失,而是重命名为一个由系统定义的名称,它存在于同一个表空间中,具有与原始表相同的结构,它还可以被恢复),基于该表的索引、触发器等数据对象也被同时删除。
3.创建主键约束
-- 创建主键约束
CREATE TABLE TEST.STU1(
SNO VARCHAR2(10) PRIMARY KEY, -- 主键约束
SNAME VARCHAR2(10),
SGENTLE VARCHAR2(2),
SAGE NUMBER(2),
SBIRTH DATE,
SDEPT VARCHAR2(20));
Oracle通过设置主键列来强制数据的唯一性。主键约束保证了该字段不能为空。
表已存在,就不能再使用CREATE TABLE语句来创建主键约束了,这是可以使用ALTER TABLE来实现
ALTER TABLE STU1
ADD CONSTRAINT PK_STU1 -- ADD CONSTRAINT表示追加约束,PK_STU是主键约束名称
PRIMARY KEY(SNO) -- 表示追加的是主键约束,SNO表示以STU表中的SNO字段为主键。
/
一个表只能有一个主键。
4.删除约束
查看约束
SELECT TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE
FROM USER_CONSTRAINTS
WHERE TABLE_NAME='TEST.STU1'
/
删除约束
ALTER TABLE TEST.STU1
DROP CONSTRAINT PK_STU1
删除约束只能是与其他表无关联的约束,如果该约束同时作为其他表的外键,则不能删除。
5.ALTER TABLE命令
增加新字段
ALTER TABLE STU
ADD SMAJOR VARCHAR2(20)
DEFAULT 'BIGDATA'
NOT NULL
/
修改字段
ALTER TABLE STU
MODITY SNAME VARCHAR2(15)
DEFAULT '无'
NOT NULL
/
删除字段
ALTER TABLE STU
DROP COLUMN SBIRTH
/
重命名
ALTER TABLE STU
RENAME TO STU1
/
或
RENAME STU TO STU1
/