日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:52010
  • 待審:67
  • 小程序:12
  • 文章:1106242
  • 會員:784

介紹

在本實驗中,我們將學習和練習索引、視圖、備份和恢復。這些概念對于數據庫管理員來說非常重要。

學習目標

創建索引
創建視圖
備份與恢復

準備

開始之前,我們需要準備好環境。

啟動mysql服務并以root身份登錄。

cd ~/project
sudo service mysql start
mysql -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: 0

mariadb [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_namev_agev_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 database

mysqldump -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 root
create 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 



我們可以通過輸入命令查看測試數據庫中的表來確認恢復是否成功:<p>
<br></p><pre class="brush:php;toolbar:false">mysql -u root
use test
show tables

登錄后復制

MariaDB [(none)]&gt; USE test;
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
MariaDB [test]&gt; SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| department     |
| employee       |
| project        |
| table_1        |
+----------------+
4 rows in set (0.000 sec)

登錄后復制

我們可以看到4張表已經恢復到測試數據庫了

概括

恭喜!您已經完成了有關 mysql 中其他基本操作的實驗。您已經學習了如何創建索引、視圖以及如何備份和恢復數據庫。


? 現在練習:其他基本操作


想了解更多嗎?

?學習最新的mysql技能樹

? 閱讀更多 mysql 教程

? 加入我們的 discord 或發推文@wearelabex

分享到:
標簽:備份 恢復 操作 索引 視圖
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 52010

    網站

  • 12

    小程序

  • 1106242

    文章

  • 784

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定