SQL语言的四大组成部分——DCL(数据控制语言)

news2024/9/24 9:26:57

1️⃣前言

SQL语言中的DCL(Data Control Language)是一组用于控制数据库用户访问权限的语言,主要包括GRANT、REVOKE、DENY等关键字。

在这里插入图片描述

文章目录

  • 1️⃣前言
  • 2️⃣DCL语言
  • 3️⃣GRANT关键字
  • 4️⃣REVOKE关键字
  • 5️⃣DENY关键字
  • 6️⃣总结
  • 附:好书推荐

2️⃣DCL语言

在SQL语言中,DCL(数据控制语言)DML(数据操作语言)DQL(数据查询语言)DDL(数据定义语言) 一样,是SQL语言的四大基本组成部分。
在这里插入图片描述

DCL语言可以通过GRANTREVOKE两个关键字控制用户对数据库对象的访问权限,例如授予用户SELECT、INSERT、UPDATE、DELETE等权限,或者撤销用户对数据库对象的权限。

在MySQL中 用户的信息和具有的权限的信息 都是存放在系统数据库mysql中的user表中。
在这里插入图片描述

3️⃣GRANT关键字

GRANT用于授权给用户或用户组访问数据库对象的权限。 GRANT语句的语法如下:

GRANT permission ON object TO user;

其中,permission表示授权的权限,可以是SELECT、INSERT、UPDATE、DELETE等;object表示授权的数据库对象,可以是表、视图、存储过程等;user表示被授权的用户或用户组。

以下是GRANT关键字的详细使用示例:

  1. 授权用户SELECT权限:
GRANT SELECT ON table_name TO user_name;

说明:授权用户user_name对表table_name进行SELECT操作。

  1. 授权用户INSERT、UPDATE、DELETE权限:
GRANT INSERT, UPDATE, DELETE ON table_name TO user_name;

说明:授权用户user_name对表table_name进行INSERT、UPDATE、DELETE操作。

  1. 授权用户所有权限:
GRANT ALL PRIVILEGES ON table_name TO user_name;

说明:授权用户user_name对表table_name进行所有操作。

  1. 授权角色所有权限:
GRANT ALL PRIVILEGES ON table_name TO role_name;
GRANT role_name TO user_name;

说明:授权角色role_name对表table_name进行所有操作,并将该角色授权给用户user_name。

4️⃣REVOKE关键字

REVOKE用于撤销用户或用户组访问数据库对象的权限。 REVOKE语句的语法如下:

REVOKE permission ON object FROM user;

其中,permission表示要撤销的权限,可以是SELECT、INSERT、UPDATE、DELETE等;object表示要撤销权限的数据库对象,可以是表、视图、存储过程等;user表示被撤销权限的用户或用户组。

以下是REVOKE关键字的详细使用示例:

  1. 撤销用户SELECT权限:
REVOKE SELECT ON table_name FROM user_name;

说明:撤销用户user_name对表table_name的SELECT操作。

  1. 撤销用户INSERT、UPDATE、DELETE权限:
REVOKE INSERT, UPDATE, DELETE ON table_name FROM user_name;

说明:撤销用户user_name对表table_name的INSERT、UPDATE、DELETE操作。

  1. 撤销用户所有权限:
REVOKE ALL PRIVILEGES ON table_name FROM user_name;

说明:撤销用户user_name对表table_name的所有操作。

  1. 撤销角色所有权限:
REVOKE ALL PRIVILEGES ON table_name FROM role_name;
REVOKE role_name FROM user_name;

说明:撤销角色role_name对表table_name的所有操作,并将该角色从用户user_name中撤销。

5️⃣DENY关键字

DENY关键字用于限制用户或角色对某些数据库对象的访问权限,语法如下:

DENY permission [, permission] ON object TO {user | role | PUBLIC} [, {user | role | PUBLIC}] [WITH GRANT OPTION]

具体来说,它可以阻止用户或角色对某个表、视图、存储过程等对象的SELECT、INSERT、UPDATE、DELETE等操作。

