栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

内外连接&子查询&数据备份

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

内外连接&子查询&数据备份

内外连接&分组查询&子查询

文章目录
    • @[toc]
    • 一、内连接
    • 二、外连接
      • 1.左连接
      • 2 .右连接
    • 三、分组查询
      • 1.GROUP BY单独使用
      • 2.GROUP BY 与 GROUP_CONCAt()
      • 3.GROUP BY 与聚合函数
      • 4.GROUP BY 与 WITH ROLLUP
    • 四、子查询
    • 五、数据库的备份与恢复
      • 1.备份方案
      • 2.备份工具mysqldump的使用
      • 3.数据恢复
      • 4.免密登录与免密备份
一、内连接

内连接(INNER JOIN)主要通过设置连接条件的方式,来移除查询结果中某些数据行的交叉连接。简单来说,就是利用条件表达式来消除交叉连接的某些数据行。

内连接使用 INNER JOIN 关键字连接两张表,并使用 ON 子句来设置连接条件。如果没有连接条件,INNER JOIN 和 CROSS JOIN 在语法上是等同的,两者可以互换。

内连接的语法格式如下:

SELECt <字段名> FROM <表1> INNER JOIN <表2> [ON子句];

语法说明如下。

  • 字段名:需要查询的字段名称。
  • <表1><表2>:需要内连接的表名。
  • INNER JOIN :内连接中可以省略 INNER 关键字,只用关键字 JOIN。
  • ON 子句:用来设置内连接的连接条件。

INNER JOIN 也可以使用 WHERe 子句指定连接条件,但是 INNER JOIN … ON 语法是官方的标准写法,而且 WHERe 子句在某些时候会影响查询的性能。

多个表内连接时,在 FROM 后连续使用 INNER JOIN 或 JOIN 即可。

后续案例的两张表中所需的数据:

mysql> select * from tb_students_info;
+----+--------+------+------+--------+-----------+
| id | name   | age  | sex  | height | course_id |
+----+--------+------+------+--------+-----------+
|  1 | Dany   |   25 | 男   |    160 |         1 |
|  2 | Green  |   23 | 男   |    158 |         2 |
|  3 | Henry  |   23 | 女   |    185 |         1 |
|  4 | Jane   |   22 | 男   |    162 |         3 |
|  5 | Jin    |   21 | 女   |    172 |         4 |
|  6 | John   |   21 | 女   |    172 |         4 |
|  7 | Lily   |   22 | 男   |    165 |         4 |
|  8 | Susan  |   23 | 男   |    170 |         5 |
|  9 | Thomas |   22 | 女   |    178 |         5 |
| 10 | Tom    |   23 | 女   |    165 |         5 |
| 11 | Liming |   22 | 男   |    176 |         7 |
+----+--------+------+------+--------+-----------+

mysql> select * from tb_course;
+----+-------------+
| id | course_name |
+----+-------------+
|  1 | Java        |
|  2 | MySQL       |
|  3 | Python      |
|  4 | Go          |
|  5 | C++         |
|  6 | HTML        |
+----+-------------+
6 rows in set (0.00 sec)

案例1:在 tb_students_info 表和 tb_course 表之间,使用内连接查询学生姓名和相对应的课程名称

mysql> select s.name,c.course_name from tb_students_info as s join tb_course as c on s.course_id = c.id;
+--------+-------------+
| name   | course_name |
+--------+-------------+
| Dany   | Java        |
| Green  | MySQL       |
| Henry  | Java        |
| Jane   | Python      |
| Jin    | Go          |
| John   | Go          |
| Lily   | Go          |
| Susan  | C++         |
| Thomas | C++         |
| Tom    | C++         |
+--------+-------------+
10 rows in set (0.00 sec)

案例2:在 tb_students_info 表和 tb_course 表之间,使用内连接查询学习Mysql和Java课程的人

mysql> select s.name,c.course_name from tb_students_info as s join tb_course as c on s.course_id = c.id and (c.course_name = 'Java' or c.course_name = 'Mysql');
+-------+-------------+
| name  | course_name |
+-------+-------------+
| Dany  | Java        |
| Green | MySQL       |
| Henry | Java        |
+-------+-------------+
3 rows in set (0.00 sec)

