DDL(数据定义语言)

  1. creater

    • 创建数据表

      ceater table 表名 ();

  2. alter

    • 修改表结构

      添加字段:alter table 表名 add 列名 数据类型 null

      删除字段:alter table 表名 drop column 列名

  3. drop

    • 删除数据表

      drop table 表名

  4. truncate

DML(数据操作语言)

  1. insert(插入语句)

    insert into 表名(列名,列名,....)values("对应的列值","对应的列值");

    插入一条语句,字段的值,类型必须一致。

  2. update(更新语句)

    update 表名 set 列名=修改的新值

  3. delete(删除语句)

    • 删除表中全部数据

      delete from 表名

    • 根据条件删除

      delete from 表名 where 列名=列值

  4. select(查询语句)

    • 查询语句比较强大,我这里只简单写一个基础语法,下次单独写一遍关于查询的。

      select * from 表名

DCL(数据控制语言)

主要实现用户的权限控制,要实现用户的管理操作,必须要提供管理的权限(即用sys/system来操作)

  1. 创建用户

    creater user 用户名 identified by 密码

    用户刚刚创建的时候还不能登陆,因为缺少session权限

  2. 授权

    grant create session to 用户名

    但是我们在创建用户的时候一个个的分配权限太麻烦,在我们Oracle中,提供了两种角色(connectresource),这两个角色就相当于一个权限包,里面包含了我们所需要的一些权限,我只需要将这个角色给用户,用户就有了角色里面相应的权限。

  3. 给用户分配角色

    grant connect,resource to 用户名

    权限分配后,一定要重新登陆。

    我们可以通过,数据字典来查看角色里面拥有的权限

  4. 查看角色拥有的权限

    -- 该角色的系统权限
    select* from dba_sys_privs where grantee = 'dba'
    -- 该角色的对象权限
    select * from dba_tab_privs where grantee = 'dba'
    -- 查询某个用户具有多少角色
    select* from dba_role_privs where grantee = '用户名';
  5. 修改用户密码必须是管理员账号

    alter user 用户名 identified by 密码

  6. 让密码失效:登录之后需要立即修改密码

    alter user 用户名 password expire

  7. 锁定用户

    alter user 用户名 account lock

  8. 解锁用户

    alter user 用户名 accoun unlock

  9. 指定用户输入密码错误的次数,并指定超过次数之后的锁定时间:

    --创建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
  10. 让用户定期修改密码,若到期后不修改,则在宽限期后锁定用户:

    --创建profile文件
    create profile myprofile limit password_life_time 10 password_grace_time 2;
    --10天后修改密码,宽限期为2天
    alter user scott profile myfrofile;
  11. 删除profile文件:

    drop profile myprofile [cascade]

  12. 对象权限

    两个普通用户之间不能互相访问资源,但是管理员可以访问;但是我们如果想让一个用户访问到另一个用户的资源该怎么办?

    这就要在管理员界面将访问另一个用户的权限赋予给他:

    实际上访问一个用户,用到的一共就四个权限:insert update select delete

    我们一般只给一个用户查看(select) 的权限:

    grant select on scott.emp to tog;(将scott的emp表的查看权限赋予给dog)
  13. 回收权限

    revoke connect,resource from dog;
    revoke create session,create table from dog;
  14. 删除用户

    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(事务控制语言)

  1. commit(提交)

    事务的提交比较简单;直接在执行DML语句后进行提交即可,如果不提交事务则刚刚通过DML语句进行修改的内容还未保存到数据库中,只在当前用户的连接会话中有效。要永久变更数据需要显示地执行提交、回滚或者退出当前回话(如退出sqlplus)。

    提交的命令为:commit

  2. 保存点(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的更多相关文章

  1. SQL语言DDL DML DCL TCL四种语言

    1.DDL(Data Definition Language)数据库定义语言:DDL使我们有能力创建或删 除表格.可以定义索引(键),规定表之间的链接,以及施加表间的 约束. • 常见DDL 语句: ...

  2. SQL 四大功能DDL/DML/DCL/TCL

    SQL主要分成四部分:(1)数据定义.(SQL DDL)用于定义SQL模式.基本表.视图和索引的创建和撤消操作.(2)数据操纵.(SQL DML)数据操纵分成数据查询和数据更新两类.数据更新又分成插入 ...

  3. SQL中的四种语言DDL,DML,DCL,TCL

    1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...

  4. DDL DML DCL TCL之不同

    http://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands DDL Data Definiti ...

  5. 数据库:DDL/DML/DCL/TCL基本概念

    SQL(Structure Query Language)语言是数据库的核心语言 1. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块: ...

  6. SQL四种语言:DDL,DML,DCL,TCL

    1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...

  7. SQL四种语言:DDL,DML,DCL,TCL 的区别

    1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...

  8. 数据库必会必知 之 SQL四种语言:DDL DML DCL TCL

    作者:泥瓦匠 今天群里面讨论,DDL 还是 DML,我这种小白还是总结下他们的区别吧. 1. DDL - Data Definition Language 数据库定义语言:定义数据库的结构. 其主要命 ...

  9. 数据库必会必知 之 SQL四种语言:DDL DML DCL TCL(转)

    今天群里面讨论,DDL 还是 DML,我这种小白还是总结下他们的区别吧. 1. DDL – Data Definition Language 数据库定义语言:定义数据库的结构. 其主要命令有CREAT ...

随机推荐

  1. lua自写限制并发访问模块

    注意:ngx.say跟ngx.exit是不可以共存,否则会出现ngx.exit无法正常执行 1.定义lua共享内存20m lua_shared_dict ceshi 20m; 2.再location ...

  2. netty系列之:分离websocket处理器

    目录 简介 netty的消息处理 处理WebSocketFrame 处理HTTP 编码和解码器 总结 简介 在上一篇文章中,我们使用了netty构建了可以处理websocket协议的服务器,在这个服务 ...

  3. ❤️【Python从入门到精通】(二十六)用Python的PIL库(Pillow)处理图像真的得心应手❤️

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本篇重点介绍Python处理图像的标准库PIL库,处理图像真的的很方便. 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题及需要,欢迎踊跃 ...

  4. 三千字介绍Redis主从+哨兵+集群

    一.Redis持久化策略 1.RDB 每隔几分钟或者一段时间会将redis内存中的数据全量的写入到一个文件中去. 优点: 因为他是每隔一段时间的全量备份,代表了每个时间段的数据.所以适合做冷备份. R ...

  5. 自动化运维利器Ansible要点汇总

    由于大部分互联网公司服务器环境复杂,线上线下环境.测试正式环境.分区环境.客户项目环境等造成每个应用都要重新部署,而且服务器数量少则几十台,多则千台,若手工一台台部署效率低下,且容易出错,不利后期运维 ...

  6. 工厂模式--摆脱你日复一日new对象却依旧单身的苦恼!

    前言 每每谈及到Java,就不免会想到一个悲伤的事实:你是否每天都在new对象,却依然坚守在单身岗上屹立不倒.(所谓面向对象编程hhh),这篇来学一下工厂模式,摆脱new对象的苦恼! 知识点 传统工厂 ...

  7. better-scroll快速上手及封装(vue项目)

    愿你有诗有梦,有坦荡荡的远方 本文声明:这是一篇学习coderwhy老师的vue2课程的一个笔记,所以本文章是在vue项目中实现,没学过vue的大佬们可以举一反三. 使用场景及介绍 BetterScr ...

  8. 剑指offer:JZ12 矩阵中的路径

    JZ12 矩阵中的路径 描述 请设计一个函数,用来判断在一个n乘m的矩阵中是否存在一条包含某长度为len的字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上, ...

  9. Java:线程池

    Java:线程池 本笔记是根据bilibili上 尚硅谷 的课程 Java大厂面试题第二季 而做的笔记 获取多线程的方法: 实现 Runnable 接口 实现 Callable 接口 实例化 Thre ...

  10. 寻找写代码感觉(八)之SpringBoot过滤器的使用

    一.什么是过滤器? 过滤器是对数据进行过滤,预处理过程,当我们访问网站时,有时候会发布一些敏感信息,发完以后有的会用*替代,还有就是登陆权限控制等,一个资源,没有经过授权,肯定是不能让用户随便访问的, ...