Oracle四大语言DDL DML DCL TCL
DDL(数据定义语言)
creater
创建数据表
ceater table 表名 ();
alter
修改表结构
添加字段:alter table 表名 add 列名 数据类型 null
删除字段:alter table 表名 drop column 列名
drop
删除数据表
drop table 表名
truncate
DML(数据操作语言)
insert(插入语句)
insert into 表名(列名,列名,....)values("对应的列值","对应的列值");
插入一条语句,字段的值,类型必须一致。
update(更新语句)
update 表名 set 列名=修改的新值
delete(删除语句)
删除表中全部数据
delete from 表名
根据条件删除
delete from 表名 where 列名=列值
select(查询语句)
查询语句比较强大,我这里只简单写一个基础语法,下次单独写一遍关于查询的。
select * from 表名
DCL(数据控制语言)
主要实现用户的权限控制,要实现用户的管理操作,必须要提供管理的权限(即用sys/system来操作)
创建用户
creater user 用户名 identified by 密码
用户刚刚创建的时候还不能登陆,因为缺少session权限
授权
grant create session to 用户名
但是我们在创建用户的时候一个个的分配权限太麻烦,在我们Oracle中,提供了两种角色(connect,resource),这两个角色就相当于一个权限包,里面包含了我们所需要的一些权限,我只需要将这个角色给用户,用户就有了角色里面相应的权限。
给用户分配角色
grant connect,resource to 用户名
权限分配后,一定要重新登陆。
我们可以通过,数据字典来查看角色里面拥有的权限
查看角色拥有的权限
-- 该角色的系统权限
select* from dba_sys_privs where grantee = 'dba'
-- 该角色的对象权限
select * from dba_tab_privs where grantee = 'dba'
-- 查询某个用户具有多少角色
select* from dba_role_privs where grantee = '用户名';
修改用户密码(必须是管理员账号)
alter user 用户名 identified by 密码
让密码失效:登录之后需要立即修改密码
alter user 用户名 password expire
锁定用户
alter user 用户名 account lock
解锁用户
alter user 用户名 accoun unlock
指定用户输入密码错误的次数,并指定超过次数之后的锁定时间:
--创建profile 文件
create profile lock_account limit failed_login_attempts 3 password_lock_time 2
--最多可以输入3次,超过后用户将被锁定2天
-- lock_account: profile文件名
alter user scott profile lock_account
让用户定期修改密码,若到期后不修改,则在宽限期后锁定用户:
--创建profile文件
create profile myprofile limit password_life_time 10 password_grace_time 2;
--10天后修改密码,宽限期为2天
alter user scott profile myfrofile;
删除profile文件:
drop profile myprofile [cascade]
对象权限
两个普通用户之间不能互相访问资源,但是管理员可以访问;但是我们如果想让一个用户访问到另一个用户的资源该怎么办?
这就要在管理员界面将访问另一个用户的权限赋予给他:
实际上访问一个用户,用到的一共就四个权限:insert update select delete
我们一般只给一个用户查看(select) 的权限:grant select on scott.emp to tog;(将scott的emp表的查看权限赋予给dog)
回收权限
revoke connect,resource from dog;
revoke create session,create table from dog;
删除用户
drop user 用户 cascade
假如,用户A创建视图a需要访问用户B的数据b,这个时候,就需要把B的查看b表权限赋给A,但是,如果用户C想要查看用户A的视图a,就需要把A的查看视图a的权限赋给C,但是这个时候,会提示ora-01720 授权选项对于‘b’不存在,这是因为,视图a中的数据中有用户B中b表的数据,而C是没有权限查看的,这个时候,需要在把B的查看b表的权限语句后面加上 with grant option,这样,就可以把A的查看视图a的权限赋给C了。
grant select on a to C with grant option;
权限分为系统权限和对象权限两种:
系统权限:create table ,create session…
对象权限:insert ,select,update,delete
而因为我们在使用过程中一个个的分配权限太麻烦,又定义了一个角色权限:他属于一个权限包,里面有一揽子系统或者对象权限。
TCL(事务控制语言)
commit(提交)
事务的提交比较简单;直接在执行DML语句后进行提交即可,如果不提交事务则刚刚通过DML语句进行修改的内容还未保存到数据库中,只在当前用户的连接会话中有效。要永久变更数据需要显示地执行提交、回滚或者退出当前回话(如退出sqlplus)。
提交的命令为:commit
保存点(savepoint)与回滚(rollback)
保存点savepoint一般与回滚rollback配合使用。在设置了savepoint后事务的粒度可以控制的更加细化,可以回滚到特定的保存点。
保存点(savepoint)语法:
savepoint<savepoint_name>
创建一个保存点,名称为a,示例:
savepoint a
【注意】当创建保存点之后执行的DML操作,可以进行回滚,而保存点之前未提交的DML操作不受影响。
回滚(rollback)
rollbac [to savepoint]
回滚到a保存点,既保存点a之后的所有未提交的DML都无效。示例:
rollbac to a
保存点与回滚完整示例:
--1、创建保存点a savepoint a; --2、插入emp数据 it1 insert into emp(empno,ename) values(1234,'it1'); --3、创建保存点b savepoint b; --4、插入emp数据 it2 insert into emp(empno,ename) values(1235,'it2'); --5、查看emp表数据,存在it1、it2两条数据 select ename from emp; --6、回滚到保存点b,即it2数据将消失 rollback to b; --7、查看emp表数据,存在it1的数据,it2已不在 select ename from emp; --8、提交数据 commit; --9、查看emp表数据,存在it1的数据 select ename from emp; --10、回滚到保存点a,将报错保存点不存在的错误信息 rollback to a;
Oracle四大语言DDL DML DCL TCL的更多相关文章
- SQL语言DDL DML DCL TCL四种语言
1.DDL(Data Definition Language)数据库定义语言:DDL使我们有能力创建或删 除表格.可以定义索引(键),规定表之间的链接,以及施加表间的 约束. • 常见DDL 语句: ...
- SQL 四大功能DDL/DML/DCL/TCL
SQL主要分成四部分:(1)数据定义.(SQL DDL)用于定义SQL模式.基本表.视图和索引的创建和撤消操作.(2)数据操纵.(SQL DML)数据操纵分成数据查询和数据更新两类.数据更新又分成插入 ...
- SQL中的四种语言DDL,DML,DCL,TCL
1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...
- DDL DML DCL TCL之不同
http://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands DDL Data Definiti ...
- 数据库:DDL/DML/DCL/TCL基本概念
SQL(Structure Query Language)语言是数据库的核心语言 1. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块: ...
- SQL四种语言:DDL,DML,DCL,TCL
1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...
- SQL四种语言:DDL,DML,DCL,TCL 的区别
1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...
- 数据库必会必知 之 SQL四种语言:DDL DML DCL TCL
作者:泥瓦匠 今天群里面讨论,DDL 还是 DML,我这种小白还是总结下他们的区别吧. 1. DDL - Data Definition Language 数据库定义语言:定义数据库的结构. 其主要命 ...
- 数据库必会必知 之 SQL四种语言:DDL DML DCL TCL(转)
今天群里面讨论,DDL 还是 DML,我这种小白还是总结下他们的区别吧. 1. DDL – Data Definition Language 数据库定义语言:定义数据库的结构. 其主要命令有CREAT ...
随机推荐
- 检验appium环境是否正常:使用appium自动给手机安装app(注意:如果已存在该app,再执行会将原来的卸载再重装,需谨慎)
(注意:如果已存在该app,再执行会将原来的卸载再重装.泪的教训,我的微信被卸载重装了o(╥﹏╥)o,自动安装app这个步骤需谨慎操作) hi,前面几篇已经讲了appium环境的搭建.设备的连接, 那 ...
- 测试用例 setup 和 和 teardown
前言 学过unittest的都知道里面用前置和后置setup呾teardown非常好用,在每次用例开始前呾结束后都去执行一次.当然迓有更高级一点的 setupClass 呾 teardownClass ...
- Kubernetes-Service介绍(一)-基本概念
前言 本篇是Kubernetes第八篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战.Pod篇暂时应该还缺少两篇,等Service和存储相关内容介绍以后,补充剩下的两篇,有状态的Pod会涉及 ...
- PyTorch模型读写、参数初始化、Finetune
使用了一段时间PyTorch,感觉爱不释手(0-0),听说现在已经有C++接口.在应用过程中不可避免需要使用Finetune/参数初始化/模型加载等. 模型保存/加载 1.所有模型参数 训练过程中,有 ...
- 做毕设的tricks
CNKI上无法下载博硕士学位论文的PDF版本,只有CAJ版本,挺恶心的.直接下载安装Chrome extension就可以解决了. 链接:https://share.weiyun.com/5HGFF2 ...
- 14-Java锁的概述
14-锁的概述 乐观锁与悲观锁 乐观锁与悲观锁是数据库中引入的名词,但是在并发包里也引入了类似的思想,在这里我们还是有必要需要了解一下. 悲观锁指数据被外界修改持保守态度,认为数据会很容易被其 ...
- TypeScript 枚举指南
枚举是受 TypeScript 支持的数据类型.枚举允许您定义一组命名常量.使用它们可以更轻松地记录意图或创建一组不同的案例.枚举大多数用于面向对象的编程语言(如 Java 和 C#)中,现在也可以 ...
- 暑期 2021 | Serverless Devs 最全项目申请攻略来啦!
Serverless 是近年来云计算领域热门话题,凭借极致弹性.按量付费.降本提效等众多优势受到很多人的追捧,各云厂商也在不断地布局 Serverless 领域.但是随着时间的发展,Serverles ...
- System.Drawing Linux Centos7 The type initializer for 'Gdip' threw an exception
System.Drawing 在linux使用时提示异常 The type initializer for 'Gdip' threw an exception 解决方案: yum install au ...
- InstallScript脚本语言基本知识(一)
1.自定义函数 1 //函数的声明:prototype 返回值 函数名(形参类型1,...) 2 export prototype STRING GetPreDir(STRING); 3 4 //函数 ...