其中,permission表示要限制的权限,可以是SELECT、INSERT、UPDATE、DELETE等;object表示要限制访问的对象,可以是表、视图、存储过程等;user或role表示要限制的用户或角色,PUBLIC表示所有用户或角色;WITH GRANT OPTION表示允许被授权的用户或角色再次授权。

下面是一个具体的代码示例,用于禁止用户Alice对表employee的SELECT和UPDATE操作:

DENY SELECT, UPDATE ON employee TO Alice

这样,当Alice尝试对employee表进行SELECT或UPDATE操作时,将会被拒绝访问。如果需要允许其他用户或角色对该表进行操作,可以使用GRANT语句进行授权。

在这里插入图片描述

6️⃣总结

DCL语言是SQL语言中非常重要的一个部分,它可以帮助数据库管理员控制用户对数据库的访问权限,保证数据库中数据的安全性和完整性。


附:好书推荐

在这里插入图片描述
《Python大学教程:面向计算机科学和数据科学》
通过本书,你将学习:

· 538个案例研究,471个习题和项目,557道自检习题。
· 基于IPython和Jupyter Notebook的即时反馈。
· 问题求解、算法开发、控制语句、函数等基础知识。
· 列表、元组、字典、集合、Numpy数组、pandas Series和DataFrame。
· 2D/3D的静态、动态和交互式可视化。
· 字符串、文本文件、JSON序列化、CSV、异常。
· 过程式、函数式和面向对象的程序设计方法。
· “数据科学入门”:基础统计、模拟、动画、随机变量、数据整理、回归。
· 隐私、安全、伦理、可重现、透明。
· AI、大数据和云数据科学案例研究:NLP、Twitter数据挖掘、IBM Watson、机器学习、深度学习、计算机视觉、Hadoop、Spark、NoSQL、IoT。
· 开源库:NumPy、pandas、Matplotlib、Seaborn、Folium、SciPy、NLTK、TextBlob、 spaCy、Textatistic、Tweepy、Scikit-learn、Keras、PubNub等。

了解更多秒杀神书 点击此处 了解!


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/658377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零搭建完整python自动化测试框架(UI自动化和接口自动化 )——持续更新

一、总体框架 总体框架如下图: 用例扫描、测试结果反馈,如要和其它项目管理系统或是用例管理系统对接(比如testlink),就需要单独出来进行处理。 对于大型的产品,用例数特别多的话,需要建设一个…

AIGC提示(prompt)工程之开宗明义篇

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

VMware公司成为Linux基金会金牌会员

导读VMware是云基础架构和企业移动性的全球领导者,多年来一直积极参与开源开发。VMware通过Linux基金会项目(如ONAP,Cloud Native Computing Foundation(CNCF),Cloud Foundry,Open vSwitch等)稳步提高其开源参与度。它刚刚成为了金…

HDFS初认识

HDFS初认识 文章目录 HDFS初认识HDFS是什么?HDFS的假想和设计目标HDFS的优缺点优点缺点 HDFS的架构组成客户端NameNodeDataNodeSecondary NameNode职责checkpoint机制 参考 HDFS是什么? Hadoop分布式文件系统(HDFS)是一个分布式文…

Websocket+protobuf怎么与服务器通信

Websocketprotobuf怎么与服务器通信 Websocket:WebSocket是⼀种⽹络传输协议,可在单个TCP连接上进⾏双全⼯通信,位于OSI模型的 应⽤层 实现⼀个简单的客⼾端和服务端 安装websockets pip3 install websockets客户端代码 import asyncio …

记一次异常外联事件应急响应

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 事件背景介绍02 事件分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中,安全部门收到来自业务部门的告警,称应用服务器存在异常外联情况&#xff0…

管理类联考——英语二——技巧篇——阅读理解——taiqi

第一章 翻译技巧概述 一、词汇方面 (一)词义选择 大多数英语词汇是多义的,翻译时必须选择正确的词义。词义选择的方法有三:根据上下文和词的搭配选择根据词类选择、根据专业选择。 (二)词义转换 在理解英文词汇的原始意义基础…

