Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
掌握数据库操作:索引、视图、备份和恢复_创想鸟

掌握数据库操作:索引、视图、备份和恢复

介绍

掌握数据库操作:索引、视图、备份和恢复

在本实验中,我们将学习和练习索引、视图、备份和恢复。这些概念对于数据库管理员来说非常重要。

学习目标

创建索引创建视图备份与恢复

准备

开始之前,我们需要准备好环境。

启动mysql服务并以root身份登录。

cd ~/projectsudo service mysql startmysql -u root

加载文件中的数据。需要在mysql控制台输入命令来构建数据库:

source ~/project/init-database.txt

指数

索引是与表相关的结构。它的作用相当于一本书的目录。您可以根据目录中的页码快速找到内容

当你要查询一张记录数量较多的表,并且该表没有索引时,那么会拉出所有记录一一匹配搜索条件,并返回符合条件的记录。非常耗时,导致大量的磁盘i/o操作。

如果表中存在索引,那么我们可以通过索引值快速找到表中的数据,从而大大加快查询过程。

有两种方法可以为特定列设置索引:

alter table table name add index index name (column name);create index index name on table name (column name);

让我们使用这两条语句来构建索引。

在employee表的id列建立idx_id索引:

alter table employee add index idx_id (id);

在employee表的name列建立idx_name索引

create index idx_name on employee (name);

我们使用索引来加速查询过程。当没有足够的数据时,我们将无法感受到它的神奇力量。这里我们使用命令show index from table name来查看我们刚刚创建的索引

show index from employee;
mariadb [mysql_labex]> alter table employee add index idx_id (id);query ok, 0 rows affected (0.005 sec)records: 0  duplicates: 0  warnings: 0mariadb [mysql_labex]> show index from employee;+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+| table    | non_unique | key_name | seq_in_index | column_name | collation | cardinality | sub_part | packed | null | index_type | comment | index_comment | ignored |+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+| employee |          0 | primary  |            1 | id          | a         |           5 |     null | null   |      | btree      |         |               | no      || employee |          0 | phone    |            1 | phone       | a         |           5 |     null | null   |      | btree      |         |               | no      || employee |          1 | emp_fk   |            1 | in_dpt      | a         |           5 |     null | null   |      | btree      |         |               | no      || employee |          1 | idx_id   |            1 | id          | a         |           5 |     null | null   |      | btree      |         |               | no      || employee |          1 | idx_name |            1 | name        | a         |           5 |     null | null   | yes  | btree      |         |               | no      |+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+5 rows in set (0.000 sec)

当我们使用select语句查询时,where条件会自动判断是否存在索引。

看法

视图是从一个或多个表派生的虚拟表。它就像一个窗口,通过它人们可以查看系统提供的特殊数据,从而不必查看数据库中的全部数据。他们可以专注于他们感兴趣的事情。

如何解释“view是一个虚拟表”?

数据库中只存储view的定义,而其数据存储在原表中;当我们使用view查询数据时,数据库会相应地从原表中提取数据。由于view中的数据取决于原始表中存储的内容,因此一旦表中的数据发生变化,我们在view中看到的内容也会发生变化。将 view 视为表格。

创建view时使用的语句格式:

create view view name (column a, column b, column c) as select column 1, column 2, column 3 from table name;

从语句中我们可以看到后半部分是一条select语句,这意味着view也可以建立在多个表上。我们需要做的就是在 select 语句中使用子查询或 join 。

现在让我们创建一个名为v_emp的简单视图,其中包含三列v_name、v_age、v_phone:

create view v_emp (v_name,v_age,v_phone) as select name,age,phone from employee;

然后输入

select * from v_emp;
mariadb [mysql_labex]> create view v_emp (v_name,v_age,v_phone) as select name,age,phone from employee;query ok, 0 rows affected (0.003 sec)mariadb [mysql_labex]> select * from v_emp;+--------+-------+---------+| v_name | v_age | v_phone |+--------+-------+---------+| tom    |    26 |  119119 || jack   |    24 |  120120 || jobs   |  null |   19283 || tony   |  null |  102938 || rose   |    22 |  114114 |+--------+-------+---------+5 rows in set (0.000 sec)

