1.常用SQL
两个日期之间相差的月数
select months_between(date'2014-04-23',date'2013-04-23') days from dual;
重启数据库命令
sqlplus / as sysdba
shutdown immediate (关闭)
startup(开启)
建立表比删除表快。
表解锁:
(1)锁表查询的代码有以下的形式:
select count(*) from v$locked_object;
select * from v$locked_object;
(2)查看哪个表被锁:
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
(3)查看是哪个session引起的:
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
(4)杀掉对应进程执行命令:
alter system kill session '1025,41';
其中1025为sid,41为serial#.
表重命名:
alter table 老表名 rename to 新表名;
复制表数据到另一个表中:
insert into table2 select * from table1;
create table table2 as select * from table1;
删除日期之前的数据:
delete from BS_ACCTHISTRANSINFO t
where t.dt_transactiontime < to_date('2014-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss' )
删除表中的全部数据:
truncate table table_name;
删除表:
drop table table_name;
如果有约束限制强删除表:
drop table 表明 cascade;
建立索引:
create index 索引名 on 表名(列名); --单列
create index 索引名 on 表名(列名[,列名,...]); ---可以有多个列
唯一索引:
create unique index 索引名 on 表名(列名); ---单列
create unique index 索引名 on 表名(列名[,列名,...]); ---可以有多个列
增加列:
alter table fe_exchangerate add status number;
更新数据:
update student set name = '王五' where sex='男';
删除数据:
delete from student; delete from student where name='王五'
可以通过查询系统表user_objects来获得某一天建立的表。
比如要查询2015年12月23日创建的表,可用如下语句:
select object_name from user_objects where object_type='TABLE' and to_char(created,'yyyy-mm-dd')='2015-12-23';
-
-创建序列
CREATE SEQUENCE seq_Trans0125 --序列名
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环 s
CACHE 10;
--修改序列初始值
1 执行 让序列以每次增长的速度1007:
Alter
Sequence SeqTest2010_S Increment By 1007;
2 执行 改变序列的初始值:
Select SeqTest2010_S.NextVal From Dual;
3 执行 再改回序列以1的增长速度:
Alter
Sequence SeqTest2010_S Increment By 1;
--DBLINK创建
create public database link
cdtschedule connect to yusuanbase1 identified by yusuanbase1 using '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.23.101)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = db)
)
)';
--查询某一天建立的表
可以通过查询系统表user_objects来获得某一天建立的表。
比如要查询2015年12月23日创建的表,可用如下语句:
select object_name from user_objects where object_type='TABLE' and to_char(created,'yyyy-mm-dd')='2015-12-23';
--创建序列
CREATE SEQUENCE seq_Trans0125 --序列名
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
用户创建及导库
1.删除用户
DROP USER 用户名 CASCADE;
2.创建用户
create user 用户名 identified by 密码 default tablespace 表空间 temporary tablespace temp;
3.查看用户属于哪个表空间
select username,default_tablespace from dba_users where username='用户名';
4.创建表空间
create tablespace tbs_liushengbo
datafile 'D:\oracle\product\10.2.0\oradata\turing\tbs_liushengbo.dbf'
size 100m
autoextend on next 10m
maxsize unlimited
5.给用户授权
grant connect,resource,dba to 用户名;
重置用户的登录密码--linux命令
su -oracle
sqlplus /nolog
conn / as sysdba;
alter user xiaoming identified by xiaominng;
重置用户的登录密码--dos命令
set oracle_sid; //数据库启动
sqlplus / as sysdba; //以系统管理员登录
show user ; //显示用户名
alter user sys identified by 123456; //修改密码
connect sys/123456; //用户名和密码登录