案例3:在 tb_students_info 表和 tb_course 表之间,使用内连接查询查询学习Java的人数

mysql> select count(s.name) as '人数',c.course_name as '课程' from tb_students_info as s join tb_course as c on s.course_id = c.id and c.course_name = 'Java';
+--------+--------+
| 人数   | 课程   |
+--------+--------+
|      2 | Java   |
+--------+--------+
1 row in set (0.00 sec)

二、外连接

内连接的查询结果都是符合连接条件的记录,而外连接会先将连接的表分为主表和辅表,再以主表为依据返回满足和不满足条件的记录。

外连接可以分为左外连接和右外连接2种,下面根据实例分别介绍左外连接和右外连接。

1.左连接

左外连接又称为左连接,使用 LEFT OUTER JOIN 关键字连接两个表,并使用 ON 子句来设置连接条件。

左连接的语法格式如下:

SELECt <字段名> FROM <表1> LEFT OUTER JOIN <表2> ;

语法说明如下:

  • 字段名:需要查询的字段名称。
  • <表1><表2>:需要左连接的表名。
  • LEFT OUTER JOIN:左连接中可以省略 OUTER 关键字,只使用关键字 LEFT JOIN。
  • ON 子句:用来设置左连接的连接条件,不能省略。

上述语法中,"表1"为主表,"表2"为辅表。左连接查询时,可以查询出"表1"中的所有记录和"表2"中匹配连接条件的记录。如果"表1"的某行在"表2"中没有匹配行,那么在返回结果中,"表2"的字段值均为空值(NULL)。

案例1:在 tb_students_info 表和 tb_course 表中查询所有学生姓名和相对应的课程名称,包括没有课程的学生

mysql> select s.name,c.course_name from tb_students_info as s left join tb_course as c on s.course_id = c.id;
+--------+-------------+
| name   | course_name |
+--------+-------------+
| Dany   | Java        |
| Green  | MySQL       |
| Henry  | Java        |
| Jane   | Python      |
| Jin    | Go          |
| John   | Go          |
| Lily   | Go          |
| Susan  | C++         |
| Thomas | C++         |
| Tom    | C++         |
| Liming | NULL        |
+--------+-------------+
11 rows in set (0.00 sec)
2 .右连接

右外连接又称为右连接,右连接是左连接的反向连接。使用 RIGHT OUTER JOIN 关键字连接两个表,并使用 ON 子句来设置连接条件。

右连接的语法格式如下:

SELECt <字段名> FROM <表1> RIGHT OUTER JOIN <表2> ;

语法说明如下:

  • 字段名:需要查询的字段名称。
  • <表1><表2>:需要右连接的表名。
  • RIGHT OUTER JOIN:右连接中可以省略 OUTER 关键字,只使用关键字 RIGHT JOIN。
  • ON 子句:用来设置右连接的连接条件,不能省略。

与左连接相反,右连接以"表2"为基表,"表1"为参考表。右连接查询时,可以查询出"表2"中的所有记录和"表1"中匹配连接条件的记录。如果"表2"的某行在"表1"中没有匹配行,那么在返回结果中,"表1"的字段值均为空值(NULL)。

案例2:在 tb_students_info 表和 tb_course 表中查询所有课程,包括没有学生的课程

mysql> select c.course_name,s.name from tb_students_info as s right join tb_course as c on s.course_id = c.id;
+-------------+--------+
| course_name | name   |
+-------------+--------+
| Java        | Dany   |
| MySQL       | Green  |
| Java        | Henry  |
| Python      | Jane   |
| Go          | Jin    |
| Go          | John   |
| Go          | Lily   |
| C++         | Susan  |
| C++         | Thomas |
| C++         | Tom    |
| HTML        | NULL   |
+-------------+--------+
11 rows in set (0.00 sec)

三、分组查询

在 MySQL 中,GROUP BY 关键字可以根据一个或多个字段对查询结果进行分组。

使用 GROUP BY 关键字的语法格式如下:

GROUP BY  <字段名>

其中,"字段名"表示需要分组的字段名称,多个字段时用逗号隔开。

