Oracle数据库关于表的一些操作
今天做填报报表,老是报无法将null插入数据库表,后来和同事一波操作猛如虎,结果不小心把一个不需要的字段删了.......
然后就搞了一下午,各种新操作,所以在这记录一下这些平时不怎么用的骚操作
1. 删除表中的某一字段
alter table 表 drop column 字段;
2.添加某一字段到表中
alter table 表 add(字段 字段类型(长度));
3.修改字段类型
alter table 表 modify 字段 修改的字段类型(长度);
4.修改字段值
update 表 set 字段=值;
5.查询表在某一时间段以前的修改时间节点
select * from 表as of timestamp to_timestamp('2018-07-17 16:35:00','yyyy-mm-dd hh24:mi:ss')
6.把表还原到指定时间点
flashback table 表 to timestamp to_timestamp(''2011-02-28 10:40:00'',''yyyy-mm-dd hh24:mi:ss'');
7.打开Flash存储的权限
ALTER TABLE 表 ENABLE row movement
8.在整个数据库中查询需要更改的表的ID(首先需要sys或system权限操作)
select object_id from all_objects where owner ='用户名' and object_name = '表名(大写)'
9.通过ID查出该表所有字段的顺序
select obj#, col#, name from sys.col$ where obj# = '103756' order by col#
10.修改字段顺序
update sys.col$ set col#=2 where obj#=103756 and name='AGE';
update sys.col$ set col#=3 where obj#=103756 and name='NAME';
。
。
。
11. commit 提交
12.查询表的字段,类型,长度.....等属性.
select * from user_tab_columns t where t.TABLE_NAME = '表名'
13.最近做项目写sql的时候同时使用到了order by 和 group by.然而查询出来的结果不是自己想象中的那样.
下面来分析一样原因:
mysql 写sql的顺序:
select -> from-> where->group by->having->order by.
但mysql的解析器执行顺序:
from-> where->group by->having->select->order by.
所以,从执行的流程来看,是先group by 然后在 order by.
order by拿到的结果里已经是group by以后的结果.
因此,order by的字段必须是group by 里面已经存在的字段.
浙公网安备 33010602011771号