Sys 超级管理员
System dba
scott
Oracle创建用户
创建用户命令
create user 用户名 identified by 密码;
注意:新创建的用户没有任何权限,包括登陆数据库
Oracle权限
oracle权限分类
系统权限:
比如连接数据库,创建权限过程,创建表等
Oracle规定好能够做的操作
对象权限:
针对某一个对象的权限,对系统权限更细化,细化到某一个对象。 比如对 ,某个表的添加查询,删除,更新等。
授权命令
语法格式
Grant 命令1,命令2 to 用户
授予登陆数据库的权限
Grant create session to cz
授予查询某表的权限
Grant select on 表名 to 用户名
连接命令:
Conn 用户名/密码
在命令窗口打开可以换行写sql的命令:
Ed;
输入/执行
Oracle角色
Oracle角色分类
系统预定义角色:系统定义好的角色
用户自定义角色:如果系统定义好的不够用
自己定义一个
Oracle角色的作用
授予角色的本质就是授予权限,
他是授予的一组权限,为了解决很多权限需要一个一个去授予。
Oracle三个重要的系统角色
查询所以的系统角色:
select * from dba_roles
CONNECT:连接角色
RESOURCE:资源角色
DBA:数据库管理员
查询角色的权限:
select * from dba_sys_privs where grantee = ‘DBA’
授予角色
Grant 角色名 to 用户名
自定义角色
创建角色命令
Create role 角色名
给自定义角色授权
Grant 权限 to 角色名
Oracle撤销权限
撤销权限命令:
Revoke 权限 from 用户
Oracle权限的传递
权限直接不支持传递
在授权的时候可以传递权限的命令
With grant option
对象权限会受连带责任同时被权限
系统权限不受连带责任也就是不会同时被取消
Oracle系统函数
数值函数
求绝对值
select abs(-12.1) from dual
进一法
select ceil(-12.1) from dual
去尾法
select floor(-12.9) from dual
四舍五入
select round(12.5) from dual
四舍五入保留2..n位小数
select round(12.567,2) from dual
数字截取
默认截取整数
select trunc(12.967) from dual
截取小数后几位
select trunc(12.917,2) from dual
截取小数前几位
select trunc(912.9,-2) from dual
字符函数
转换成大写
select upper(‘abcd’) from dual
转换成小写
select lower(‘ABCD’) from dual
去掉空格(有时间空格的问题很坑)(前后空格)
select trim(’ accd’) from dual
去掉左边空格
select ltrim(’ accd ‘) from dual
去掉右边的空格
select rtrim(' accd ') from dual
去掉左边指定的字符
select ltrim(‘abcd’,’ac’) from dual
去掉右边指定的字符
select rtrim(‘abcd’,’dd’) from dual
替换函数
select replace(‘this is a girl’,’girl’,’girl 2’) from dual
字符串相加
select ‘aa’||’bb’ from dual
select concat(‘aa’,’cc’) from dual
截取字符串的函数
select substr('abcd',3,1) from dual
第一个参数是:截取的位置
第二个参数是:截取的长度
求长度的函数
select length(‘abcd’) from dual
转换函数
转化成数字
select to_number('1')+to_number('2') from dual
转化成字符串
select to_char(11)|| to_char(22) from dual
*转化成字符串,格式化时间
来个完整年月日时分秒的时间
select to_char(sysdate,'yyyy-mm-dd hh24-mi-ss') from dual
时间24小时制
select to_char(sysdate,'yyyy-mm-dd hh24-mi-ss') from dual
处理Null值的函数
Nvl函数:
select nvl('cc','bb') from dual
如果第一个参数有值就返回把本身,如果没有值就返回第二个参数
如果第一个参数为空就返回第二个参数,如果第一个参数不为空就返回本身
Nvl2函数:
select nvl2(”,’bb’,’cc’) from dual
IF ELSE
declare ptype int:=5;
begin
--ptype:=1;
if ptype=1 then
dbms_output.put_line('河东狮');
elsif ptype=2 then
dbms_output.put_line('河南狮');
elsif ptype=3 then
dbms_output.put_line('西狮');
else
dbms_output.put_line('狮');
end if;
end;
Case when
declare ptype int:=6;
begin
case ptype
when 1 then
dbms_output.put_line('大');
when 2 then
dbms_output.put_line('更大');
else
dbms_output.put_line('超级大');
end case;
end;
配合查询使用case when
select (
case job
when 'CLERK' then '普通员工'
when 'SALESMAN' then '销售人员'
when 'MANAGER' then '部门经理'
when 'PRESIDENT' then '董事长'
when 'ANALYST' then '数据分析师'
else
'其他'
end
),
ename
from scott.emp
oralce循环
loop循环
loop
dbms_output.put_line(ptype);
--指定一个退出条件
exit when ptype=50;
ptype:=ptype+1;
end loop;
while循环
while(ptype<=10) --和loop循环不同的地方就是退出条件
loop
dbms_output.put_line(ptype);
ptype:=ptype+1;
end loop;
for循环
for ptype in 1..50
loop
dbms_output.put_line(ptype);
end loop;