MySQL的结构化语言 DDL DML DQL DCL
一、SQL结构化语言介绍
数据查询语言DQL:其语句称为“数据检索语言”,用以从库中获取数据,确定数据怎样在应用程序给出,保留select是dql(也是所有sql)用的最多的动词
数据操作语言DML:其语句包括动词insert,update和delete,分别用于添加,修改和删除表中的行,也称为动词查询语言
数据控制语言DCL:他的语句通过grant或者revoke获得许可,确定单个用户和用户组对数据库对象的访问,某些rdbms可用grant或者revoke控制对表单个列的访问。
数据定义语言DDL:其语句包括动词create和drop,在数据库创建新表或者删除表,为表加入索引等,DDL包括许多人数据库目录中获得数据有关的保留字,他也是动作查询的一部分。
二、数据定义语言DDL
1.系统数据库的介绍
information_schema 虚拟库,主要存储了系统中的一些数据库对象的信息,例如用户 表信息、列信息、权限信息、字符信息等
performance_schema 主要存储数据库服务器的性能参数
mysql 授权库,主要存储系统用户的权限信息
sys 主要存储数据库服务器的性能参数(目标是把 performance_schema的把复杂度降低)
2.创建数据库:DDL
(1)命令行创建数据库
语法;mysql -u用户 -p密码 -e “create database 数据库名 default charset ‘utf8’ ”
[root@localhost ~]# mysql -uroot -p123 -e "create database db2 default charset 'utf8'"
(2)在mysql里面创建数据库
语法:create database 数据库名 指定字符集 ;
mysql> create database db3 default charset 'utf8';
Query OK, 1 row affected (0.00 sec)
数据库命名规则:
区分大小写
唯一性
不能使用关键字 create select
不能单独使用数字
(3)查看所有数据库
语法:show databases;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 |
| db2 |
| db3 |
| mysql |
| performance_schema |
| school |
| sys |
+--------------------+
8 rows in set (0.00 sec)
(4)查看创建库的信息
语法:show create database 库名;
mysql> show create database db2;
+----------+--------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------+
| db2 | CREATE DATABASE `db2` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec)
(5)查看当前库(路径)
语法:select database();
mysql> select database();
+------------+
| database() |
+------------+
| db2 |
+------------+
1 row in set (0.00 sec)
(6)切换数据库
语法:use 数据库名;
mysql> use db2
Database changedmysql> show tables;
Empty set (0.00 sec)
(7)删除数据库
语法:drop database 库名;
mysql> drop database db2;
Query OK, 0 rows affected (0.01 sec)
3.表的DDL操作
(1)在命令行创建表
语法:mysql -u用户 -p密码 -e “use 库名;create table 表名 (字段 数据类型 约束条件)”
[root@localhost ~]# mysql -uroot -p123 -e"use db3;create table t1(name varchar(30),age int)"
mysql: [Warning] Using a password on the command line interface can be insecure.
(2)在数据库中创建表
语法:create table 表名(字段名称 数据类型 约束条件)
mysql> create table t2(-> id int primary key auto_increment not null,-> age int,-> name varchar(40)-> );
Query OK, 0 rows affected (0.00 sec)
(3)查看表结构
语法:desc 表名;
mysql> desc t2;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| age | int(11) | YES | | NULL | |
| name | varchar(40) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
(4)显示数据的详细信息
语法:show create 表名;
show table status like '表名';
mysql> show create table t2;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t2 | CREATE TABLE `t2` (`id` int(11) NOT NULL AUTO_INCREMENT,`age` int(11) DEFAULT NULL,`name` varchar(40) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show table status like 't2' \G
*************************** 1. row ***************************Name: t2Engine: InnoDBVersion: 10Row_format: DynamicRows: 0Avg_row_length: 0Data_length: 16384
Max_data_length: 0Index_length: 0Data_free: 0Auto_increment: 1Create_time: 2023-09-28 08:33:56Update_time: NULLCheck_time: NULLCollation: utf8_general_ciChecksum: NULLCreate_options: Comment:
1 row in set (0.00 sec)
(5)添加字段
语法:alter table 表名 add 字段名称 字段类型 约束条件;
mysql> alter table t2 add math int not null;#新字段 数据类型 约束条件
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
(6)修改数据类型
语法:alter table 表名 modify 字段名 新的数据类型 新的约束条件;
mysql> alter table t2 modify math varchar(20) null; #将数据类型改为varchar,约束条件改变
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
(7)修改字段名(列)和数据类型
语法:alter table 表名 change 旧字段名 新字段名 新的数据类型 约束条件;
mysql> alter table t2 change math chinese int null; #将math改名为Chinese,int ,null
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
(8)删除字段名(列)
语法:alter table 表名 drop 字段名;
mysql> alter table t2 drop chinese;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
(9)删除表
语法:drop table 表名;
mysql> drop table t2;
Query OK, 0 rows affected (0.00 sec)
三、数据操作语言DML
1.插入数据
语法:insert into 表名(字段1...字段n)values(值1....值n)
mysql> insert into employee values (1,'qiancheng','man','20180314','hr','talk',7000,501,102);
Query OK, 1 row affected (0.00 sec)mysql> insert into employee(id,name,hire_date,post,salary) values (50,'zxvb','20190423','hr',8000);
Query OK, 1 row affected (0.00 sec)mysql> insert into employee(id,name,salary) values(51,'ab',6500), (52,'cd',7600), (53,'ef',8900);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
2.更新数据update
语法:update 表名 set 字段1=值1,字段2=值2 where 条件;
mysql> update employee6 set emp_name='ab';
Query OK, 6 rows affected (0.00 sec)
Rows matched: 6 Changed: 6 Warnings: 0mysql> select * from employee6;
+--------+----------+------+---------+
| emp_id | emp_name | age | dept_id |
+--------+----------+------+---------+
| 1 | ab | 19 | 200 |
| 2 | ab | 26 | 201 |
| 3 | ab | 30 | 201 |
| 4 | ab | 24 | 202 |
| 5 | ab | 40 | 200 |
| 6 | ab | 28 | 204 |
+--------+----------+------+---------+
6 rows in set (0.00 sec)mysql> update employee6 set emp_name='cd' where emp_id=3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql> select * from employee6;
+--------+----------+------+---------+
| emp_id | emp_name | age | dept_id |
+--------+----------+------+---------+
| 1 | ab | 19 | 200 |
| 2 | ab | 26 | 201 |
| 3 | cd | 30 | 201 |
| 4 | ab | 24 | 202 |
| 5 | ab | 40 | 200 |
| 6 | ab | 28 | 204 |
+--------+----------+------+---------+
6 rows in set (0.00 sec)
3.删除数据delete
语法:delete from 表名 where 条件;
mysql> select * from employee6;
+--------+----------+------+---------+
| emp_id | emp_name | age | dept_id |
+--------+----------+------+---------+
| 1 | ab | 19 | 200 |
| 2 | ab | 26 | 201 |
| 4 | ab | 24 | 202 |
| 5 | ab | 40 | 200 |
| 6 | ab | 28 | 204 |
+--------+----------+------+---------+
5 rows in set (0.00 sec)mysql> delete from employee6;
Query OK, 5 rows affected (0.01 sec)mysql> select * from employee6;
Empty set (0.00 sec)mysql> desc employee6;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| emp_id | int(11) | NO | PRI | NULL | auto_increment |
| emp_name | varchar(50) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| dept_id | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
四、数据查询语言DQL
1.单表查询
(1).基础查询
a.查询所有信息
语法 :select * from 表名;
mysql> select * from employee;
+----+----------+-------+------------+------------+-----------------+----------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+----------+-------+------------+------------+-----------------+----------+--------+--------+
| 20 | tom | man | 2017-09-15 | instructor | teach | 8000.00 | 501 | 100 |
| 21 | alince | woman | 2013-04-28 | instructor | teach | 5500.00 | 501 | 100 |
| 22 | robin | man | 2020-09-18 | instructor | teach | 7200.00 | 501 | 100 |
| 23 | zhuzhu | man | 2016-12-09 | hr | hrcc | 6000.00 | 502 | 101 |
| 24 | gougou | woman | 2015-04-27 | hr | NULL | 6000.00 | 502 | 101 |
| 30 | maomao | man | 2019-08-12 | sale | talk | 20000.00 | 503 | 102 |
| 31 | yiyi | man | 2015-06-17 | talk | NULL | 8000.00 | NULL | NULL |
| 40 | harry | woman | 2018-02-05 | hr | hrcc | 6900.00 | 502 | 102 |
| 41 | tianyuan | man | 2018-02-05 | null | salecc | 9700.00 | 501 | 102 |
| 42 | xiaoyi | man | 2018-02-05 | null | salecc | 5700.00 | 501 | 102 |
+----+----------+-------+------------+------------+-----------------+----------+--------+--------+
10 rows in set (0.00 sec)
b.去除重复记录
语法:select distinct 字段 from 表名;
mysql> select distinct office from employee;
+--------+
| office |
+--------+
| 501 |
| 502 |
| 503 |
| NULL |
+--------+
4 rows in set (0.00 sec)
(2).条件查询
语法: select 字段 from 表名 where 条件列表
#单条件查询
mysql> select name,salary from employee where salary = 8000
;
+------+---------+
| name | salary |
+------+---------+
| tom | 8000.00 |
| yiyi | 8000.00 |
+------+---------+
2 rows in set (0.00 sec)
#多条件查询
mysql> select name,salary from employee where salary between 4000 and 20000;
+----------+----------+
| name | salary |
+----------+----------+
| tom | 8000.00 |
| alince | 5500.00 |
| robin | 7200.00 |
| zhuzhu | 6000.00 |
| gougou | 6000.00 |
| maomao | 20000.00 |
| yiyi | 8000.00 |
| harry | 6900.00 |
| tianyuan | 9700.00 |
| xiaoyi | 5700.00 |
+----------+----------+
10 rows in set (0.00 sec)
mysql> select name,salary from employee where salary=4000 or salary=6000;
+--------+---------+
| name | salary |
+--------+---------+
| zhuzhu | 6000.00 |
| gougou | 6000.00 |
+--------+---------+
2 rows in set (0.00 sec)
关键字is
#查询employee中office为空的人
mysql> select name,office from employee where office is null;
+------+--------+
| name | office |
+------+--------+
| yiyi | NULL |
+------+--------+
1 row in set (0.00 sec)#查询employee表中office不为空的人mysql> select name,office from employee where office is notnull;
+----------+--------+
| name | office |
+----------+--------+
| tom | 501 |
| alince | 501 |
| robin | 501 |
| zhuzhu | 502 |
| gougou | 502 |
| maomao | 503 |
| harry | 502 |
| tianyuan | 501 |
| xiaoyi | 501 |
+----------+--------+
9 rows in set (0.00 sec)
关键字in
#查询employee表中工资为4000,8000,20000的员工
mysql> select name,salary from employee where salary in (4000, 8000,20000);
+--------+----------+
| name | salary |
+--------+----------+
| tom | 8000.00 |
| maomao | 20000.00 |
| yiyi | 8000.00 |
+--------+----------+
3 rows in set (0.00 sec)
mysql> select name,salary from employee where salary in (4000,8000,20000);
+--------+----------+
| name | salary |
+--------+----------+
| tom | 8000.00 |
| maomao | 20000.00 |
| yiyi | 8000.00 |
+--------+----------+
3 rows in set (0.01 sec)
(3).排序查询
语法:select 字段 from 表名 order by 排序字段1,排序字段2
ASC:升序排列(默认)
DESC:降序排列
#按名字升序排列
mysql> select name from employee order by name;
+----------+
| name |
+----------+
| alince |
| gougou |
| harry |
| maomao |
| robin |
| tianyuan |
| tom |
| xiaoyi |
| yiyi |
| zhuzhu |
+----------+
10 rows in set (0.00 sec)#按名字倒叙排列
mysql> select name from employee order by name desc;
+----------+
| name |
+----------+
| zhuzhu |
| yiyi |
| xiaoyi |
| tom |
| tianyuan |
| robin |
| maomao |
| harry |
| gougou |
| alince |
+----------+
10 rows in set (0.00 sec)从第四行开始显示5行
mysql> select name from employee order by name desc limit 3, 5;
+----------+
| name |
+----------+
| tom |
| tianyuan |
| robin |
| maomao |
| harry |
+----------+
5 rows in set (0.00 sec)
#按多列排序,先按入职时间,再按工资
mysql> select * from employee order by hire_date,salary asc;
+----+----------+-------+------------+------------+-----------------+----------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+----------+-------+------------+------------+-----------------+----------+--------+--------+
| 21 | alince | woman | 2013-04-28 | instructor | teach | 5500.00 | 501 | 100 |
| 24 | gougou | woman | 2015-04-27 | hr | NULL | 6000.00 | 502 | 101 |
| 31 | yiyi | man | 2015-06-17 | talk | NULL | 8000.00 | NULL | NULL |
| 23 | zhuzhu | man | 2016-12-09 | hr | hrcc | 6000.00 | 502 | 101 |
| 20 | tom | man | 2017-09-15 | instructor | teach | 8000.00 | 501 | 100 |
| 42 | xiaoyi | man | 2018-02-05 | null | salecc | 5700.00 | 501 | 102 |
| 40 | harry | woman | 2018-02-05 | hr | hrcc | 6900.00 | 502 | 102 |
| 41 | tianyuan | man | 2018-02-05 | null | salecc | 9700.00 | 501 | 102 |
| 30 | maomao | man | 2019-08-12 | sale | talk | 20000.00 | 503 | 102 |
| 22 | robin | man | 2020-09-18 | instructor | teach | 7200.00 | 501 | 100 |
+----+----------+-------+------------+------------+-----------------+----------+--------+--------+
10 rows in set (0.00 sec)
(4)分组查询
语法:select 字段,(group_concat(字段名)) from 表名 group by 字段名;
GROUP_CONCAT 函数用于将一个分组内的多行数据合并成一个字符串,并以指定的分隔符进行分隔。
mysql> select post from employee group by post;
+------------+
| post |
+------------+
| hr |
| instructor |
| null |
| sale |
| talk |
+------------+
mysql> select post,group_concat(name) from employee group by post;
+------------+---------------------+
| post | group_concat(name) |
+------------+---------------------+
| hr | zhuzhu,gougou,harry |
| instructor | tom,alince,robin |
| null | tianyuan,xiaoyi |
| sale | maomao |
| talk | yiyi |
+------------+---------------------+
5 rows in set (0.00 sec)mysql> select post,group_concat(id) from employee group by
post;
+------------+------------------+
| post | group_concat(id) |
+------------+------------------+
| hr | 23,24,40 |
| instructor | 20,21,22 |
| null | 41,42 |
| sale | 30 |
| talk | 31 |
+------------+------------------+
5 rows in set (0.00 sec)
(5)模糊查询(通配符%)
mysql> select * from employee where salary like "%20%";
+----+--------+------+------------+------------+-----------------+----------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+--------+------+------------+------------+-----------------+----------+--------+--------+
| 22 | robin | man | 2020-09-18 | instructor | teach | 7200.00 | 501 | 100 |
| 30 | maomao | man | 2019-08-12 | sale | talk | 20000.00 | 503 | 102 |
+----+--------+------+------------+------------+-----------------+----------+--------+--------+
2 rows in set (0.00 sec)
(6)正则查询
mysql> select * from employee where salary regexp '72+';
+----+-------+------+------------+------------+-----------------+---------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+-------+------+------------+------------+-----------------+---------+--------+--------+
| 22 | robin | man | 2020-09-18 | instructor | teach | 7200.00 | 501 | 100 |
+----+-------+------+------------+------------+-----------------+---------+--------+--------+
1 row in set (0.00 sec)mysql> select * from employee where name regexp '^xiao';
+----+--------+------+------------+------+-----------------+---------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+--------+------+------------+------+-----------------+---------+--------+--------+
| 42 | xiaoyi | man | 2018-02-05 | null | salecc | 5700.00 | 501 | 102 |
+----+--------+------+------------+------+-----------------+---------+--------+--------+
1 row in set (0.00 sec)mysql> select * from employee where name regexp "yi$";
+----+--------+------+------------+------+-----------------+---------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+--------+------+------------+------+-----------------+---------+--------+--------+
| 31 | yiyi | man | 2015-06-17 | talk | NULL | 8000.00 | NULL | NULL |
| 42 | xiaoyi | man | 2018-02-05 | null | salecc | 5700.00 | 501 | 102 |
+----+--------+------+------------+------+-----------------+---------+--------+--------+
2 rows in set (0.00 sec)mysql> select * from employee where name regexp "yi$";
+----+--------+------+------------+------+-----------------+---------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+--------+------+------------+------+-----------------+---------+--------+--------+
| 31 | yiyi | man | 2015-06-17 | talk | NULL | 8000.00 | NULL | NULL |
| 42 | xiaoyi | man | 2018-02-05 | null | salecc | 5700.00 | 501 | 102 |
+----+--------+------+------------+------+-----------------+---------+--------+--------+
2 rows in set (0.00 sec)
2.多表查询
a) 内连接
只连接匹配的行
mysql> select employee6.emp_id,employee6.emp_name,employee6.age,department.dept_name from employee6,department where employee6.dept_id = department.dept_id;
+--------+----------+------+-----------+
| emp_id | emp_name | age | dept_name |
+--------+----------+------+-----------+
| 1 | tianyun | 19 | hr |
| 2 | tom | 26 | it |
| 3 | jack | 30 | it |
| 4 | alice | 24 | yunwei |
| 5 | robin | 40 | hr |
+--------+----------+------+-----------+
5 rows in set (0.00 sec)mysql> select a.emp_id,a.emp_name,a.age,b.dept_name from employee6 a,department b where a.dept_id=b.dept_id;
+--------+----------+------+-----------+
| emp_id | emp_name | age | dept_name |
+--------+----------+------+-----------+
| 1 | tianyun | 19 | hr |
| 2 | tom | 26 | it |
| 3 | jack | 30 | it |
| 4 | alice | 24 | yunwei |
| 5 | robin | 40 | hr |
+--------+----------+------+-----------+
5 rows in set (0.00 sec)
mysql> select a.emp_id,a.emp_name,a.age,b.dept_name from employee6 a inner join department b on a.dept_id=b.dept_id;
+--------+----------+------+-----------+
| emp_id | emp_name | age | dept_name |
+--------+----------+------+-----------+
| 1 | tianyun | 19 | hr |
| 2 | tom | 26 | it |
| 3 | jack | 30 | it |
| 4 | alice | 24 | yunwei |
| 5 | robin | 40 | hr |
+--------+----------+------+-----------+
5 rows in set (0.00 sec)
b)外连接
外连接:(了解)
左连接: 会显示左边表内所有的值,不论在右边表内匹不匹配
右连接: 会显示右边表内所有的值,不论在左边表内匹不匹配
语法:SELECT 字段 ROM 表1 LEFT|RIGHT JOIN 表2 ON 表1.字段 = 表2.字段;
mysql> select emp_id,emp_name,age,dept_name from employee6left join department on employee6.dept_id = department.dep
t_id;
+--------+----------+------+-----------+
| emp_id | emp_name | age | dept_name |
+--------+----------+------+-----------+
| 1 | tianyun | 19 | hr |
| 5 | robin | 40 | hr |
| 2 | tom | 26 | it |
| 3 | jack | 30 | it |
| 4 | alice | 24 | yunwei |
| 6 | natasha | 28 | NULL |
+--------+----------+------+-----------+
6 rows in set (0.00 sec)mysql> select emp_id,emp_name,age,dept_name from employee6right join department on employee6.dept_id = department.de
pt_id;
+--------+----------+------+-----------+
| emp_id | emp_name | age | dept_name |
+--------+----------+------+-----------+
| 1 | tianyun | 19 | hr |
| 2 | tom | 26 | it |
| 3 | jack | 30 | it |
| 4 | alice | 24 | yunwei |
| 5 | robin | 40 | hr |
| NULL | NULL | NULL | fd |
+--------+----------+------+-----------+
6 rows in set (0.00 sec)
c)全外连接
全外连接:(了解) 包含左、右两个表的全部行
mysql> select * from employee6 full join department;
+--------+----------+------+---------+---------+-----------+
| emp_id | emp_name | age | dept_id | dept_id | dept_name |
+--------+----------+------+---------+---------+-----------+
| 1 | tianyun | 19 | 200 | 200 | hr |
| 1 | tianyun | 19 | 200 | 201 | it |
| 1 | tianyun | 19 | 200 | 202 | yunwei |
| 1 | tianyun | 19 | 200 | 203 | fd |
| 2 | tom | 26 | 201 | 200 | hr |
| 2 | tom | 26 | 201 | 201 | it |
| 2 | tom | 26 | 201 | 202 | yunwei |
| 2 | tom | 26 | 201 | 203 | fd |
| 3 | jack | 30 | 201 | 200 | hr |
| 3 | jack | 30 | 201 | 201 | it |
| 3 | jack | 30 | 201 | 202 | yunwei |
| 3 | jack | 30 | 201 | 203 | fd |
| 4 | alice | 24 | 202 | 200 | hr |
| 4 | alice | 24 | 202 | 201 | it |
| 4 | alice | 24 | 202 | 202 | yunwei |
| 4 | alice | 24 | 202 | 203 | fd |
| 5 | robin | 40 | 200 | 200 | hr |
| 5 | robin | 40 | 200 | 201 | it |
| 5 | robin | 40 | 200 | 202 | yunwei |
| 5 | robin | 40 | 200 | 203 | fd |
| 6 | natasha | 28 | 204 | 200 | hr |
| 6 | natasha | 28 | 204 | 201 | it |
| 6 | natasha | 28 | 204 | 202 | yunwei |
| 6 | natasha | 28 | 204 | 203 | fd |
+--------+----------+------+---------+---------+-----------+
24 rows in set (0.00 sec)
五、数据库控制语言DCL
1.用户管理
(1)创建用户
语法:create user '用户名'@'客户端ip地址' identified by '密码';
mysql> create user 'cd'@'10.36.192.%' identified by '123';
Query OK, 0 rows affected (0.00 sec)
(2)修改用户信息
语法:rename user '用户名'@'客户端来源ip地址' to '新用户名'@'客户端来源IP地址'
mysql> rename user 'cd'@'10.36.192.%' to 'ef'@'192.168.142.%';
Query OK, 0 rows affected (0.00 sec)
(3)修改普通用户的密码
a)语法:set password for '用户名'@'ip地址'=password('新密码');
b)语法:alter user '用户名'@'客户端来源IP地址' identified by '新密码';
c)语法:update mysql.user set authentication_string=password('密码') where user='root' and host='localhost';
mysql> set password for 'ef'@'192.168.142.%'=password('111');
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> alter user 'ef'@'192.168.142.%' identified by '123';
Query OK, 0 rows affected (0.00 sec)
(4)删除用户
语法:drop user '用户名'@'客户端来源ip地址';
mysql> drop user 'ef'@'192.168.142.%';
Query OK, 0 rows affected (0.00 sec)
2.权限管理
(1).给普通用户授权并授权
语法:grant 权限 on 数据库.表 to '用户'@'客户端来源IP地址' identified by '密码';
mysql> grant all on *.* to 'ef'@'192.168.142.%' identified
by '123';
Query OK, 0 rows affected, 1 warning (0.00 sec)
(2).取消普通用户的权限
语法:revoke 权限 on 数据库.表 from '用户'@'客户端来源IP地址
mysql> revoke all on *.* from 'cd'@'192.168.142.%';
Query OK, 0 rows affected (0.00 sec)
(3).刷新权限
语法:flush privileges;
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
(4).查看授权信息
a.查看授权语句
语法:show grants for '用户'@'客户端来源IP地址';
mysql> show grants for 'ef'@'192.168.142.%';
+-----------------------------------------------------+
| Grants for ef@192.168.142.% |
+-----------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'ef'@'192.168.142.%' |
+-----------------------------------------------------+
1 row in set (0.00 sec)
b.查看生效的授权信息
语法:select * from mysql.user where user='用户'\G
mysql> select * from mysql.user where user='ef'\G
*************************** 1. row ***************************Host: 192.168.142.%User: efSelect_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: YDrop_priv: YReload_priv: YShutdown_priv: YProcess_priv: YFile_priv: YGrant_priv: NReferences_priv: YIndex_priv: YAlter_priv: YShow_db_priv: YSuper_priv: YCreate_tmp_table_priv: YLock_tables_priv: YExecute_priv: YRepl_slave_priv: YRepl_client_priv: YCreate_view_priv: YShow_view_priv: YCreate_routine_priv: YAlter_routine_priv: YCreate_user_priv: YEvent_priv: YTrigger_priv: Y
Create_tablespace_priv: Yssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_passwordauthentication_string: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257password_expired: Npassword_last_changed: 2023-09-28 15:06:11password_lifetime: NULLaccount_locked: N
1 row in set (0.00 sec)
相关文章:
MySQL的结构化语言 DDL DML DQL DCL
一、SQL结构化语言介绍 数据查询语言DQL:其语句称为“数据检索语言”,用以从库中获取数据,确定数据怎样在应用程序给出,保留select是dql(也是所有sql)用的最多的动词 数据操作语言DML:其语句包括动词insert…...
P5488 差分与前缀和
传送门:洛谷 前题提要:包含了简单的生成函数思想以及多项式乘法,是一道不可多得的多项式好题.故记录一下. 题意:给定一个长为 n 的序列 a,求出其 k 阶差分或前缀和。结果的每一项都需要对 1004535809取模。 对于差分和前缀和我们分开来讨论. 先讨论前缀和部分: …...
uboot启动流程-uboot内存分配
一. uboot启动流程 _main 函数中会调用 board_init_f 函数,本文继续简单分析一下 board_init_f 函数。 具体分析 board_init_f函数的第二部分:内存分配代码。 本文继上一篇文章的学习,地址如下: uboot启动流程-涉及board_init…...