1.GROUP BY单独使用

单独使用 GROUP BY 关键字时,查询结果会只显示每个分组的第一条记录。

案例1:根据 tb_students_info 表中的 sex 字段进行分组查询,显示姓名与性别

mysql> select name,sex from tb_students_info group by sex;
+-------+------+
| name  | sex  |
+-------+------+
| Henry | 女   |
| Dany  | 男   |
+-------+------+
2 rows in set (0.00 sec)
2.GROUP BY 与 GROUP_CONCAt()

GROUP BY 关键字可以和 GROUP_CONCAt() 函数一起使用。GROUP_CONCAt() 函数会把每个分组的值都显示出来。

案例2:据 tb_students_info 表中的 sex 字段进行分组查询,使用 GROUP_CONCAt() 函数将每个分组的 name 字段的值都显示出来

mysql> select group_concat(name),sex from tb_students_info group by sex;
+-----------------------------------+------+
| group_concat(name)                | sex  |
+-----------------------------------+------+
| Henry,Jin,John,Thomas,Tom         | 女   |
| Dany,Green,Jane,Lily,Susan,Liming | 男   |
+-----------------------------------+------+
2 rows in set (0.00 sec)

由结果可以看到,查询结果分为两组,sex 字段值为"女"的是一组,值为"男"的是一组,且每组的学生姓名都显示出来了。

案例3:根据 tb_students_info 表中的 age 和 sex 字段进行分组查询,且每组的学生姓名都显示

mysql> select group_concat(name),age,sex from tb_students_info group by age,sex;
+--------------------+------+------+
| group_concat(name) | age  | sex  |
+--------------------+------+------+
| Jin,John           |   21 | 女   |
| Thomas             |   22 | 女   |
| Jane,Lily,Liming   |   22 | 男   |
| Henry,Tom          |   23 | 女   |
| Green,Susan        |   23 | 男   |
| Dany               |   25 | 男   |
+--------------------+------+------+
6 rows in set (0.00 sec)

上面案例在分组过程中,先按照 age 字段进行分组,当 age 字段值相等时,再把 age 字段值相等的记录按照 sex 字段进行分组。

多个字段分组查询时,会先按照第一个字段进行分组。如果第一个字段中有相同的值,MySQL 才会按照第二个字段进行分组。如果第一个字段中的数据都是唯一的,那么 MySQL 将不再对第二个字段进行分组。

3.GROUP BY 与聚合函数

在数据统计时,GROUP BY 关键字经常和聚合函数一起使用。

聚合函数作用
COUNT()统计记录的条数
SUM()计算字段值的总和
AVG()计算字段值的平均值
MAX()查询字段的最大值
MIN()查询字段的最小值

案例4:根据 tb_students_info 表的 sex 字段进行分组查询,使用 COUNT() 函数计算每一组的记录数。

mysql> select count(name),sex from tb_students_info group by sex;
+-------------+------+
| count(name) | sex  |
+-------------+------+
|           5 | 女   |
|           6 | 男   |
+-------------+------+
2 rows in set (0.00 sec)

案例5:根据 tb_students_info 表的 sex 字段进行分组查询,使用avg()函数求出男女的平均身高

mysql> select sex,avg(height) from tb_students_info group by sex;
+------+--------------------+
| sex  | avg(height)        |
+------+--------------------+
| 女   |              174.4 |
| 男   | 165.16666666666666 |
+------+--------------------+
2 rows in set (0.00 sec)

//可以看到上面的结果保留了很多位的小数部分,下面用round()来优化一下,只保留2位小数
mysql> select sex,round(avg(height),2) from tb_students_info group by sex;
+------+----------------------+
| sex  | round(avg(height),2) |
+------+----------------------+
| 女   |               174.40 |
| 男   |               165.17 |
+------+----------------------+
2 rows in set (0.00 sec)

案例6:根据 tb_students_info 表的 sex 字段进行分组查询,使用sum()函数求出男和女分别的总年龄

mysql> select sex,sum(age) from tb_students_info group by sex;
+------+----------+
| sex  | sum(age) |
+------+----------+
| 女   |      110 |
| 男   |      137 |
+------+----------+
2 rows in set (0.00 sec)
4.GROUP BY 与 WITH ROLLUP