算法刷题-哈希表-三数之和

用哈希表解决了两数之和,那么三数之和呢? 第15题. 三数之和 力扣题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a b c 0 ?请你找出所有满足条件且…

后台服务守护进程神器pm2介绍及使用

前言 linux的后台服务程序需要在后台一直运行。如果通过ssh访问临时启动的,会话一结束就直接关闭了服务。想让服务在后台一直运行且永远不挂掉,推荐后台服务守护进程神器pm2,强大且适用于各种语言的后台服务程序。 pm2介绍 对于后台进程的管…

(十)异步-什么是异步方法(2)

一、什么是异步方法 异步方法在完成其工作之前即返回到调用方法,然后在调用方法继续执行的时候完成其工作。 特点: 方法头中包含 async 方法修饰符。包含一个或多个 await 表达式,表示可以异步完成的任务。必须具备3种返回类型之一&#x…

使用Gradio Interface构建交互式机器学习演示

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

chatgpt赋能python:Python列表排序方法介绍

Python 列表排序方法介绍 在 Python 中,列表是一种非常常见的数据类型。在处理列表时,有时需要对列表进行排序,以便更方便地对其进行查找、比较、统计等操作。Python 中提供了多种排序方法,本文将介绍这些方法并说明其使用方法。…

chatgpt赋能python:Python中的日期遍历方法详解

Python中的日期遍历方法详解 作为一门非常流行的编程语言,Python中的日期遍历方法备受程序员们喜爱。它可以遍历任意时间段内的日期并进行各种操作,比如日期加减、日期格式转换等等。在本文中,我们将详细介绍Python中的日期遍历方法&#xf…

lazarus:用FpSpreadsheet快速搭建基于电子表格文件的单机程序

目录 1 简介 2 制作简单的电子表格 3 需要几个控件,以及简单属性设置 3.1 TsWorksheetDataset 3.2 DataSource1控件 3.3 DBNavigate控件 3.4 DBGrid 3.5 编译运行,插入一行数据 1 简介 在FpSpreadsheet控件包中,有一个专门把电子表格…

Python3 注释与运算符 | 菜鸟教程(四)

目录 一、Python3 注释 (一)Python 中单行注释以 # 开头 (二)多行注释用三个单引号 或者三个双引号 """ 将注释括起来 1、单引号() 2、双引号("""&#xff…

14.基于XML管理Bean

基于XML管理Bean 配置Springframework 引入依赖 <!-- 基于Maven依赖传递性&#xff0c;导入spring-context依赖即可导入当前所需所有jar包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId&…

(十)异步-使用异步(3)

一、GUI 程序中的异步操作 1、在 GUI 程序中使用异步操作 在 GUI程序中&#xff0c; 首先理解关于 UI 显示变化的概念。 消息&#xff1a; UI 上的行为&#xff0c;如点击按钮、展示标签、移动窗体等。消息队列&#xff1a; 把要触发的所有消息&#xff0c;都按照相关的顺序…

【备战秋招】每日一题:2023.05-B卷-华为OD机试 - 阿里巴巴找黄金宝箱(II)

为了更好的阅读体检&#xff0c;可以查看我的算法学习博客阿里巴巴找宝箱(ll) 题目描述 贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现了强盗集团的藏宝地&#xff0c;藏宝地有编号从0-N的箱子&#xff0c;每个箱子上面贴有箱子中藏有金币的数量。 从金币数量中…

【MySQL】索引的数据结构

为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构。进行数据查找时&#xff0c;首先查看查询条件是否命中某条索引&#xff0c;符合则可以通过索引查找相关数据&#xff0c;如果不符合则要全表扫描&#xff0c;即需要一条一条地查找记录&#xff0c;直到找到…

「网络编程」第二讲:网络编程socket套接字(二)_ 简单UDP网络通信程序的实现

「前言」文章是关于网络编程的socket套接字方面的&#xff0c;上一篇是网络编程socket套接字&#xff08;一&#xff09;&#xff0c;下面开始讲解&#xff01; 「归属专栏」网络编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 我认…