LeetCode 面试题 08.02. 迷路的机器人
文章目录 一、题目二、C# 题解 一、题目 设想有个机器人坐在一个网格的左上角,网格 r 行 c 列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径…...

画CMB天图使用Planck配色方案
使用Planck的配色方案: 全天图: 或者方形图: 使用下面设置即可: import pspy, pixell from pspy.so_config import DEFAULT_DATA_DIR pixell.colorize.mpl_setdefault("planck")此方法不会改变matplotlib默认配色方案…...

成都瀚网科技有限公司:抖店精选联盟怎么用?
抖音精选联盟是抖音电商平台提供的一项服务,旨在为商家提供更多的推广机会和销售渠道。然而,很多人对于如何使用抖店精选联盟以及如何开通这项服务不太了解。本文将为您详细介绍抖店精选联盟的使用和激活流程。 第一节:如何使用抖店精选联盟 …...
第二章:最新版零基础学习 PYTHON 教程(第五节 - Python 输入/输出–如何在Python中打印而不换行?)
一般来说,从 C/C++ 切换到 Python 的人想知道如何在 python 中打印两个或多个变量或语句而不进入新行。由于Python print() 函数默认以换行符结尾。Python 有一个预定义的格式,如果你使用 print(a_variable) 那么它会自动转到下一行。 例子: # 输入:[csdn, csdnforcsdn] …...