WITH POLLUP 关键字用来在所有记录的最后加上一条记录,这条记录是上面所有记录的总和,即统计记录数量。

案例7:根据 tb_students_info 表中的 sex 字段进行分组查询,并使用 WITH ROLLUP 显示name记录的总和:

mysql> select sex,group_concat(name) from tb_students_info group by sex with ROLLUP;
+------+-------------------------------------------------------------+
| sex  | group_concat(name)                                          |
+------+-------------------------------------------------------------+
| 女   | Henry,Jin,John,Thomas,Tom                                   |
| 男   | Dany,Green,Jane,Lily,Susan,Liming                           |
| NULL | Henry,Jin,John,Thomas,Tom,Dany,Green,Jane,Lily,Susan,Liming |
+------+-------------------------------------------------------------+
3 rows in set (0.00 sec)
四、子查询

子查询是 MySQL 中比较常用的查询方法,通过子查询可以实现多表查询。子查询指将一个查询语句嵌套在另一个查询语句中。子查询可以在 SELECt、UPDATE 和 DELETE 语句中使用,而且可以进行多层嵌套。在实际开发时,子查询经常出现在 WHERe 子句中。

MySQL 在处理上例的 SELECT 语句时,执行流程为:先执行子查询,再执行父查询。

子查询在 WHERe 中的语法格式如下:

WHERe <表达式> <操作符> (子查询)

其中,操作符可以是比较运算符和 IN、NOT IN、EXISTS、NOT EXISTS 等关键字。

  • IN | NOT IN
    当表达式与子查询返回的结果集中的某个值相等时,返回 TRUE,否则返回 FALSE;若使用关键字 NOT,则返回值正好相反。

  • EXISTS | NOT EXISTS
    用于判断子查询的结果集是否为空,若子查询的结果集不为空,返回 TRUE,否则返回 FALSE;若使用关键字 NOT,则返回的值正好相反。

案例1:使用子查询在 tb_students_info 表和 tb_course 表中查询学习 Java 课程的学生姓名

mysql> select name from tb_students_info where course_id in (select id from tb_course where course_name = 'Java');
+-------+
| name  |
+-------+
| Dany  |
| Henry |
+-------+
2 rows in set (0.00 sec)

案例2:使用 NOT IN 关键字,查询没有学习 Java 课程的学生姓名

mysql> select name from tb_students_info where course_id not in (select id from tb_course where course_name = 'Java');
+--------+
| name   |
+--------+
| Green  |
| Jane   |
| Jin    |
| John   |
| Lily   |
| Susan  |
| Thomas |
| Tom    |
| Liming |
+--------+
9 rows in set (0.00 sec)

案例3:使用=运算符,在 tb_course 表和 tb_students_info 表中查询出所有学习 Python 课程的学生姓名

mysql> select name from tb_students_info where course_id = (select id from tb_course where course_name = 'Python');
+------+
| name |
+------+
| Jane |
+------+
1 row in set (0.00 sec)

案例4:使用<>运算符,在 tb_course 表和 tb_students_info 表中查询出没有学习 Python 课程的学生姓名

mysql> select name from tb_students_info where course_id <> (select id from tb_course where course_name = 'Python');
+--------+
| name   |
+--------+
| Dany   |
| Green  |
| Henry  |
| Jin    |
| John   |
| Lily   |
| Susan  |
| Thomas |
| Tom    |
| Liming |
+--------+
10 rows in set (0.00 sec)

案例5:查询 tb_course 表中是否存在 id=1 的课程,如果存在,就查询出 tb_students_info 表中的记录

