创建表空间:
--创建表空间:
create tablespace test_tablespace
datafile 'E:\oracleDB\test.dbf'
size 500m;
--创建用户:
create user test
identified by test
default tablespace test_tablespace;
--给用户赋权限:
grant dba to test;
如果建立好用户之后. 不想给用户太多权限. 就可以这样写.
--创建用户
create user test
identified by test
default tablespace test_tablespace;
--让用户可以差看表等数据.
ALTER USER test QUOTA UNLIMITED ON test_tablespace;
--给用户赋两个基本权限.
GRANT CONNECT, RESOURCE TO test;
建立好了用户, 肯定就可能要删除用户:
--删除用户
drop user test cascade;
修改密码:
alter user system identified by manager;
修改用户名:
修改用户名时必须, 使用sysdba的连接登录才能修改用户名. 如果使用JDBC连接, 就必须要这样写才能使用sysdba连接.
Class.forName("驱动名");
Properties conProps = new Properties();
conProps.put("user", "用户名");
conProps.put("password", "密码");
conProps.put("defaultRowPrefetch", "15");
conProps.put("internal_logon", "sysdba");
conn = DriverManager.getConnection("连接URL", conProps); SQL修改语句.
--老用户名一定是大写的. 因为oracle的数据库里保存的都是大写的. 所以新用户名也因该大写.
update user$ set name = '新用户名' where name = '老用户名';
--刷新数据库.
alter system checkpoint;
alter system flush shared_pool;
--修改了用户名之后, 密码也失效了. 所以必须修改一下密码. 此处是没有引号的.
alter user 用户名 identified by 密码;
创建表:
create table TEST(
TEST_ID number(10) PRIMARY KEY, --建立主键.
TEST_NAME varchar2(20) default 'XXXX' not null, --建立默认值. 字段不能为空.
);
comment on table TEST is '测试表'; --对表的描述.
comment on column TEST.TEST_NAME is '用户名'; --对字段的描述.
创建序列:
create sequence SEQ_TEST_ID --序列ID
minvalue 1 --最小序列
maxvalue 9999999999999999 --最大序列
start with 1 --开始
increment by 1 --增长大小
cache 8; --高速缓存
新增语句:
INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
删除语句:
DELETE FROM 表名称 WHERE 列名称 = 值
DELETE FROM Person WHERE LastName = 'Wilson'
查询语句:
SELECT 列名称 FROM 表名称
select userName, userPwd from test
where test.id = 0;修改语句:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
查询MD5
--语句查询.
select Utl_Raw.Cast_To_Raw(sys.dbms_obfuscation_toolkit.md5(input_string => 'userPwd'))
from dual
GUID:
select sys_guid() from dual
查询数据库用户:
select * from dba_users; --查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system
select * from all_users; --查看你能管理的所有用户!
select * from user_users; --查看当前用户信息 !
查询数据库表:
select table_name from user_tables;
多条件判断的sql:
select
oper.opid,
oper.user_name,
oper.user_host,
case
when oper.oper_type = 1 then 'System Manager'
else oper.oper_type = 2 then 'USER Manager'
end opertype, --别名
case
when oper.oper_object_type = 1 then 'User'
when oper.oper_object_type = 2 then 'Role'
when oper.oper_object_type = 3 then 'Broker'
when oper.oper_object_type = 4 then 'QM Manager'
when oper.oper_object_type = 5 then 'User Group'
when oper.oper_object_type = 6 then 'Msg Flow'
when oper.oper_object_type = 7 then 'Queue'
end objecttype --别名.
from esb_log_user_oper oper;
ORACLE数据字典视图的种类分别为:USER,ALL 和 DBA.
USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息
ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上
其他用户创建的对象但该用户有权访问的信息
DBA_*:有关整个数据库中对象的信息
(这里的*可以为TABLES,INDEXES,OBJECTS,USERS等。)
1、查看所有用户
select * from dba_user;
select * from all_users;
select * from user_users;
2、查看用户系统权限
select * from dba_sys_privs;
select * from all_sys_privs;
select * from user_sys_privs;
3、查看用户对象权限
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4、查看所有角色
select * from dba_roles;
5、查看用户所拥有的角色
select * from dba_role_privs;
select * from user_role_privs;
6、查看当前用户的缺省表空间
select username,default_tablespace from user_users;
7、查看某个角色的具体权限
如grant connect,resource,create session,create view to TEST;
8、查看RESOURCE具有那些权限
用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';
获取用户有的表的列名:
SELECT * from USER_TAB_COLUMNS t;
查看用户对哪些表的列有操作权限:
SELECT * FROM user_col_privs t;
用户对某些表列进行添加权限. 注意, select权限是没有列权限的. select是通过视图来控制. 而没有使用权限.
既: grant select(列名) on 表明 to 用户 会报错.
grant update(列名) on 表明 to 用户 而使用Update则不会报错.
获取当前登录用户:
select user from dual;
将表的权限授予全体用户:
--public表示是所有的用户,这里的all权限不包括drop
grant all on product to public;
union/union all运算:将查询的返回组合成一个结果, union all不过滤重复。
[sql] view plain copy
SELECTproduct_idFROMorder_items
UNION
SELECTproduct_idFROMinventories;
SELECTlocation_idFROMlocations
UNIONALL
SELECTlocation_idFROMdepartments;
intersect运算:返回查询结果中相同的部分。
[sql] view plain copy
SELECTproduct_idFROMinventories
INTERSECT
SELECTproduct_idFROMorder_items;
minus运算:返回在第一个查询结果中与第二个查询结果不相同的那部分行记录。
[sql] view plain copy
SELECTproduct_idFROMinventories
MINUS
oracle回收站, 设置开关:
alter session set recyclebin=off;
alter system set recyclebin=off;