C++实现集群聊天服务器
C实现集群聊天服务器 JSON Json是一种轻量级的数据交换模式(也叫做数据序列化方式)。Json采用完全独立于编程语言的文本格式来存储和表示数据。见解和清晰的层次结构使得Json称为理想的数据交换语言。易于阅读和编写。同时也易于支持机器解析和生成&am…...

40 二叉树的直径
二叉树的直径 总结:两个节点之间最长路径 路径的结点数 - 1题解1 递归——DFS 给你一棵二叉树的根节点,返回该树的 直径。 二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的长度由…...
Thread.sleep(0)的作用是什么?
Thread.sleep(0) 的作用是让当前线程放弃剩余的时间片,允许其他具有相同优先级的线程运行。这种操作有时被称为“主动让出CPU时间片”或“线程主动让步”。 通常情况下,当一个线程执行到一段代码时,它会占用CPU的时间片,直到时间…...

浏览器指定DNS
edge--设置 https://dns.alidns.com/dns-query...

虚拟机安装 centos
title: 虚拟机安装 centos createTime: 2020-12-13 12:00:27 updateTime: 2020-12-13 12:00:27 categories: linux tags: 虚拟机安装 centos 路线图 主机(宿主机) —> centos --> docker --> docker 镜像 --> docker 容器 — docker 服务 1.前期准备 一台 主机 或…...

