1.1修改表结构
添加一个字段
alter table 表名 add(列名 数据类型(+约束))
修改字段名字(该字段不能有数据)
alter table 表名 rename column oldcolumn to newcolumn
修改字段类型(该字段不能有数据)
alter table 表名 modify(列名 数据类型(+约束))
修改字段长度
alter table表名 modify(列名 数据类型)
删除一个字段
alter table 表名 drop column 列名
修改约束
alter table tb_student
add constraint 约束名 UNIQUE(列名) --创建唯一约束
add constraint 约束名 PRIMARY KEY(列名) --创建主键约束
add constraint 约束名 FOREIGN KEY(列名) REFERENCES t_class(class_id) --创建外键约束
add constraint 约束名 CHECK(age>0 AND age<150) --创建检查约束 in('男',‘女’)
修改默认值约束
alter table 表名 modify 列名 default sysdate
删除指定的约束
alter table 表名 drop constraint ck_age --ck_age为约束名
这是因为如果两张表存在主从关系,那么,在删除主表的主键约束时,必须带上cascade选项
alter table 表名 drop primary key cascade;
查看约束
查看T_STUDENT表中所有约束。注意:表名必须全部大写
SELECT * FROM user_constraints --该表用于存放用户所建表的约束
WHERE table_name = ‘TB_STUDENT’
1.2修改表名
rename oldtablename to newtablename
- 3复制表
- 3.1复制表结构及数据
--将emp表中的数据插入到tb_new表中(tb_new表要先创建,而且表结构与SELECT的结果集相同)
INSERT INTO tb_new SELECT * FROM emp
--复制emp表
CREATE TABLE tb_new AS SELECT * FROM emp
- 3.2只复制表结构,不复制数据
CREATE TABLE tb_new AS SELECT * FROM emp WHERE 1=2 --boolean表达式,条件为false即可
- 3.3复制满足条件的记录
CREATE TABLE tb_new AS SELECT * FROM emp WHERE deptno=30
- 4表数据操作
- 4.1插入数据
insert into tb_student values(2, '李四’,'男’,'1-1月-09', 1100);
注意:Oracle中默认的日期格式为 DD-MM-YYYY
该日期的默认格式:
to_date('2017-1-1', 'YYYY-MM-DD') alter session set nls_date_format = ‘yyyy-mm-dd’;
修改后就可以按照熟悉的格式插入数据了
insert into tb_student values(3, ’李四’, ’男’, ’2000-10-19’, 1100);
插入空值,字段值为null
insert into tb_student values(2, ’李四’, ’男’, ’2000-10-19’, 1, null)
注意:日期型数据的插入