一、创建数据库 1、创建用户
SQL> create user username identified by password;
username:用户名
password:密码
2、创建临时表空间
create temporary tablespace templ_tablespaceNmae
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'
size 10m
autoextend on
next 10m maxsize 50m
templ_tablespaceNmae:命名临时表空间名称
路径、数据大小自定义
3、创建命名空间
create tablespace tablespaceName
nologging
datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf'
size 10m
autoextend on
next 10m maxsize 100m
如果需要日志,将nologging 改为logging;
tablespaceName:命名空间名称;
路径、数据大小自定义
4、将空间分配给用户
SQL> alter user username default tablespace tablespaceName;
username:用户名
tablespaceName:命名空间名称
5、给用户授权
SQL> grant create session,create table,unlimited tablespace to username;
username:用户名
6、连接数据库
SQL> conn username/password;
连接数据库
二、忘记密码时修改方式
1、用安装ORACLE的用户登录:sqlplus / as sysdba;2、修改用户密码:
alter user system identified by password;
这里是将用户名为system的用户密码修改为password
一次类推可以用此方法修改别的用户名密码:
alter user sys identified by password;
3、连接数据库connect sys/password
三、oracle使用技巧
1、复制并创建一张表
create table test1 as (select * from test)
创建test1表,并完全复制test表
2、创建序列
CREATE SEQUENCE [user.]sequence_name
[increment by n]
[start with n]
[maxvalue n | nomaxvalue]
[minvalue n | nominvalue];
INCREMENT BY: 指定序列号之间的间隔,该值可为正的或负的整数,但不可为0。序列为升序。忽略该子句时,缺省值为1。
START WITH:指定生成的第一个序列号。在升序时,序列可从比最小值大的值开始,缺省值为序列的最小值。对于降序,序列可由比最大值小的值开始,缺省值为序列的最大值。
MAXVALUE:指定序列可生成的最大值。
NOMAXVALUE:为升序指定最大值为1027,为降序指定最大值为-1。
MINVALUE:指定序列的最小值。
NOMINVALUE:为升序指定最小值为1。为降序指定最小值为-1026。
举例:
create sequence SEQ_ID
increment by 1
start with 1
maxvalue 999999999;
查询序列的语句:
select SEQ_ID.NEXTVAL from dual
ALTERSEQUENCE [user.]sequence_name
[INCREMENT BY n]
[MAXVALUE n| NOMAXVALUE ]
[MINVALUE n | NOMINVALUE];
修改序列可以:
修改未来序列值的增量。
设置或撤消最小值或最大值。
转变缓冲序列的数目。
指定序列号是否是有序。
4、删除序列
DROP SEQUENCE [user.]sequence_name;
从数据库中删除一序列。
5、数据库时间字段值与当前数据库时间对比
select * from Table T where to_char(T.date,'yyyy-MM-dd') > to_char(sysdate,'yyyy-MM-dd');
SELECT to_char(to_date('T.date','yyyy-mm-dd HH24:mi'),'yyyy-mm-dd HH24:mi') FROM table T; --T.date = 2002-08-26 14:22
6、查询出表中字段值重复数据
select Table1.*
from Table1 right join (
select ID1, ID2 From Table1 Group by ID1, ID2 having Count(ID1) > 1 and Count(ID2) > 1 ) T
on Table1.id1 = T.id1 and Table1.id2 = T.id2
7、分页查询
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM table_name) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21
8、查询出表中字段值非重复数据
select Table1.* from Table1 right join ( select ID1, ID2 From Table1 Group by ID1, ID2 having Count(ID1) = 1 and Count(ID2) = 1 ) T on Table1.id1 = T.id1 and Table1.id2 = T.id2select Table1.* from Table1 right join ( select ID1, ID2 From Table1 Group by ID1, ID2 having Count(ID1) > 1 and Count(ID2) > 1 ) T on Table1.id1 = T.id1 and Table1.id2 = T.id2
这个语句与第六条语句的区别在于把大于号改成等号
9、删除用户
drop user username;
如果报无法删除当前连接用户,执行以下语句查找sid,和serial#编码:
select username,sid,serial# from v$session;
找到对应的sid及serial#号码,在下面语句中对号入座,删除用户连接:
alter system kill session'532,4562';
然后再执行删除用于语句。
10、移除用户权限
revoke CREATE USER,ALTER USER,DROP USER from syj --取消syj用户权限和对象特权
8、查询出表中字段值非重复数据
select Table1.* from Table1 right join ( select ID1, ID2 From Table1 Group by ID1, ID2 having Count(ID1) = 1 and Count(ID2) = 1 ) T on Table1.id1 = T.id1 and Table1.id2 = T.id2select Table1.* from Table1 right join ( select ID1, ID2 From Table1 Group by ID1, ID2 having Count(ID1) > 1 and Count(ID2) > 1 ) T on Table1.id1 = T.id1 and Table1.id2 = T.id2
这个语句与第六条语句的区别在于把大于号改成等号