MySQL庫的操作大全
1. 創(chuàng)建一個(gè)數(shù)據(jù)庫
MySQL是一個(gè)數(shù)據(jù)庫管理系統(tǒng),在其中我們可以創(chuàng)建許多的數(shù)據(jù)庫,數(shù)據(jù)庫中中又可以存儲(chǔ)許多的表。
如下圖所示:

用戶通過MySQL來創(chuàng)建數(shù)據(jù)庫,下面是創(chuàng)建數(shù)據(jù)的語法:
CREATE database [IF NOT EXISTS] 數(shù)據(jù)庫名字 [create_specification [,create_specification]...] create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name
注意:
- 大寫的字符都是MySQL中的關(guān)鍵字(在創(chuàng)建的時(shí)候,可以不大寫,這里不區(qū)分大小寫,個(gè)人喜歡小寫,主要大寫不好認(rèn)(bushi))
- []內(nèi)的內(nèi)容都是可以省略的,所以最簡(jiǎn)單的寫法就是這樣:
create database 數(shù)據(jù)庫名字
- CHARACTER SET:指定數(shù)據(jù)庫采用的字符集(本文下面講~)
- COLLATE:指定數(shù)據(jù)庫字符集的校驗(yàn)規(guī)則(本文下面講~)
1.1 創(chuàng)建一個(gè)數(shù)據(jù)庫(演示
create database if not exists SpringThings;

創(chuàng)建成功,if not exists的作用是什么呢>
如果創(chuàng)建的數(shù)據(jù)庫已經(jīng)存在就不會(huì)創(chuàng)建,并發(fā)出警告,當(dāng)我們不加if not exists就會(huì)報(bào)錯(cuò),當(dāng)然數(shù)據(jù)也不會(huì)創(chuàng)建。也就是說if not exists是一種比較溫和的檢查方式。
繼續(xù)看演示:

2. 字符集和校驗(yàn)規(guī)則
2.1 字符集
字符集大家都知道吧,想gbk和utf-8都是字符集,其底層也就是用一個(gè)唯一的二進(jìn)制數(shù)來代表一個(gè)字符,不同的字符集可能對(duì)應(yīng)的二進(jìn)制數(shù)代表的字符不同。最早的字符集是ASCII碼表,其大小只有一個(gè)字節(jié),只能表示256個(gè)字符。
MySQL默認(rèn)的字符集是什么呢?這個(gè)就要去看配置文件了,在Linux下文件應(yīng)該是存儲(chǔ)在/etc/my.cnf里面的,來看看里面的配置吧。

我的MySQL里面配置的是utf8
還有一種方法就是在MySQL的命令行中輸入:
show variables like 'character_set_database';

既然有默認(rèn)的字符集,那么也就表示字符集是可以選擇,MySQL中支持哪些字符集呢?
想要知道這個(gè)答案,只需要執(zhí)行,下面這個(gè)命令即可:
show charset;

2.2 校驗(yàn)規(guī)則
這里的校驗(yàn)規(guī)則主要是針對(duì)字符的大小寫,且是和字符集有關(guān)系的。
查看數(shù)據(jù)庫支持的校驗(yàn)規(guī)則:
show collation;
由于支持的校驗(yàn)規(guī)則太多,就不截圖了:(
在數(shù)據(jù)庫中,一種字符集可以有多種校驗(yàn)規(guī)則。
比如現(xiàn)在我查看MySQL的默認(rèn)校驗(yàn)規(guī)則
show variables like 'collation_database';

它還要這些校驗(yàn)規(guī)則:

關(guān)于校驗(yàn)規(guī)則對(duì)大小寫的約束,我們來看下面的例子:
我們會(huì)用到的字符集是utf8,校驗(yàn)規(guī)則為utf8_bin(區(qū)分大小寫)和utf8_general_ci(不區(qū)分大小寫)

我在數(shù)據(jù)庫中創(chuàng)建了一個(gè)表并插入了一些數(shù)據(jù),目前讀者不需要了解~
還記得我們的校驗(yàn)規(guī)則嗎,不區(qū)分大小寫那個(gè)~

居然都搜索出來嗎…你這家伙。符合預(yù)期。
再創(chuàng)建一個(gè)數(shù)據(jù)庫指定另一個(gè)校驗(yàn)規(guī)則:
create database if not exists collate utf8_bin;

這樣就區(qū)分大小寫了~
2.3 知識(shí)補(bǔ)充:)
在上面的數(shù)據(jù)庫創(chuàng)建,就是這個(gè):
create database if not exists collate utf8_bin;
我只是指定了校驗(yàn)規(guī)則,并沒有指定字符集,MySQL能知道我的字符集嗎?
答案是可以的,雖然我們MySQL設(shè)置的默認(rèn)字符集就是utf8但是即使我們?cè)O(shè)置其他默認(rèn)字符集,MySQL依然可以自動(dòng)推導(dǎo)出來,同理當(dāng)你只指定了字符集MySQL也可以自動(dòng)推測(cè)出校驗(yàn)規(guī)則~
不過要注意,你給的字符集和校驗(yàn)規(guī)則一定要是MySQL支持的,可不能自己隨便寫一個(gè)的。
3. 操作數(shù)據(jù)庫
3.1 基礎(chǔ)指令 查看MySQL下的所有數(shù)據(jù)庫(記得+‘s’)
show databases;

