MySQL基本操作(四)其他基本操作

索引:
索引是一種與表有關(guān)的結(jié)構(gòu),它的作用相當(dāng)于書(shū)的目錄,可以根據(jù)目錄中的頁(yè)碼快速找到所需的內(nèi)容。

當(dāng)表中有大量記錄時(shí),若要對(duì)表進(jìn)行查詢(xún),沒(méi)有索引的情況是全表搜索:將所有記錄一一取出,和查詢(xún)條件進(jìn)行一一對(duì)比,然后返回滿(mǎn)足條件的記錄。這樣做會(huì)消耗大量數(shù)據(jù)庫(kù)系統(tǒng)時(shí)間,并造成大量磁盤(pán) I/O 操作。

而如果在表中已建立索引,在索引中找到符合查詢(xún)條件的索引值,通過(guò)索引值就可以快速找到表中的數(shù)據(jù),可以大大加快查詢(xún)速度。

對(duì)一張表中的某個(gè)列建立索引,有以下兩種語(yǔ)句格式:
ALTER TABLE 表名字 ADD INDEX 索引名 (列名);

CREATE INDEX 索引名 ON 表名字 (列名);

ALTER TABLE employee ADD INDEX idx_id (id);  #在employee表的id列上建立名為idx_id的索引
CREATE INDEX idx_name ON employee (name);   #在employee表的name列上建立名為idx_name的索引

索引的效果是加快查詢(xún)速度,當(dāng)表中數(shù)據(jù)不夠多的時(shí)候是感受不出它的效果的。這里我們使用命令 SHOW INDEX FROM 表名字; 查看剛才新建的索引

Paste_Image.png

視圖:
視圖是從一個(gè)或多個(gè)表中導(dǎo)出來(lái)的表,是一種虛擬存在的表。它就像一個(gè)窗口,通過(guò)這個(gè)窗口可以看到系統(tǒng)專(zhuān)門(mén)提供的數(shù)據(jù),這樣,用戶(hù)可以不用看到整個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù),而只關(guān)心對(duì)自己有用的數(shù)據(jù)。

注意理解視圖是虛擬的表:

數(shù)據(jù)庫(kù)中只存放了視圖的定義,而沒(méi)有存放視圖中的數(shù)據(jù),這些數(shù)據(jù)存放在原來(lái)的表中;
使用視圖查詢(xún)數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)系統(tǒng)會(huì)從原來(lái)的表中取出對(duì)應(yīng)的數(shù)據(jù);
視圖中的數(shù)據(jù)依賴(lài)于原來(lái)表中的數(shù)據(jù),一旦表中數(shù)據(jù)發(fā)生改變,顯示在視圖中的數(shù)據(jù)也會(huì)發(fā)生改變;
在使用視圖的時(shí)候,可以把它當(dāng)作一張表。
創(chuàng)建視圖的語(yǔ)句格式為:
CREATE VIEW 視圖名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;
可見(jiàn)創(chuàng)建視圖的語(yǔ)句,后半句是一個(gè)SELECT查詢(xún)語(yǔ)句,所以視圖也可以建立在多張表上,只需在SELECT語(yǔ)句中使用子查詢(xún)或連接查詢(xún)。

可見(jiàn)創(chuàng)建視圖的語(yǔ)句,后半句是一個(gè)SELECT查詢(xún)語(yǔ)句,所以視圖也可以建立在多張表上,只需在SELECT語(yǔ)句中使用子查詢(xún)或連接查詢(xún),這些在之前的實(shí)驗(yàn)已經(jīng)進(jìn)行過(guò)。

