1.索引:可以加快查詢速度
1.索引是一種與表有關(guān)的結(jié)構(gòu)占键,它的作用相當(dāng)于書的目錄,可以根據(jù)目錄中的頁碼快速找到所需的內(nèi)容尉辑。
2.當(dāng)表中有大量記錄時鸠补,若要對表進行查詢萝风,沒有索引的情況是全表搜索:將所有記錄一一取出,和查
詢條件一一對比紫岩,然后返回滿足條件的記錄。這樣做會消耗大量數(shù)據(jù)庫系統(tǒng)時間 并造成大量擦盤I/O操作睬塌。
對一張表中的某個列建立索引泉蝌,有以下兩種語句格式:
ALTER TABLE 表名字 ADD INDEX 索引名 (列名);
CREATE INDEX 索引名 ON 表名字 (列名);
索引的效果是加快查詢速度歇万,當(dāng)表中數(shù)據(jù)不夠多的時候是感受不出它的效果的。這里我們使用命令 SHOW INDEX FROM 表名字; 查看剛才新建的索引:
![01](https://dn-anything-about-doc.qbox.me/MySQL/sql-06-01.png)
在使用SELECT語句查詢的時候勋陪,語句中WHERE里面的條件,會自動判斷有沒有可用的索引。
2.視圖:是一種虛擬存在的表
視圖是從一個或多個表中導(dǎo)出來的表芦岂,是一種虛擬存在的表拴测。它就像一個窗口,通過這個窗口可以看到系統(tǒng)專門提供的數(shù)據(jù)违孝,這樣刹前,用戶可以不用看到整個數(shù)據(jù)庫中的數(shù)據(jù),而只關(guān)心對自己有用的數(shù)據(jù)雌桑。
注意理解視圖是虛擬的表:
數(shù)據(jù)庫中只存放了視圖的定義喇喉,而沒有存放視圖中的數(shù)據(jù),這些數(shù)據(jù)存放在原來的表中校坑;
使用視圖查詢數(shù)據(jù)時拣技,數(shù)據(jù)庫系統(tǒng)會從原來的表中取出對應(yīng)的數(shù)據(jù);
視圖中的數(shù)據(jù)依賴于原來表中的數(shù)據(jù)耍目,一旦表中數(shù)據(jù)發(fā)生改變膏斤,顯示在視圖中的數(shù)據(jù)也會發(fā)生改變;
在使用視圖的時候邪驮,可以把它當(dāng)作一張表莫辨。
創(chuàng)建視圖的語句格式為:
CREATE VIEW 視圖名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;
可見創(chuàng)建視圖的語句,后半句是一個SELECT查詢語句耕捞,所以視圖也可以建立在多張表上衔掸,只需在SELECT語句中使用子查詢或連接查詢,這些在之前的實驗已經(jīng)進行過俺抽。
3.導(dǎo)入:從文件中導(dǎo)入數(shù)據(jù)到表
導(dǎo)入操作敞映,可以把一個文件里的數(shù)據(jù)保存進一張表。導(dǎo)入語句格式為:
LOAD DATA INFILE '文件路徑' INTO TABLE 表名字
4.導(dǎo)出:從表中導(dǎo)出到文件中
導(dǎo)出與導(dǎo)入是相反的過程磷斧,是把數(shù)據(jù)庫某個表中的數(shù)據(jù)保存到一個文件之中振愿。
導(dǎo)出語句基本格式為:
SELECT 列1,列2 INTO OUTFILE '文件路徑和文件名' FROM 表名字;
注意:語句中 “文件路徑” 之下不能已經(jīng)有同名文件弛饭。
現(xiàn)在我們把整個employee表的數(shù)據(jù)導(dǎo)出到 /tmp 目錄下冕末,導(dǎo)出文件命名為 out.txt 具體語句為:
SELECT * INTO OUTFILE '/tmp/out.txt' FROM employee;
5.備份
mysqldump 備份數(shù)據(jù)庫到文件
數(shù)據(jù)庫中的數(shù)據(jù)或許十分重要,出于安全性考慮侣颂,在數(shù)據(jù)庫的使用中档桃,應(yīng)該注意使用備份功能。
備份與導(dǎo)出的區(qū)別:導(dǎo)出的文件只是保存數(shù)據(jù)庫中的數(shù)據(jù)憔晒;
而備份藻肄,則是把數(shù)據(jù)庫的結(jié)構(gòu)蔑舞,包括數(shù)據(jù)、約束嘹屯、索引攻询、視圖等全部另存為一個文件。
mysqldump 是 MySQL 用于備份數(shù)據(jù)庫的實用程序州弟。它主要產(chǎn)生一個 SQL
腳本文件钧栖,其中包含從頭重新創(chuàng)建數(shù)據(jù)庫所必需的命令CREATE TABLE INSERT 等。
使用 mysqldump 備份的語句:
#備份整個數(shù)據(jù)庫
mysqldump -u root 數(shù)據(jù)庫名 > 備份文件名;
#備份整個表
mysqldump -u root 數(shù)據(jù)庫名 表名字 > 備份文件名;
6.恢復(fù):從文件恢復(fù)數(shù)據(jù)庫
先進入mysql再使用恢復(fù)語句
source /tmp/SQL6/MySQL-05.sql;
另一個種方式恢復(fù)數(shù)據(jù)庫:
先創(chuàng)建一個空數(shù)據(jù)庫TEST婆翔,再退出mysql
使用命令
mysql -u root -p TEST < mysql.sql;