一文帶你深入了解并掌握MySQL的DML和DCL
前言
在數(shù)據(jù)庫管理中,數(shù)據(jù)操作語言(DML)和數(shù)據(jù)控制語言(DCL)是至關(guān)重要的概念。DML使我們能夠?qū)?shù)據(jù)庫中的數(shù)據(jù)進行增加、修改和刪除操作,而DCL則允許我們管理用戶和控制數(shù)據(jù)庫的訪問權(quán)限。本文將深入探討這兩個關(guān)鍵領(lǐng)域的核心概念和操作方法,幫助您更好地理解和應(yīng)用數(shù)據(jù)庫管理技術(shù)。
一. DML
DML英文全稱是Data Manipulation Language(數(shù)據(jù)操作語言),用來對數(shù)據(jù)庫中表的數(shù)據(jù)記錄進行增、刪、改操作。
- 添加數(shù)據(jù)(INSERT)
- 修改數(shù)據(jù)(UPDATE)
- 刪除數(shù)據(jù)(DELETE)
1.1 添加數(shù)據(jù)
給指定字段添加數(shù)據(jù)
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
給全部字段添加數(shù)據(jù)
INSERT INTO 表名 VALUES (值1, 值2, ...);
批量添加數(shù)據(jù)
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值 1, 值2, ...) ;
INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;
注意事項 :
- 插入數(shù)據(jù)時,指定的字段順序需要與值的順序是一一對應(yīng)的。
- 字符串和日期型數(shù)據(jù)應(yīng)該包含在引號中。
- 插入的數(shù)據(jù)大小,應(yīng)該在字段的規(guī)定范圍內(nèi)。
案例1: 給employee表所有的字段添加數(shù)據(jù) ;
insert into employee(id,workno,name,gender,age,idcard,entrydate) values(1,'1','Itcast','男',10,'123456789012345678','2000-01-01');
查詢數(shù)據(jù)的SQL語句, 語句如下:
select * from employee;
**案例2:**給全部字段添加數(shù)據(jù)
INSERT INTO 表名 VALUES (值1, 值2, ...);
插入數(shù)據(jù)到employee表,具體的SQL如下:
insert into employee values(2,'2','張無忌','男',18,'123456789012345670','2005-01-01');
**案例3:**批量插入數(shù)據(jù)到employee表,具體的SQL如下:
insert into employee values(3,'3','韋一笑','男',38,'123456789012345670','2005-01-01'),(4,'4','趙敏','女',18,'123456789012345670','2005-01-01');
1.2 修改數(shù)據(jù)
修改數(shù)據(jù)的具體語法為:
UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 條件 ] ;
注意事項:
- 修改語句的條件可以有,也可以沒有,如果沒有條件,則會修改整張表的所有數(shù)據(jù)。
案例:
A. 修改id為1的數(shù)據(jù),將name修改為yuxia
update employee set name = 'yuxia' where id = 1;
B. 修改id為1的數(shù)據(jù), 將name修改為小昭, gender修改為 女
update employee set name = '小昭' , gender = '女' where id = 1;
C. 將所有的員工入職日期修改為 2008-01-01
update employee set entrydate = '2008-01-01';
注意事項:
- DELETE 語句的條件可以有,也可以沒有,如果沒有條件,則會刪除整張表的所有數(shù)據(jù)。
- DELETE 語句不能刪除某一個字段的值(可以使用UPDATE,將該字段值置為NULL即可)。
- 當(dāng)進行刪除全部數(shù)據(jù)操作時,如果你使用的是datagrip,它就會提示我們,詢問是否確認刪除,我們直接點擊Execute即可。
案例:
A. 刪除gender為女的員工
delete from employee where gender = '女';
B. 刪除所有員工
delete from employee;
二. DCL
DCL英文全稱是Data Control Language(數(shù)據(jù)控制語言),用來管理數(shù)據(jù)庫用戶、控制數(shù)據(jù)庫的訪問權(quán)限。
2.1 管理用戶
**查詢用戶 **
select * from mysql.user;
其中 Host代表當(dāng)前用戶訪問的主機, 如果為localhost, 僅代表只能夠在當(dāng)前本機訪問,是不可以遠程訪問的。 User代表的是訪問該數(shù)據(jù)庫的用戶名。在MySQL中需要通過Host和User來唯一標(biāo)識一個用戶。
創(chuàng)建用戶
CREATE USER '用戶名'@'主機名' IDENTIFIED BY '密碼';
修改用戶密碼
ALTER USER '用戶名'@'主機名' IDENTIFIED WITH mysql_native_password BY '新密碼' ;
刪除用戶
DROP USER '用戶名'@'主機名' ;
注意事項:
- 在MySQL中需要通過用戶名@主機名的方式,來唯一標(biāo)識一個用戶。
- 主機名可以使用 % 通配。
- 這類SQL開發(fā)人員操作的比較少,主要是DBA( Database Administrator 數(shù)據(jù)庫管理員)使用。
案例:
A. 創(chuàng)建用戶itcast, 只能夠在當(dāng)前主機localhost訪問, 密碼123456;
create user 'itcast'@'localhost' identified by '123456';
B. 創(chuàng)建用戶yuxia, 可以在任意主機訪問該數(shù)據(jù)庫, 密碼123456;
create user 'yuxia'@'%' identified by '123456';
C. 修改用戶yuxia的訪問密碼為1234;
alter user 'heima'@'%' identified with mysql_native_password by '1234';
D. 刪除 itcast@localhost 用戶
drop user 'itcast'@'localhost';
2.2 權(quán)限控制
MySQL中定義了很多種權(quán)限,但是常用的就以下幾種:
權(quán)限 | 說明 |
---|---|
ALL, ALL PRIVILEGES | 所有權(quán)限 |
SELECT | 查詢數(shù)據(jù) |
INSERT | 插入數(shù)據(jù) |
UPDATE | 修改數(shù)據(jù) |
DELETE | 刪除數(shù)據(jù) |
ALTER | 修改表 |
DROP | 刪除數(shù)據(jù)庫/表/視圖 |
CREATE | 創(chuàng)建數(shù)據(jù)庫/表 |
上述只是簡單羅列了常見的幾種權(quán)限描述,其他權(quán)限描述及含義
查詢權(quán)限
SHOW GRANTS FOR '用戶名'@'主機名' ;
授予權(quán)限
GRANT 權(quán)限列表 ON 數(shù)據(jù)庫名.表名 TO '用戶名'@'主機名';
撤銷權(quán)限
REVOKE 權(quán)限列表 ON 數(shù)據(jù)庫名.表名 FROM '用戶名'@'主機名';
注意事項:
- 多個權(quán)限之間,使用逗號分隔
- 授權(quán)時, 數(shù)據(jù)庫名和表名可以使用 * 進行通配,代表所有。
案例:
A. 查詢 ‘test’@‘%’ 用戶的權(quán)限
show grants for 'test'@'%';
B. 授予 ‘test’@‘%’ 用戶student數(shù)據(jù)庫所有表的所有操作權(quán)
grant all on student.* to 'test'@'%';
C. 撤銷 ‘test’@’%’ 用戶的student數(shù)據(jù)庫的所有權(quán)限
revoke all on student.* from 'test'@'%';
A. 查詢 ‘test’@‘%’ 用戶的權(quán)限
show grants for 'test'@'%';
B. 授予 ‘test’@‘%’ 用戶student數(shù)據(jù)庫所有表的所有操作權(quán)
grant all on student.* to 'test'@'%';
C. 撤銷 ‘test’@’%’ 用戶的student數(shù)據(jù)庫的所有權(quán)限
revoke all on student.* from 'test'@'%';
以上就是一文帶你深入了解并掌握MySQL的DML和DCL的詳細內(nèi)容,更多關(guān)于MySQL的DML和DCL的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解
這篇文章主要介紹了MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解,THREAD_CACHE是Mysql的連接池,table_cache指定表高速緩存的大小,需要的朋友可以參考下2014-07-07MySql 存儲引擎和索引相關(guān)知識總結(jié)
這篇文章主要介紹了MySql 存儲引擎和索引相關(guān)知識總結(jié),文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06MySQL對數(shù)據(jù)庫和表進行DDL命令的操作代碼
DDL(Data?Definition?Language),是數(shù)據(jù)定義語言的縮寫,它是SQL(Structured?Query?Language)語言的一個子集,用于定義或修改數(shù)據(jù)庫的結(jié)構(gòu),本文給大家介紹了MySQL對數(shù)據(jù)庫和表進行DDL命令的操作,需要的朋友可以參考下2024-07-07MySQL常用命令與內(nèi)部組件及SQL優(yōu)化詳情
這篇文章主要介紹了MySQL常用命令與內(nèi)部組件及SQL優(yōu)化詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-07-07