【计算机网络笔记九】I/O 多路复用
阻塞 IO 和 非阻塞 IO 阻塞 I/O 和 非阻塞 I/O 的主要区别: 阻塞 I/O 执行用户程序操作是同步的,调用线程会被阻塞挂起,会一直等待内核的 I/O 操作完成才返回用户进程,唤醒挂起线程非阻塞 I/O 执行用户程序操作是异步的…...
踩坑日记 《正确的使用Vuex》基于 uniapp Vue3 setup 语法糖 vuex4 项目 太多坑了要吐了
踩坑日记 《正确的使用Vuex》基于 uniapp Vue3 setup 语法糖 vuex4 项目 太多坑了要吐了 完美解决页面数据不刷新 或者数据慢一步刷新 页面使用html <template><view><template v-if"cartData.data.length>0"><!-- 自定义导航栏 --><…...

Python无废话-办公自动化Excel修改数据
如何修改Excel 符合条件的数据?用Python 几行代码搞定。 需求:将销售明细表的产品名称为PG手机、HW手机、HW电脑的零售价格分别修改为4500、5500、7500,并保存Excel文件。如下图 Python 修改Excel 数据,常见步骤: 1&…...
MySQL系统架构设计
MySQL 一、MySQL整体架构1.1 SQL接口1.2 解析器 Parser1.3 查询优化器 Optimizer1.3.1 逻辑优化1.3.2 物理优化1.3.3 explain1.4 缓存 Cache1.5 存储引擎 Stroage Management1.6 一条查询SQL的执行流程二、缓存池(Buffer Pool)2.1 Buffer Pool 预读机制2.2 Buffer Pool free链…...