2. 顯示創(chuàng)建語句
show create database 數(shù)據(jù)庫名字;

說明:
數(shù)據(jù)庫名字的反引號(hào),是為了防止使用的數(shù)據(jù)庫名剛好是關(guān)鍵字/*!40100 default… */ 這個(gè)不是注釋,表示當(dāng)前mysql版本大于4.01版本,就執(zhí)行這句話 3.2 使用數(shù)據(jù)庫
在我們對(duì)一個(gè)數(shù)據(jù)庫進(jìn)行操作前,要先指定使用這個(gè)數(shù)據(jù)庫。
use 數(shù)據(jù)庫名
3.3 修改數(shù)據(jù)庫
語法:
ALTER DATABASE 數(shù)據(jù)庫名 [alter_spacification [,alter_spacification]...] alter_spacification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name
其實(shí)我們對(duì)數(shù)據(jù)庫的修改就是修改數(shù)據(jù)庫的字符集和校驗(yàn)規(guī)則。
alter database SpringThings charset=gbk;

3.3.1 知識(shí)補(bǔ)充:)
其實(shí)我們啊還可以在文件里面來查看數(shù)據(jù)庫的字符集,進(jìn)入/var/lib/mysql

然后我們進(jìn)入你想要查看的數(shù)據(jù)庫,cat db.opt

3.4 數(shù)據(jù)庫刪除
語法:
DROP DATABASE [IF EXISTS] 數(shù)據(jù)庫名字
我們可以先創(chuàng)建一個(gè)臨時(shí)的數(shù)據(jù)庫,然后演示刪除:

注意:
不要輕易刪除庫,一旦數(shù)據(jù)庫被刪除,里面的所有數(shù)據(jù)啊,表啊就全部消失了。
也是變成了傳說中的刪庫跑路。
4. 數(shù)據(jù)的備份與恢復(fù)
庫被刪了難道就沒有辦法了嗎?其實(shí)還是有救的,前提是你備份了的話:)
備份的語法:
mysqldump -u 用戶 -p -P 端口 -B 待備份的數(shù)據(jù)庫 > 目標(biāo)路徑(含目標(biāo)文件)
這里我們就先把SpringThings備份了
注意:如果該數(shù)據(jù)庫正在被使用,需要先斷開連接。
nysqldump -u root -p -P 8000 -B SpringThings > /root/MySQL/SpringThings.sql

注意:此處博主沒有加-B選項(xiàng),后續(xù)需要先創(chuàng)建數(shù)據(jù)庫,然后再恢復(fù)!最好的方法就是加-B
然后我們刪除該庫