mysql> select * from tb_students_info where exists (select * from tb_course where id = 1);
+----+--------+------+------+--------+-----------+
| id | name   | age  | sex  | height | course_id |
+----+--------+------+------+--------+-----------+
|  1 | Dany   |   25 | 男   |    160 |         1 |
|  2 | Green  |   23 | 男   |    158 |         2 |
|  3 | Henry  |   23 | 女   |    185 |         1 |
|  4 | Jane   |   22 | 男   |    162 |         3 |
|  5 | Jin    |   21 | 女   |    172 |         4 |
|  6 | John   |   21 | 女   |    172 |         4 |
|  7 | Lily   |   22 | 男   |    165 |         4 |
|  8 | Susan  |   23 | 男   |    170 |         5 |
|  9 | Thomas |   22 | 女   |    178 |         5 |
| 10 | Tom    |   23 | 女   |    165 |         5 |
| 11 | Liming |   22 | 男   |    176 |         7 |
+----+--------+------+------+--------+-----------+
11 rows in set (0.00 sec)

由结果可以看到,tb_course 表中存在 id=1 的记录,因此 EXISTS 表达式返回 TRUE,外层查询语句接收 TRUE 之后对表 tb_students_info 进行查询,返回所有的记录。

EXISTS 关键字可以和其它查询条件一起使用,条件表达式与 EXISTS 关键字之间用 AND 和 OR 连接。

案例6:查询 tb_course 表中是否存在 id=1 的课程,如果存在,就查询出 tb_students_info 表中 age 字段大于 24 的记录

mysql> select * from tb_students_info where age > 24 and exists (select * from tb_course where id =1);
+----+------+------+------+--------+-----------+
| id | name | age  | sex  | height | course_id |
+----+------+------+------+--------+-----------+
|  1 | Dany |   25 | 男   |    160 |         1 |
+----+------+------+------+--------+-----------+
1 row in set (0.00 sec)

结果显示,从 tb_students_info 表中查询出了一条记录,这条记录的 age 字段取值为 25。内层查询语句从 tb_course 表中查询到记录,返回 TRUE。外层查询语句开始进行查询。根据查询条件,从 tb_students_info 表中查询 age 大于 24 的记录。

子查询的功能也可以通过表连接完成,但是子查询会使 SQL 语句更容易阅读和编写。

一般来说,表连接(内连接和外连接等)都可以用子查询替换,但反过来却不一定,有的子查询不能用表连接来替换。子查询比较灵活、方便、形式多样,适合作为查询的筛选条件,而表连接更适合于查看连接表的数据。

五、数据库的备份与恢复 1.备份方案
  • 备份类型分为:

    • 冷备份:在数据库服务未运行时进行备份,通常使用tar等命令直接对数据存放目录进行打包压缩
    • 温备份:温备份:在数据库服务运行时进行备份,数据库的读操作可以执行, 但是不能执行写操作
    • 热备份:在数据库服务运行时进行备份,数据库的读写操作均不受影响
  • 备份方案分为:

    • 全量备份
    • 增量备份
    • 差异备份
备份方案特点
全量备份全量备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝。 数据恢复快。 备份时间长
增量备份增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份 与前一次相比增加和者被修改的文件。这就意味着,第一次增量备份的对象 是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量 备份后所产生的增加和修改的文件,如此类推。 没有重复的备份数据 备份时间短 恢复数据时必须按一定的顺序进行
差异备份备份上一次的完全备份后发生变化的所有文件。 差异备份是指在一次全备份后到进行差异备份的这段时间内 对那些增加或者修改文件的备份。在进行恢复时,我们只需对第一次全量备份和最后一次差异备份进行恢复。
2.备份工具mysqldump的使用
语法:
    mysqldump [OPTIONS] database [tables ...]   //备份库中的表
    mysqldump [OPTIONS] --all-databases [OPTIONS]    //备份整个数据库
    mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]   //备份库
    
常用的OPTIONS:
    -uUSERNAME      //指定数据库用户名
    -hHOST          //指定服务器主机,请使用ip地址
    -pPASSWORD      //指定数据库用户的密码
    -P#             //指定数据库监听的端口,这里的#需用实际的端口号代替,如-P3307

2.1备份整个数据库

[root@yf ~]# mysqldump -uroot -p --all-databases > /root/all-$(date '+%Y-%m-%d'_%H:%M:%S).sql
Enter password:
[root@yf ~]# ls
all-2022-07-28_17:37:11.sql  anaconda-ks.cfg

2.2备份某个库里的表

