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 里面已经存在的字段.

posted on 2018-07-17 15:58  着魔+  阅读(188)  评论(0)    收藏  举报