备份

出于安全考虑,备份在数据库管理中极其重要。

导出文件仅保存数据库中的数据,而备份将整个数据库结构(包括数据、约束、索引、视图等)保存到新文件。

mysqldump是mysql中用于备份的实用程序。它生成一个 sql 脚本文件,其中包含从头开始重新创建数据库的所有基本命令,例如 create、insert 等。

使用mysqldump备份的声明:

mysqldump -u root database name > backup file name;   #backup entire databasemysqldump -u root database name table name > backup file name;  #backup the entire table

尝试备份整个数据库mysql_labex。将文件命名为 bak.sql。首先按ctrl+z退出mysql控制台,然后打开终端输入命令:

cd ~/project/mysqldump -u root mysql_labex > bak.sql;

使用命令“ls”,我们会看到备份文件bak.sql;

cat bak.sql
-- mariadb dump 10.19  distrib 10.6.12-mariadb, for debian-linux-gnu (x86_64)---- host: localhost    database: mysql_labex-- -------------------------------------------------------- server version       10.6.12-mariadb-0ubuntu0.22.04.1/*!40101 set @old_character_set_client=@@character_set_client */;/*!40101 set @old_character_set_results=@@character_set_results */;/*!40101 set @old_collation_connection=@@collation_connection */;/*!40101 set names utf8 */;/*!40103 set @old_time_zone=@@time_zone */;/*!40103 set time_zone='+00:00' */;/*!40014 set @old_unique_checks=@@unique_checks, unique_checks=0 */;/*!40014 set @old_foreign_key_checks=@@foreign_key_checks, foreign_key_checks=0 */;/*!40101 set @old_sql_mode=@@sql_mode, sql_mode='no_auto_value_on_zero' */;/*!40111 set @old_sql_notes=@@sql_notes, sql_notes=0 */;……

恢复

在本实验的前面,我们练习了使用备份文件来恢复数据库。我们使用了类似这样的命令:

source ~/project/init-database.txt

此语句从 import-database.txt 文件恢复 mysql_labex 数据库。

还有另一种方法来恢复数据库,但在此之前,我们需要先创建一个名为 test 的空数据库:

mysql -u rootcreate database test;
mariadb [(none)]> create database test;query ok, 1 row affected (0.000 sec)mariadb [(none)]> show databases;+--------------------+| database           |+--------------------+| information_schema || mysql              || mysql_labex        || performance_schema || sys                || test               |+--------------------+6 rows in set (0.000 sec)

ctrl+z退出mysql。恢复bak.sql以测试数据库:

mysql -u root test < bak.sql

我们可以通过输入命令查看测试数据库中的表来确认恢复是否成功:

mysql -u rootuse testshow tables
MariaDB [(none)]> USE test;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedMariaDB [test]> SHOW TABLES;+----------------+| Tables_in_test |+----------------+| department     || employee       || project        || table_1        |+----------------+4 rows in set (0.000 sec)

我们可以看到4张表已经恢复到测试数据库了

概括

恭喜!您已经完成了有关 mysql 中其他基本操作的实验。您已经学习了如何创建索引、视图以及如何备份和恢复数据库。

? 现在练习:其他基本操作

想了解更多吗?

?学习最新的mysql技能树? 阅读更多 mysql 教程? 加入我们的 discord 或发推文@wearelabex

以上就是掌握数据库操作:索引、视图、备份和恢复的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/55849.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Laravel 和 CodeIgniter 之间的学习曲线有何不同?
上一篇 2025年11月9日 22:44:29
UC浏览器怎么查看网页的DOM结构树 UC浏览器开发者工具审查元素教程
下一篇 2025年11月9日 22:46:11

