oracle操作语句

来源:互联网 发布:软件著作权变更流程 编辑:程序博客网 时间:2024/06/04 01:33
oracle获取上周一和周末日期
select trunc(sysdate,'iw') - 7 from dual;---上周一
select trunc(sysdate,'iw') - 1 from dual;--上周日
oracle获取上个月第一天和最后一天
select trunc(add_months(sysdate, -1), 'mm') first_day,trunc(last_day(add_months(sysdate, -1))) last_day from dual;

oracle 按每天,每周,每月,每季度,每年查询统计数据

//按天统计

select count(dataid) as 每天操作数量, sum() from tablename group by trunc(createtime, 'DD'))

//按自然周统计
select to_char(date,'iw'),sum() from  tablename group by to_char(date,'iw')
//按自然月统计
select to_char(date,'mm'),sum()  from   tablename group by to_char(date,'mm')
//按季统计
select to_char(date,'q'),sum() from  tablename group by to_char(date,'q')
//按年统计
select to_char(date,'yyyy'),sum()  from  tablename group by to_char(date,'yyyy')

add_months(x,y)或者add_months(times,months)函数:

介绍:这个函数用于计算在时间x基础上y个月后的时间值,要是Y的值为负数的话就是在
           这个时间点之间的时间值(这个时间-Y个月)。

oracle创建表和复制表数据

create table new_tablename as select * from old_tablename  where 0=1;

insert into new_tablename select * from old_tablename where 字段<行数

创建用户和授权

create user username identified by password;

grant dba to username;

alert user scott identified by tiger;//修改密码

sys;//系统管理员,拥有最高权限

system;//本地管理员,次高权限

scott;//普通用户,密码默认为tiger,默认未解锁

grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限

grant unlimited tablespace to zhangsan;//授予zhangsan用户使用表空间的权限

grant create table to zhangsan;//授予创建表的权限

grante drop table to zhangsan;//授予删除表的权限

grant insert table to zhangsan;//插入表的权限

grant update table to zhangsan;//修改表的权限

grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public)

oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权

grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限

grant drop on tablename to zhangsan;//授予删除表的权限

grant insert on tablename to zhangsan;//授予插入的权限

grant update on tablename to zhangsan;//授予修改表的权限

grant insert(id) on tablename to zhangsan;

grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和update

grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限

3.修改密码期限为90天
Alter PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME '90';//90天期限
Alter PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;//永久期限

oracle锁表解锁语句:

--锁表查询SQLSELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;

--释放SESSION SQL:
--alter system kill session 'sid, serial#';
ALTER system kill session '23, 1647';

SELECT sid, serial#, username, osuser FROM v$session where sid
in(selectsession_idfromv$locked_object);
--kill掉相关的会话
ALTER SYSTEM KILL SESSION '597,1171';

查询表的创建时间:

select created from dba_objects  where object_name='大写的表名';

数据库清除缓存:

ALTER SYSTEM FLUSH SHARED_POOL;//共享池(慎用)
ALTER SYSTEM FLUSH BUFFER_CACHE;//

oracle怎么把一列数据插入到另一列:

update [表名] set [另外一列]=[前一列];

oracle给现有的数据增加序号:

update tablename set  序号字段=sequence.NEXTVAL(表可以根据字段排序后给序号)

oracle分组后取第一条数据:

select * from ( select row_number()over(PARTITION by 分组字段 order by 排序字段) rn ,t.* from tablename  t )  where rn=1

表关联更新:

update customers a set city_name = (select b.city_name from tmp_cust_city b where b.customer_id = a.customer_id) where exists
 (select 1 from tmp_cust_city b where b.customer_id = a.customer_id)

更新超过两个字段:

update customers a
   set (city_name, customer_type) = (select b.city_name, b.customer_type
                                       from tmp_cust_city b
                                      where b.customer_id = a.customer_id)
 where exists
 (select 1 from tmp_cust_city b where b.customer_id = a.customer_id)

oracle创建视图:

create view as select * from tablename where 条件

创建表空间语句:

create tablespace  tablespace_name datafile 'E:\DashanWorkspaces\oradata\DBF\ATM.dbf' size 1M autoextend on next 1M maxsize unlimited;

启动和关闭数据库命令:

startup;启动

shut immediate;关闭

oracle建立表空间时的语句:

select dbms_metadata.get_ddl('TABLESPACE','tablespacename') from dual;

oracle扩展表空间时的语句:

alter database datafile '/u01/app/oracle/oradata/orcl/sec_d01.dbf' autoextend on;

非临时表空间:
select file_id from dba_data_files where tablespace_name=<your_tablespace_name>;

alter database datafile <file_id> autoextend on next 10M maxsize 10G;
临时表空间:
select file_id from dba_temp_files where tablespace_name=<your_tablespace_name>;

alter database tempfile <file_id> autoextend on next 10M maxsize 10G;

查看表所占用的空间:

  select * from dba_segments s where s.segment_name='表名大写'

plsql查看数据库的版本:

select * from product_component_version



原创粉丝点击