目录
一、概述
数据库DML、DDL、DQL 和 DCL 是数据库操作语言的四种主要类型,分别对应数据操纵、数据定义、数据查询和数据控制。
二、作用和说明
-
DML (Data Manipulation Language) 数据操纵语言:
- 用于对数据库中的数据进行增加、修改、删除等操作。
- 包括
INSERT
、UPDATE
、DELETE
等语句。
-
DDL (Data Definition Language) 数据定义语言:
- 用于定义和管理数据库的结构,包括创建、修改和删除数据库对象。
- 包括
CREATE
、ALTER
、DROP
等语句。
-
DQL (Data Query Language) 数据查询语言:
- 用于查询和检索数据库中的数据。
- 主要包括
SELECT
语句,用于从数据库表中检索数据。
-
DCL (Data Control Language) 数据控制语言:
- 用于定义数据库的安全策略和访问权限,控制用户对数据的访问。
- 包括
GRANT
和REVOKE
语句,用于授予或撤销用户的权限。
三、用法示例
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,数据控制语言)语句用于定义数据库的安全策略和访问权限,主要包括GRANT
和REVOKE
两个关键字,控制数据库的访问权限
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等)可能在具体的语法和支持的权限类型上有所不同。