Oracle 安装如下:
https://jingyan.baidu.com/article/f79b7cb32095f79144023eae.html
默认账户
Sys 123456 as sysdba 数据库最高权限
System 123456 dba(数据库管理员)
Scott tiger(养猫的名字) (oracle公司第一个员工)
Oracle 常用的命令
查询当前登录的用户
Show user
登录命令/切换账户的命令
Conn 用户名/密码
锁定账户命令
Alter user 用户名 account lock
解锁账户命令
Alter user 用户名 account unlock
修改密码的命令
Alter user 用户名 identified by 密码
提交数据的命令
Commit
撤销/返回的命令
Rollback
Oracle授权的命令
grant 权限/角色权 to 用户名/角色
给scott查询test表的权限
grant select on 用户名.表名 to scott
给scott添加test表的权限
grant insert on 用户名.表名 to scott
给scott删除,更新test表的权限
grant delet,update on 用户名.表名 to scott
Oracle撤销授权的命令
Revoke 权限 from 用户名
取消scott查询test表的权限
Revoke select on 用户名.表名 from scott
Revoke select,update on 用户名.表名 from scott
创建用户
create user 用户名 identified by 密码
给用户等录权限
grant create session to 用户
删除用户
drop user 用户名
drop user 用户名 cascade
创建角色
Create role 角色名称
Oracle 权限传递
grant create session to 用户名 with admin option
权限传递前提:
1.自己具有该权限
2.权限配置的权限
with admin option(系统权限)
with grant option(对象权限)
权限回收
如果是对象权限会取消,如果是系统权限不会连带取消
-- 创表
ed;
create table Text
(
Id int primary key ,
Cname nvarchar2(20)
)
/;
同义词:相当于表的别名
创建同义词
create synonym 自定义名 for scott.emp;
视图:虚拟的表
创建视图
1;
ed;
create view view_emp
as
select * from scott.emp
/;
2; -- or replace 替换/覆盖 read only 只读
ed;
create or replace view view_emp
as
select * from scott.emp
with read only
/;
隐藏具体表
代码重用;
不改表结构基础上进行数组重组
序列:序列+触发器=自增长
创建序列
create sequence 名字
start with 1 -- 开始
increment by 1 -- 增加的值
maxvalue 99 -- 最大值 onmaxvalue -- 不要最大值(可以不写)
cycle -- 循环 oncycle -- 不要循环(可以不写)
查看序列
select 序列名.nextval from dual;
select 序列名.currval from dual;
修改序列
alter sequence 序列名
maxvalue 99999
cycle
删除序列
drop srquence 序列名
开启控制器输出
set serveroutput on;
dbms_output.put_line(i);
Oracle 编程
判断语句
ed;
declare i int:=2;
begin
if(i=1) then
dbms_output.put_line('小明');
elsif(i=2) then -- 是 els
dbms_output.put_line('小明2');
else
dbms_output.put_line('小明3');
end if;
end;
LOOP循环
declare i int:=1;
begin
while i <=30 -- 循环退出来的条件
loop
dbms_output.put_line(i);
i:=i+1;
end loop;
end;
For循环
declare i int:=1;
begin
for i in 1..10
loop
dbms_output.put_line(i);
end loop;
end;
While循环
declare i int:=1;
begin
while i<10
loop
dbms_output.put_line(i);
i:=i+1;
end loop;
end;
-- 查询所有的角色
select * from dba_roles
-- 查询某个角色的系统权限
select * from dba_sys_privs where grantee='DBA'
-- 查询某个角色的对象权限
select * from dba_tab_privs where grantee='DBA'
-- 查询某个角色的角色权限
select * from dba_role_privs where grantee='DBA'
-- 查找同义词
select * from dba_synonyms