oracle表管理(建表,改表,删表,表数据增删改查)
1建表
--语法: Create table 表名( 字段1 数据类型 [default 默认值], 字段2 数据类型 [default 默认值], ... 字段n 数据类型 [default 默认值] ); --范例:创建person表 create table person( pid number(10), name varchar2(10), gender number(1) default 1, birthday date ); insert into person(pid, name, gender, birthday) values(1, '张三', 1, to_date('1999-12-22', 'yyyy-MM-dd'));
2.表删除
语法:DROP TABLE 表名
3.表的修改
在sql中使用alter可以修改表
- 添加语法:ALTER TABLE 表名称 ADD(列名1 类型 [DEFAULT 默认值],列名1 类型 [DEFAULT 默认值]...)
- 修改语法:ALTER TABLE 表名称 MODIFY(列名1 类型 [DEFAULT 默认值],列名1 类型 [DEFAULT 默认值]...)
- 修改列名: ALTER TABLE 表名称 RENAME COLUMN 列名1 TO 列名2
范例:在person表中增加列address
alter table person add(address varchar2(10));
范例:把person表的address列的长度修改成20长度
alter table person modify(address varchar2(20));
4.截断表
在person表中使用delete语句删除数据,则可以使用rollback来回滚,如果想要清空一张表的数据,同时不想回滚可以立即释放资源需要使用截断表的语法
语法:TRUNCATE TABLE 表名
范例:截断person表
truncate table person;
5.数据库表数据的更新
1. INSERT(增加)
语法:
INSERT INTO表名[(列名1,列名2,...)]VALUES(值1,值2,...)
标准写法
简单写法(不建议)
INSERT INTO 表名VALUES(值1,值2,...)
insert into person
values(1,'张三',1,'9-5月-1981','北京北七家');
注意:使用简单的写法必须按照表中的字段的顺序来插入值,而且如果有为空的字段使用null
insert into person
values(2,'李四',1,null,'北京育新');
2.事务
这是因为oracle的事务对数据库的变更的处理,我们必须做提交事务才能让数据真正的插入到数据库中,在同样在执行完数据库变更的操作后还可以把事务进行回滚,这样就不会插入到数据库。如果事务提交后则不可以再回滚。
提交:commit
回滚:rollback
1.事务保存点与回滚:
语法:
savepoint 保存点名字
示例:
savepoint a1; --设置一个保存点 a1;
update person set name='张三' where pid='101' --修改一条数据
savepoint a2; --设置一个保存点 a1;
update tmp set name='李四' where id='102 --再修改一条数据
rollback to a2; --回滚到a2 保存点。 此时在 a2 保存点之后的所有数据修改视为无效。
rollback to a1; --这里可以再从a2保存点再回滚到a1 保存点。 此时在 a1 保存点之后的所有数据修改视为无效。
rollback; --回滚全部。即撤消至上一次提交事务后的所有数据修改。
commit; --提交事务 将回滚后的事务提交,并会删除所有保存点。
注意:我们可以从a2向前再回滚到a1 ,但无法从a1回滚到a2。也就是只能向前回滚,不能从前面的点再向后回滚!
2.事务的隔离级别:
事务的隔离性是什么?
https://www.cnblogs.com/luzhanshi/p/13339119.html
事务隔离级别有哪些?
https://www.cnblogs.com/luzhanshi/p/13339119.html
Oracle支持的隔离级别是什么?
Oracle 支持三种事务隔离级别:
1、读已提交;(默认)
2、串行化;
3、只读模式
3.UPDATE(修改)
全部修改:UPDATE 表名 SET 列名1=值1,列名2=值2,....
局部修改:UPDATE 表名 SET 列名1=值1,列名2=值2,....WHERE 修改条件;
4. DELETE(删除)
语法 : DELETE FROM 表名 WHERE 删除条件;
在删除语句中如果不指定删除条件的话就会删除所有的数据
Truncate table实现数据删除
比较truncat与delete实现数据删除?
- delete删除的数据可以rollback,也可以闪回
- delete删除可能产生碎片,并且不释放空间
- truncate是先摧毁表结构,再重构表结构
4.通过闪回实现数据恢复
1.闪回的原理
2.闪回的实现方式
3.闪回的注意事项
5. 碎片问题的思考
1.什么是碎片
2.碎片的产生
3.碎片问题的避免与解决