--oracle创建用户并授权
--创建用户表空间
CREATE TABLESPACE JPM_DATA
LOGGING
DATAFILE ‘D:\oracle\11g\app\oracle\oradata\XE\JPM_DATA.DBF‘
SIZE 1024M
AUTOEXTEND ON
NEXT 1024M MAXSIZE 5120M
EXTENT MANAGEMENT LOCAL;
--创建用户
--授予权限
grant unlimited tablespace to jpm;--授予jpm用户使用表空间的权限
grant create session to jpm;--授予jpm用户创建session的权限,即登陆权限
grant create table to jpm;--授予创建表的权限
grant drop table to jpm;--授予删除表的权限
grant insert table to jpm;--插入表的权限
grant update table to jpm;--修改表的权限
grant ALL privileges to jpm;--这条比较重要,授予所有权限(all)给用户(jpm)
GRANT DBA TO jpm;
--查看权限
select * from user_sys_privs;--查看当前用户所有权限
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE IN (‘jpm‘);
新建表考虑的几点要素:
1. 命名要规范
PK_表名称
IDX_表名_序列值
SEQ_表名
2. 合理设计表字段
CREATE_TIME
)、修改时间(UPDATE_TIME
)、操作人员(OPERATOR
)、备注(REMARK
)。3. 合理设计表的索引
4. 关联表之间的字段设计
开发时的几条建议:
(1)任何 SQL 语句只要在 where 语句后面添加 is null 或者 is not null,那么 Oracle 优化器将不再使用索引,因此可以为这些列设置默认值,比如用 0 表示空,这样把是否为空转为判断是否为 0,就可以利用上索引。
(2)SQL 在执行带通配符的语句时,如果 %
在首位,那么在字段上建立的主键或者索引将会失效,应该避免类似语句的出现:
SELECT * FROM T_USER T WHERE T.USER_ID = ‘%19900606%‘;
但当通配符不在模糊匹配词首出现,又能使用索引,例如:
SELECT * FROM T_USER T WHERE T.USER_ID = ‘1101011990%‘;
(3)用 in 代替 or
低效:
SELECT *
FROM T_USER T
WHERE T.USER_NAME = ‘张三丰‘
OR T.USER_NAME = ‘孙悟空‘
OR T.USER_NAME = ‘刘备‘;
高效:
SELECT * FROM T_USER T WHERE T.USER_NAME IN (‘张三丰‘, ‘孙悟空‘, ‘刘备‘);
(4)避免在索引列上使用函数,以及避免在索引列上使用计算
(5)避免出现索引列自动转换,当比较不同数据类型的数据时, ORACLE自动对列进行简单的类型转换,因此如果是字符串类型,一定要加引号,如果是数字类型,一定不要加引号。
(6)用 >=
替代 >
原文:https://www.cnblogs.com/zsqfightyourway/p/9292893.html