5Oracle数据库视图,权限,表更新

VIEW视图的定义

​ 也称虚表,不占物理空间,这个也是相对概念,因为视图本身定义语句还需要存储在数据字典李,视图只有逻辑定义 ,每次使用只是重新执行SQL.

视图

​ 如果普通用户第一次创建视图,提示没有权限 ,要使用管理员修改权限

sqlplus /nolog
conn sys/admin@orcl as sysdba;

//授权
grant create view to scott;

//回收权限
revoke create view from scott;

创建视图

​ create view v_emp as select * from emp where deptno = 20;
–视图的使用
​ select * from v_emp;
–向视图中添加数据,执行成功之后,需要提交事务,绿色表示提交事务,让数据生效,
– 红色表示回滚事务,让数据恢复原状态;
​ insert into v_emp(empno,ename) values(1111,‘张三’);
–如果定义的视图是非只读视图的话,可以向表中插入数据
–如果是只读视图,则不可以插入数据

–创建只读权限视图,无法进行增删改查操作。并进行演示
create view v_emp2 as select * from emp with read only;
select * from v_emp2;
insert into v_emp2(empno,ename) values(222,‘李四’);

–删除视图
drop view v_emp2;
drop view v_emp;
–当删除视图中数据的时候,如果数据来源于多个基表,则此时不能全部进行删除
–只能删除一个表中的数据

用户管理(了解)

1、创建用户

语法: create user username identified by password;

下划先为用户密码

create user bjmsh identified by bjmsb;

2、查询用户是否创建

select username from dba_users;

用户授权

账户授权语法:

​ grant privileges [ON object_name] to username

将权限privileges授予用户username

​ SQL>grant create session to John

如果要收回授予

用户John的scott用户表emp的所有权限,使用下列SQL语句:

​ SQL>revoke all on scott.emp from John

修改用户密码

将John用户的口令修改为newpsw

​ alter John indentified by newpsw

删除John操做

​ drop user John csscade

测试John是否存在

​ conn Jojn/newpsw@test;

查看自己的权限

​ select * from user_sys_privs;

序列sequence

​ --在Oracle中如果需要完成一个列得自增操作,必须要使用序列

▪ 创建序列的语法:

create sequence seq_name --seq定义名称随便定义

increent by n --每次增长的值是几

start with n --从哪个值开始

maxvalue n|nomaxvalue 10^27 or -1 --最大值是多少

minvalue n|no minvalue --最小值是多少

cycle|nocycle --是否进行循环【当超过最大值时,是否循环再走一遍】

cache n|nocache --是否有对应得一个缓存【】

实际操作:

create sequence my_sequence
increment by 2
start with 1;

–如何使用?

–注意:如果创建好序列之后,没有经过任何的使用,那么就不能获取当前的值
– 必须要先执行nextval之后才能获取当前的值

–查看当前序列的值
select my_sequence.currval from dual;
–获取序列的下一个值
select my_sequence.nextval from dual;

–删除序列
drop sequence 序列名;

–具体使用向emp表中,添加序列数据
insert into emp(empno,ename) values(my_sequence.nextval,‘hehe’);

select * from emp;

DML:数据操作语言

​ --在实际项目中,使用最多的时读取操作,但是插入数据和删除数据同类重要,而修改操作相对较少

–DML;数据操作语言

–在实际项目中,使用最多的时读取操作,但是插入数据和删除数据同类重要,而修改操作相对较少

插入操作
元组的插入
结果的插入

–增

–最基本的插入方式【元组的插入】
– insert into tablename values(val1,val2…);
–如果表明没有列,那么只能将所有列的插入
–insert into tablename(col1,col2…) values(val1,val2…);
–可以指定向哪些列中插入数据

			insert into emp values(2222,'haha','clerk',7902,to_date('2019-11-2','YYYY-MM-dd'),1000,500,10);

–向部分列插入数据的时候,不是随便列插入的,要遵顼创建表的时候规范
insert into emp(empno,ename) values(3333,‘wangwu’);

–创建表的其他方式
–复制表,同时复制表数据【不会复制约束】
create table emp2 as select * from emp;
–复制表结构,但是不复制表数据【不会复制约束】
create table emp3 as select * from emp where 1=2;

–删

/*
删除操作:
delelte from tablename where condition【条件】;
Delete from table 表示从表中删除一切元组
如果想从表中删除所有行,不要使用delete,可使用过 truncate table 语句,完成相同的工作,但是速度更快(没有事务)
*/

​ select * from emp2;
–删除满足条件的数据
​ delete from emp2 where deptno = 10;
–把整张表的数据全部清空
​ delete from emp2;
–truncate table,跟delete有所不同,在进行删除的时候经过事务,而在truncate 不经过事务,一旦删除就是永久删除,不具备回滚操作
​ truncate table emp2;

–改

/*
修改操作
update tablename set col1 = val1,cal2 = val2 where condition;
可以更新或者修改满足条件的一个或者多个列

*/
update emp set ename = ‘heihei’ where ename = ‘haha’;
update emp set job = ‘teacher’,mgr = 1122 where empno = ‘3333’;

/*
增删改是数据库常用操作,在进行的时候都需要(事务)的保证,也就是说每次在 PLsql 中执行sql语句之后都需要完成condition的操作
所有说事务变的非常关键
最住哟啊的目的为了保证数据一致性
如果要保证数据的安全,最主要的方式就是加锁的操作 MVCC
为了提高效率,有可能多个操作在同一个事务中执行,那么就有可能出现部分成功,基于这种情况,就需要事务的控制
*/

上一篇:Leetcode_654.最大二叉树


下一篇:Flink通过SQLClinet创建kafka源表并进行实时计算