相关推荐

  • 为什么安装了mysql没有图标

    为什么安装了mysql没有图标为什么安装了mysql没有图标为什么安装了mysql没有图标为什么安装了mysql没有图标

    刚安装 MySQL 没有图标的原因可能包括:环境变量未配置、快捷方式未创建、文件关联未设置或图标文件丢失。解决方法有:配置环境变量、创建快捷方式、设置文件关联、重新安装或修复 MySQL,以及检查防病毒软件、管理权限和使用 mysticicon 命令。 为什么安装了 MySQL 没有图标 刚安装 M…

    2026年9月25日 • 用户投稿
    000
  • 如何配置磁盘配额限制用户存储空间?

    如何配置磁盘配额限制用户存储空间?如何配置磁盘配额限制用户存储空间?如何配置磁盘配额限制用户存储空间?如何配置磁盘配额限制用户存储空间?

    配置磁盘配额可防止资源滥用、保障系统稳定,核心步骤包括:启用文件系统配额功能,编辑/etc/fstab添加usrquota和grpquota选项,重新挂载文件系统,生成配额文件aquota.user和aquota.group,使用edquota设置用户或组的磁盘空间与文件数软硬限制,并通过quota…

    2026年9月25日 • 用户投稿
    000
  • mysql是什么工具

    mysql是什么工具mysql是什么工具mysql是什么工具mysql是什么工具

    MySQL 是一种开源的 RDBMS,使用 SQL 管理和查询数据,其主要功能包括:数据存储和管理数据查询和检索事务支持索引优化安全访问控制备份和恢复 MySQL:是什么工具? MySQL 是一种关系型数据库管理系统 (RDBMS),它使用结构化查询语言 (SQL) 来管理和查询数据。它是一个开源和…

    2026年9月25日 • 用户投稿
    100
  • mysql中dcl是什么意思 mysql数据控制语言解析

    dcl在mysql中指的是数据控制语言,主要用于管理数据库的访问权限和控制用户操作。dcl包括以下命令:1. grant,用于授予用户权限;2. revoke,用于撤销用户权限。通过这些命令,数据库管理员可以精细地控制数据库访问和操作权限,确保数据库的安全性和管理。 在MySQL中,DCL指的是数据…

    2026年9月25日
    100
  • VSCode如何配置Dart开发环境 VSCode跨平台应用开发全攻略

    安装vscode并下载flutter sdk,将其bin目录添加到系统path环境变量;2. 在vscode中安装flutter扩展(自动包含dart扩展);3. 运行flutter doctor检查并修复环境配置问题,如android/ios工具链;4. 通过flutter create创建项目或…

    2026年9月25日
    100
  • mysql中如何创建表

    mysql中如何创建表mysql中如何创建表mysql中如何创建表mysql中如何创建表

    在 MySQL 中创建表涉及五个步骤:1. 打开 MySQL 命令行;2. 连接到数据库;3. 使用 CREATE TABLE 语法指定列名和数据类型创建表;4. 执行查询;5. 使用 SHOW TABLES 查询验证表是否已创建。 MySQL 中创建表的步骤 在 MySQL 中创建表的过程简单明了…

    2026年9月25日 • 用户投稿
    100
  • mysql英文版如何变成中文版

    mysql英文版如何变成中文版mysql英文版如何变成中文版mysql英文版如何变成中文版mysql英文版如何变成中文版

    将 MySQL 英文版转换为中文版需要以下步骤:下载中文语言包;解压语言包并复制文件到指定目录;编辑 MySQL 配置文件,添加字符集设置;重新启动 MySQL 服务;更改数据库字符集为 utf8;更改表字符集为 utf8;重新启动 MySQL 服务并验证更改。 如何将 MySQL 英文版转换为中文…

    2026年9月25日 • 用户投稿
    100
  • Debian怎样实现快速回收

    Debian怎样实现快速回收Debian怎样实现快速回收Debian怎样实现快速回收Debian怎样实现快速回收

    优化Debian系统,释放磁盘空间,提升系统性能,可以通过以下方法快速实现: 一、清除无用软件包 使用 apt-get autoremove 命令卸载不再需要的软件包及其依赖项。使用 apt clean 和 apt autoclean 清理apt包管理器的缓存文件,释放更多空间。 二、删除旧内核版本…

    2026年9月25日 • 用户投稿
    000
  • mysql如何读取数据库数据

    mysql如何读取数据库数据mysql如何读取数据库数据mysql如何读取数据库数据mysql如何读取数据库数据

    MySQL 读取数据库数据有两种常用方法:SELECT 语句,用于从表中提取数据,语法为:SELECT [列名] FROM [表名] [条件] [分组] [条件] [排序] [限制]。fetchall() 方法,用于将所有结果行存储在一个元组列表中。 MySQL 读取数据库数据 MySQL 提供了多…

    2026年9月25日 • 用户投稿
    100
  • mysql如何配置环境

    mysql如何配置环境mysql如何配置环境mysql如何配置环境mysql如何配置环境

    MySQL 环境配置步骤:安装 MySQL 安装程序。创建 root 用户并授予权限。修改配置文件(datadir、bind-address、port)。启动 MySQL 服务。测试安装(显示 “mysql” 数据库)。创建非 root 用户并授予权限。配置安全功能(SSL …

    2026年9月25日 • 用户投稿
    100
  • sublime怎么快速切换文件语法类型_sublime修改文件语言类型的方法

    sublime怎么快速切换文件语法类型_sublime修改文件语言类型的方法sublime怎么快速切换文件语法类型_sublime修改文件语言类型的方法sublime怎么快速切换文件语法类型_sublime修改文件语言类型的方法sublime怎么快速切换文件语法类型_sublime修改文件语言类型的方法

    点击状态栏语言名可快速切换语法类型,立即应用高亮规则;2. 用Ctrl+Shift+P或Cmd+Shift+P打开命令面板,输入Set Syntax选择目标语言;3. 通过“Open all with current extension as…”设置默认语法关联,或手动编辑配置文件,使特…

    2026年9月25日 • 用户投稿
    300
  • 如何将一键PHP环境迁移到新电脑_环境数据迁移教程

    先完整备份旧环境的网站文件、数据库和配置,再在新电脑安装相同版本的一键PHP环境,最后还原数据与配置实现迁移。 如果你在旧电脑上使用一键PHP环境(如phpStudy、XAMPP、WampServer等),想把整个开发环境和数据迁移到新电脑,可以按以下步骤操作,确保网站、数据库、配置全部完整转移。 …

    2026年9月25日
    200
  • LINUX怎么查找包含特定内容的文件_LINUX使用grep命令查找文件内容

    LINUX怎么查找包含特定内容的文件_LINUX使用grep命令查找文件内容LINUX怎么查找包含特定内容的文件_LINUX使用grep命令查找文件内容LINUX怎么查找包含特定内容的文件_LINUX使用grep命令查找文件内容LINUX怎么查找包含特定内容的文件_LINUX使用grep命令查找文件内容

    使用grep命令可快速查找Linux系统中包含特定文本的文件。首先通过grep -r “关键词” /路径/ 实现目录递归搜索,如grep -r “error” /home/user/;添加-i参数忽略大小写,-n显示行号。结合find与grep可按文件…

    2026年9月25日 • 用户投稿
    100
  • sublime怎么设置鼠标滚轮速度_sublime滚动灵敏度调整方法

    sublime怎么设置鼠标滚轮速度_sublime滚动灵敏度调整方法sublime怎么设置鼠标滚轮速度_sublime滚动灵敏度调整方法sublime怎么设置鼠标滚轮速度_sublime滚动灵敏度调整方法sublime怎么设置鼠标滚轮速度_sublime滚动灵敏度调整方法

    Sublime Text 无法直接调节滚轮速度,需通过系统设置、插件或鼠标驱动优化。1. 调整操作系统鼠标滚轮设置:Windows 修改“一次滚动的行数”,macOS 调节“滚动速度”滑块,Linux 使用桌面设置或 xinput 命令;2. 安装 SmoothScroll 插件提升滚动流畅度,支持…

    2026年9月25日 • 用户投稿
    100
  • mysql用户身份验证查询的是哪个表

    mysql用户身份验证查询的是哪个表mysql用户身份验证查询的是哪个表mysql用户身份验证查询的是哪个表mysql用户身份验证查询的是哪个表

    MySQL 用户身份验证信息存储在 mysql.user 表中,包含以下信息:用户名密码哈希值主机或 IP 地址权限创建和修改时间 MySQL 用户身份验证 查询的表: mysql.user 详细解释: mysql.user 表存储了 MySQL 数据库中所有用户的相关信息,包括: 蓝心千询 蓝心千…

    2026年9月25日 • 用户投稿
    100
  • 哪个是mysql读文件的函数

    哪个是mysql读文件的函数哪个是mysql读文件的函数哪个是mysql读文件的函数哪个是mysql读文件的函数

    MySQL 读取文件内容的函数是 LOAD_FILE()。该函数通过接受一个文件路径作为参数来返回文件中的内容作为文本字符串,语法为:LOAD_FILE(file_path)。它可以读取本地文件,但需要具有读取权限。需要注意的是,该函数可能返回不正确的结果,例如文件不存在或包含二进制数据。 哪个是 …

    2026年9月25日 • 用户投稿
    100
  • Debian Tomcat日志中的慢查询如何优化

    Debian Tomcat日志中的慢查询如何优化Debian Tomcat日志中的慢查询如何优化Debian Tomcat日志中的慢查询如何优化Debian Tomcat日志中的慢查询如何优化

    本文探讨如何在Debian系统上优化Tomcat应用中的数据库慢查询。需要注意的是,Tomcat本身不记录慢查询,而是由数据库(如MySQL)负责。因此,优化过程主要针对数据库层面。 第一步:启用数据库慢查询日志 首先,确保你的数据库已启用慢查询日志记录功能。以MySQL为例,可以通过以下两种方式实…

    2026年9月25日 • 用户投稿
    100
  • Linux sudo日志查看与分析方法

    sudo日志默认存储在/var/log/auth.log(Debian系)或/var/log/secure(RHEL系),可通过grep、tail等命令筛选用户操作、成功命令及失败尝试,日志包含时间、用户、命令等信息;可通过visudo配置独立日志文件及输入输出记录,结合journalctl、awk…

    2026年9月25日
    000
  • mysql中哪个函数可以读取文件内容

    mysql中哪个函数可以读取文件内容mysql中哪个函数可以读取文件内容mysql中哪个函数可以读取文件内容mysql中哪个函数可以读取文件内容

    MySQL 中读取文件内容的函数是 LOAD_FILE(),用法为 LOAD_FILE(file_name),其中 file_name 为文件路径和名称。函数返回文件内容的字符串,如:SELECT LOAD_FILE(‘/tmp/data.txt’)。但须注意文件系统权限、路…

    2026年9月25日 • 用户投稿
    000
  • sublime怎么快速查看函数或类列表_sublime结构导航与符号浏览技巧

    sublime怎么快速查看函数或类列表_sublime结构导航与符号浏览技巧sublime怎么快速查看函数或类列表_sublime结构导航与符号浏览技巧sublime怎么快速查看函数或类列表_sublime结构导航与符号浏览技巧sublime怎么快速查看函数或类列表_sublime结构导航与符号浏览技巧

    使用Ctrl+R或Cmd+R打开“前往符号”面板,可快速定位函数和类;通过安装SideBarEnhancements等插件,在侧边栏查看文件符号树;配合LSP插件支持,使用F12实现“转到定义”跨文件跳转;自定义快捷键如Ctrl+Shift+R优化操作效率。 在使用 Sublime Text 编辑代…

    2026年9月25日 • 用户投稿
    400

发表回复

登录后才能评论
关注微信