Oracle中基本sql语句

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; //用户名和密码登录


你可能感兴趣的:(Oracle)