[root@yf ~]# mysqldump -uroot -p yf tb_students_info > /root/table-$(date '+%Y%m%d'_%H:%M:%S).sql
Enter password:
[root@yf ~]# ls
all-2022-07-28_17:37:11.sql  anaconda-ks.cfg  table-20220728_17:41:42.sql

2.3备份某个库

[root@yf ~]# mysqldump -uroot -p --databases yf > /root/db-$(date '+%Y%%_%H:%M:%S').sql
Enter password:
[root@yf ~]# ls
all-2022-07-28_17:37:11.sql  anaconda-ks.cfg  db-2022%_17:45:31.sql  table-20220728_17:41:42.sql
3.数据恢复

1.模拟误删yf这个库

mysql> drop database yf;
Query OK, 2 rows affected (0.02 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb1              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

2.从前面的备份文件恢复该库

[root@yf ~]# ls
all-2022-07-28_17:37:11.sql  anaconda-ks.cfg  db-2022%_17:45:31.sql  table-20220728_17:41:42.sql
[root@yf ~]#
[root@yf ~]# mysql -uroot -p < db-2022%_17:45:31.sql
Enter password:
[root@yf ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 35
Server version: 5.7.38 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb1              |
| mysql              |
| performance_schema |
| sys                |
| yf                 |
+--------------------+
6 rows in set (0.00 sec)

3.模拟误删数据表

mysql> use yf;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+------------------+
| Tables_in_yf     |
+------------------+
| tb_course        |
| tb_students_info |
+------------------+
2 rows in set (0.00 sec)

mysql> drop table tb_students_info;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+--------------+
| Tables_in_yf |
+--------------+
| tb_course    |
+--------------+
1 row in set (0.00 sec)

4.恢复数据表

mysql> use yf;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+--------------+
| Tables_in_yf |
+--------------+
| tb_course    |
+--------------+
1 row in set (0.00 sec)

mysql> source table-20220728_17:41:42.sql   //恢复数据表
Query OK, 0 rows affected (0.00 sec)
....................
....................
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+------------------+
| Tables_in_yf     |
+------------------+
| tb_course        |
| tb_students_info |
+------------------+
2 rows in set (0.00 sec)

mysql> desc tb_students_info;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| name      | varchar(20) | YES  |     | NULL    |                |
| age       | tinyint(4)  | YES  |     | NULL    |                |
| sex       | varchar(6)  | YES  |     | NULL    |                |
| height    | float       | YES  |     | NULL    |                |
| course_id | tinyint(4)  | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

mysql> select * from tb_students_info;
+----+--------+------+------+--------+-----------+
| id | name   | age  | sex  | height | course_id |
+----+--------+------+------+--------+-----------+
|  1 | Dany   |   25 | 男   |    160 |         1 |
|  2 | Green  |   23 | 男   |    158 |         2 |
|  3 | Henry  |   23 | 女   |    185 |         1 |
|  4 | Jane   |   22 | 男   |    162 |         3 |
|  5 | Jin    |   21 | 女   |    172 |         4 |
|  6 | John   |   21 | 女   |    172 |         4 |
|  7 | Lily   |   22 | 男   |    165 |         4 |
|  8 | Susan  |   23 | 男   |    170 |         5 |
|  9 | Thomas |   22 | 女   |    178 |         5 |
| 10 | Tom    |   23 | 女   |    165 |         5 |
| 11 | Liming |   22 | 男   |    176 |         7 |
+----+--------+------+------+--------+-----------+
11 rows in set (0.00 sec)
4.免密登录与免密备份

1.免密登录

[root@yf ~]# vim .my.cnf
[root@yf ~]# cat .my.cnf
[client]
user=root
password=yefeng123

[root@yf ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 41
Server version: 5.7.38 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql>

2.免密备份

[root@yf ~]# vim .my.cnf
[root@yf ~]# cat .my.cnf
[mysqldump]
user=root
password=yefeng123

[root@yf ~]# mysqldump --databases yf > /root/db-$(date '+%Y%m%d_%H:%M:%S').sql
[root@yf ~]# ls
all-2022-07-28_17:37:11.sql  anaconda-ks.cfg  db-20220728_20:32:32.sql
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1032325.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号