Google vs IBM vs Microsoft: 哪个在线数据分析师证书最好
Google vs IBM vs Microsoft: 哪个在线数据分析师证书最好? 对目前市场上前三个数据分析师证书进行审查和比较|Madison Hunter 似乎每个重要的公司都推出了自己版本的同一事物:专业数据分析师认证,旨在使您成为雇主的下一个热门商品。 随着…...

数据链路层 MTU 对 IP 协议的影响
在介绍主要内容之前,我们先来了解一下数据链路层中的"以太网" 。 “以太网”不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。 下面我们再来了解一下以太网数据帧ÿ…...

一文拿捏基于redis的分布式锁、lua、分布式性能提升
1.分布式锁 jdk的锁: 1、显示锁:Lock 2、隐式锁:synchronized 使用jdk锁保证线程的安全性要求:要求多个线程必须运行在同一个jvm中 但现在的系统基本都是分布式部署的,一个应用会被部署到多台服务器上,s…...

机器学习必修课 - 如何处理缺失数据
运行环境:Google Colab 处理缺失数据可简单分为两种方法:1. 删除具有缺失值的列 2. 填充 !git clone https://github.com/JeffereyWu/Housing-prices-data.git下载数据集 import pandas as pd from sklearn.model_selection import train_test_split导…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...