CREATE VIEW v_emp(v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;
Paste_Image.png

導(dǎo)入:
導(dǎo)入操作,可以把一個(gè)文件里的數(shù)據(jù)保存進(jìn)一張表。導(dǎo)入語(yǔ)句格式為:
LOAD DATA INFILE '文件路徑' INTO TABLE 表名字;
原表:


Paste_Image.png
LOAD DATA INFILE '/tmp/SQL6/in.txt' INTO TABLE employee;

導(dǎo)入數(shù)據(jù)后:

Paste_Image.png

導(dǎo)出:
導(dǎo)出與導(dǎo)入是相反的過(guò)程,是把數(shù)據(jù)庫(kù)某個(gè)表中的數(shù)據(jù)保存到一個(gè)文件之中。導(dǎo)出語(yǔ)句基本格式為:
SELECT 列1,列2 INTO OUTFILE '文件路徑和文件名' FROM 表名字;

注意:語(yǔ)句中 “文件路徑” 之下不能已經(jīng)有同名文件。

現(xiàn)在我們把整個(gè)employee表的數(shù)據(jù)導(dǎo)出到 /tmp 目錄下,導(dǎo)出文件命名為 out.txt 具體語(yǔ)句為:

SELECT * INTO OUTFILE '/tmp/out.txt' FROM employee;

備份:
數(shù)據(jù)庫(kù)中的數(shù)據(jù)或許十分重要,出于安全性考慮,在數(shù)據(jù)庫(kù)的使用中,應(yīng)該注意使用備份功能。

備份與導(dǎo)出的區(qū)別:導(dǎo)出的文件只是保存數(shù)據(jù)庫(kù)中的數(shù)據(jù);而備份,則是把數(shù)據(jù)庫(kù)的結(jié)構(gòu),包括數(shù)據(jù)、約束、索引、視圖等全部另存為一個(gè)文件。
mysqldump 是 MySQL 用于備份數(shù)據(jù)庫(kù)的實(shí)用程序。它主要產(chǎn)生一個(gè) SQL 腳本文件,其中包含從頭重新創(chuàng)建數(shù)據(jù)庫(kù)所必需的命令CREATE TABLE INSERT 等。

使用 mysqldump 備份的語(yǔ)句:

mysqldump -u root 數(shù)據(jù)庫(kù)名>備份文件名;   #備份整個(gè)數(shù)據(jù)庫(kù)

mysqldump -u root 數(shù)據(jù)庫(kù)名 表名字>備份文件名;  #備份整個(gè)表

例如我要備份一個(gè)叫mysql_shiyan的數(shù)據(jù)庫(kù),備份出來(lái)的叫做bak.sql

mysqldump -u root mysql_shiyan > bak.sql;

用ls命令進(jìn)行查看

Paste_Image.png

你可以用gedit查看備份文件的內(nèi)容,可以看見(jiàn)里面不僅保存了數(shù)據(jù),還有所備份的數(shù)據(jù)庫(kù)的其他信息。

恢復(fù):

source /tmp/bak.sql

還有另一種方式恢復(fù)數(shù)據(jù)庫(kù),但是在這之前我們先使用命令新建一個(gè)空的數(shù)據(jù)庫(kù) test:

mysql -u root          #因?yàn)樵谏弦徊揭呀?jīng)退出了MySQL,現(xiàn)在需要重新登錄

CREATE DATABASE test;  #新建一個(gè)名為test的數(shù)據(jù)庫(kù)

quit命令退出MySQL,然后輸入語(yǔ)句進(jìn)行恢復(fù),把剛才備份的 bak.sql 恢復(fù)到 test 數(shù)據(jù)庫(kù):

mysql -u root test < bak.sql

我們輸入命令查看 test 數(shù)據(jù)庫(kù)的表,便可驗(yàn)證是否恢復(fù)成功

mysql -u root          #因?yàn)樵谏弦徊揭呀?jīng)退出了MySQL,現(xiàn)在需要重新登錄

use test               #連接數(shù)據(jù)庫(kù)test

SHOW TABLES;           #查看test數(shù)據(jù)庫(kù)的表
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,143評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,553評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,620評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,416評(píng)論 6 405
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 54,940評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,170評(píng)論 0 287
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,709評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,597評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,784評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評(píng)論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,029評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,407評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,663評(píng)論 1 280
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,403評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,746評(píng)論 2 370

推薦閱讀更多精彩內(nèi)容