《MySQL 数据库备份与视图创建全流程:从数据迁移到高效查询实战》

发布于:2025-08-17 ⋅ 阅读:(13) ⋅ 点赞:(0)

题目1

将mydb9_stusys数据库下的student、sc 和course表,备份到本地主机保存为st_msg_bak.sql文件,然后将数据表恢复到自建的db_test数据库中;

备份库和表语法

mysqldump -u用户名 -p密码   数据库名 [表1 表2] > 绝对路径\备份文件.sql
mysqldump -u [用户名] -p --databases/-B [数据库名1] [数据库名2] ... > [备份文件路径]
[root@Light ~]# mysql -uroot -pMysql@123 mydb9_stusys student sc course > /root/st_msg_bak.sql  #这里使用的是绝对路径

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

恢复数据

#先删除现有的数据库
mysql> drop database mydb9_stusys;
Query OK, 4 rows affected (0.04 sec)
#创建新的库表db_test
mysql> create database db_test;
Query OK, 1 row affected (0.00 sec)
#查看一下
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db_test            |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
19 rows in set (0.00 sec)

开始备份

[root@Light ~]# mysql -uroot -pMysql@123 db_test < st_msg_bak.sql 
#进入数据库
mysql> use db_test
mysql> show tables;
+-------------------+
| Tables_in_db_test |
+-------------------+
| course            |
| sc                |
| student           |
+-------------------+
3 rows in set (0.00 sec)

题目2

在db_test数据库创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩。

mysql> create view v1_stu as select sname,ssex,cname,score from sc join course c on sc.cno=c.cno right join student s on sc.sno=s.sno;

Query OK, 0 rows affected (0.01 sec)
#查看视图
mysql> select * from v1_stu;
+-----------+------+-------+-------+
| sname     | ssex | cname | score |
+-----------+------+-------+-------+
| 张玲丽    | 女   | SSH   |    60 |
| 张玲丽    | 女   | JAVA  | 77.45 |
| 张玲丽    | 女   | LINUX | 85.65 |
| 吴鹏      | 男   | JAVA  | 72.35 |
| 李锐      | 男   | JAVA  | 85.05 |
| 李锐      | 男   | LINUX | 74.12 |
| 赵丁雯    | 女   | LINUX |  45.5 |
| 陈晓晓    | 女   | LINUX |    99 |
| 孙德胜    | 男   | NULL  |  NULL |
| 刘琦玉    | 男   | NULL  |  NULL |
| 李波      | 男   | NULL  |  NULL |
| 李晨      | 男   | NULL  |  NULL |
| 王子涵    | 女   | NULL  |  NULL |
+-----------+------+-------+-------+
13 rows in set (0.00 sec)

查看db_test库下哪些是视图表;

mysql> select * from information_schema.views where TABLE_SCHEMA='db_test'\G
*************************** 1. row ***************************
       TABLE_CATALOG: def
        TABLE_SCHEMA: db_test
          TABLE_NAME: v1_stu
     VIEW_DEFINITION: select `s`.`sname` AS `sname`,`s`.`ssex` AS `ssex`,`c`.`cname` AS `cname`,`db_test`.`sc`.`score` AS `score` from (`db_test`.`student` `s` left join (`db_test`.`sc` join `db_test`.`course` `c` on((`db_test`.`sc`.`cno` = `c`.`cno`))) on((`db_test`.`sc`.`sno` = `s`.`sno`)))
        CHECK_OPTION: NONE
        IS_UPDATABLE: NO
             DEFINER: root@%
       SECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: utf8mb4
COLLATION_CONNECTION: utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

删除视图表

mysql> drop view v1_stu;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+-------------------+
| Tables_in_db_test |
+-------------------+
| course            |
| sc                |
| student           |
+-------------------+
3 rows in set (0.00 sec)


网站公告

今日签到

点亮在社区的每一天
去签到