数据库DML、DDL、DQL 、DCL说明

2024-08-22 18:12
文章标签 dml 数据库 说明 ddl dql dcl

本文主要是介绍数据库DML、DDL、DQL 、DCL说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

 

一、概述

二、作用和说明

三、用法示例

1. DML

2. DDL

3. DQL

4. DCL

4.1 授予权限

4.1.1 授予查询权限

4.1.2 授予所有权限

4.1.3 授予数据库级别的所有权限

4.2 撤销权限

4.2.1 撤销查询权限

4.2.2 撤销所有权限

4.3 授予角色权限

4.3.1 授予角色

4.3.2 撤销角色

4.4 授予特定类型的权限

4.4.1 授予插入权限

4.4.2 授予更新权限

4.4.3 授予删除权限

四、注意事项:


一、概述

        数据库DML、DDL、DQL 和 DCL 是数据库操作语言的四种主要类型,分别对应数据操纵、数据定义、数据查询和数据控制。

二、作用和说明

  1. DML (Data Manipulation Language) 数据操纵语言

    • 用于对数据库中的数据进行增加、修改、删除等操作。
    • 包括 INSERTUPDATEDELETE 等语句。
  2. DDL (Data Definition Language) 数据定义语言

    • 用于定义和管理数据库的结构,包括创建、修改和删除数据库对象。
    • 包括 CREATEALTERDROP 等语句。
  3. DQL (Data Query Language) 数据查询语言

    • 用于查询和检索数据库中的数据。
    • 主要包括 SELECT 语句,用于从数据库表中检索数据。
  4. DCL (Data Control Language) 数据控制语言

    • 用于定义数据库的安全策略和访问权限,控制用户对数据的访问。
    • 包括 GRANTREVOKE 语句,用于授予或撤销用户的权限。

三、用法示例

1. DML(MySql)

        DML 是指对数据库中的数据进行增加修改删除等操作

-- 插入新数据
INSERT INTO volvo.table_test
(id, update_time, id_value, id_name)
VALUES(0, '', '', '');-- 更新现有数据。
UPDATE volvo.table_test
SET update_time='', id_value='', id_name=''
WHERE id=0;-- :删除数据。
DELETE FROM volvo.table_test
WHERE id=0;

2. DDL(MySql)

        DDL 是指修改或定义数据库的表结构、视图、索引等操作命令。

-- 创建新表
CREATE TABLE `table_test` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`update_time` varchar(64) DEFAULT NULL,`id_value` varchar(64) DEFAULT NULL,`id_name` varchar(64) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 添加列
ALTER TABLE demo.table_test ADD Column1 varchar(100) NULL;-- 删除表
DROP TABLE demo.table_test;-- 新建索引
CREATE INDEX table_test_id_value_IDX USING BTREE ON demo.table_test (id_value);-- 创建视图
CREATE VIEW table_view AS
SELECT id,id_value
FROM table_test
WHERE id = 1;

3. DQL(MySql)

        DQL一般都是指的查询数据库中的数据,不修改数据

-- 查询数据
select * from table_test where id = 1;

4. DCL

        DCL数据库中的DCL(Data Control Language,数据控制语言)语句用于定义数据库的安全策略和访问权限,主要包括GRANTREVOKE两个关键字,控制数据库的访问权限

4.1 授予权限

4.1.1 授予查询权限
  • 这条语句授予 user_name 用户对 database_name 数据库中 table_name 表的查询权限。
-- 这条语句授予user_name用户对database_name数据库中table_name表的查询权限。
GRANT SELECT ON database_name.table_name TO user_name;
4.1.2 授予所有权限
  • 这条语句授予 user_name 用户对 database_name 数据库中 table_name 表的所有权限。
GRANT ALL PRIVILEGES ON database_name.table_name TO user_name;
4.1.3 授予数据库级别的所有权限
  • 这条语句授予 user_name 用户对 database_name 数据库中所有表的所有权限。
GRANT ALL PRIVILEGES ON database_name.* TO user_name;

4.2 撤销权限

4.2.1 撤销查询权限
  • 这条语句撤销 user_name 用户对 database_name 数据库中 table_name 表的查询权限。
REVOKE SELECT ON database_name.table_name FROM user_name;
4.2.2 撤销所有权限
  • 这条语句撤销 user_name 用户对 database_name 数据库中 table_name 表的所有权限。
REVOKE ALL PRIVILEGES ON database_name.table_name FROM user_name;

4.3 授予角色权限

4.3.1 授予角色
  • 这条语句授予 user_name 用户 role_name 角色,角色可能已经具有一组特定的权限。
GRANT role_name TO user_name;
4.3.2 撤销角色
  • 这条语句撤销 user_name 用户的 role_name 角色。
REVOKE role_name FROM user_name;

4.4 授予特定类型的权限

4.4.1 授予插入权限
  • 这条语句授予user_name用户对database_name数据库中table_name表的插入权限。
GRANT INSERT ON database_name.table_name TO user_name;
4.4.2 授予更新权限
  • 这条语句授予user_name用户对database_name数据库中table_name表的更新权限。
GRANT UPDATE ON database_name.table_name TO user_name;
4.4.3 授予删除权限
  • 这条语句授予user_name用户对database_name数据库中table_name表的删除权限。
GRANT DELETE ON database_name.table_name TO user_name;

四、注意事项:

  • 在使用DCL语句时,需要确保执行者具有足够的权限来授予或撤销权限。
  • 授予或撤销权限通常涉及到数据库的安全性和访问控制,应谨慎操作。
  • 不同的数据库系统(如MySQL、PostgreSQL、SQL Server等)可能在具体的语法和支持的权限类型上有所不同。


 

这篇关于数据库DML、DDL、DQL 、DCL说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097023

相关文章

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们