下面開始恢復(fù)。
恢復(fù)的語法:
SOURCE 路徑
在恢復(fù)前,我們?cè)倏纯绰窂轿募飩浞菸募膬?nèi)容吧。

還真是樸實(shí)無華啊,就是以前執(zhí)行過的sql語句

注意:前面博主沒有加-B選項(xiàng),后續(xù)需要先創(chuàng)建數(shù)據(jù)庫,然后再恢復(fù)!最好的方法就是加-B,所以這里其實(shí)是恢復(fù)失敗了
恢復(fù)的語法就是如此,大家快去試試吧~
4.1 錯(cuò)誤的備份方法:(
主播主播,這個(gè)備份操作還是太難寫了,有沒有更簡(jiǎn)單的方法。
有的有的,直接復(fù)制你需要備份的數(shù)據(jù)庫然后打包,等以后需要的時(shí)候解壓即可——嗎?
這種方法嚴(yán)重不推薦,原因是恢復(fù)時(shí)可能會(huì)出現(xiàn)問題,假設(shè)恢復(fù)至版本更低的 MySQL 中,會(huì)出現(xiàn)各種奇怪的問題,畢竟老版本沒有新特性,還有就是這種做法太暴力了
5.總結(jié)
在數(shù)據(jù)庫中,創(chuàng)建數(shù)據(jù)庫是最開始的一步,本文向讀者介紹了庫的創(chuàng)建,然后通過數(shù)據(jù)庫的創(chuàng)建語法引導(dǎo)出數(shù)據(jù)庫的字符集和校驗(yàn)規(guī)則,然后就是對(duì)數(shù)據(jù)庫進(jìn)行操作比如查看、修改等操作,最后就是數(shù)據(jù)的備份與恢復(fù)。
到此這篇關(guān)于MySQL庫的操作的文章就介紹到這了,更多相關(guān)MySQL庫的操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL中日期和時(shí)間戳互相轉(zhuǎn)換的函數(shù)和方法
這篇文章主要介紹了MySQL中日期和時(shí)間戳互相轉(zhuǎn)換的函數(shù)和方法,本文分別講解了時(shí)間戳轉(zhuǎn)換成日期的方法和把日期轉(zhuǎn)換為時(shí)間戳的方法,需要的朋友可以參考下2015-06-06
MYSQL中查詢LONGBLOB類型數(shù)據(jù)的大小的詳細(xì)示例
在MySQL中,LONGBLOB?是一種二進(jìn)制大對(duì)象(BLOB)數(shù)據(jù)類型,用于存儲(chǔ)大量的二進(jìn)制數(shù)據(jù),但是,LONGBLOB?數(shù)據(jù)類型本身并不直接存儲(chǔ)數(shù)據(jù)的大?。ㄩL(zhǎng)度),它存儲(chǔ)的是二進(jìn)制數(shù)據(jù)的實(shí)際內(nèi)容,這篇文章主要介紹了MYSQL中怎么查詢LONGBLOB類型數(shù)據(jù)的大小,需要的朋友可以參考下2024-06-06
深入mysql存儲(chǔ)過程中表名使用參數(shù)傳入的詳解
本篇文章是對(duì)mysql存儲(chǔ)過程中表名使用參數(shù)傳入進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
MySQL 5.7臨時(shí)表空間如何玩才能不掉坑里詳解
這篇文章主要給大家介紹了關(guān)于MySQL 5.7臨時(shí)表空間如何玩才能不掉坑里的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起看看吧2018-09-09
mysql存儲(chǔ)過程之錯(cuò)誤處理實(shí)例詳解
這篇文章主要介紹了mysql存儲(chǔ)過程之錯(cuò)誤處理,結(jié)合實(shí)例形式詳細(xì)分析了mysql存儲(chǔ)過程錯(cuò)誤處理相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-12-12
導(dǎo)致mysqld無法啟動(dòng)的一個(gè)錯(cuò)誤問題及解決
這篇文章主要介紹了導(dǎo)致mysqld無法啟動(dòng)的一個(gè)錯(cuò)誤問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02

