MySQL庫的操作大全
1. 創(chuàng)建一個數(shù)據(jù)庫
MySQL是一個數(shù)據(jù)庫管理系統(tǒng),在其中我們可以創(chuàng)建許多的數(shù)據(jù)庫,數(shù)據(jù)庫中中又可以存儲許多的表。
如下圖所示:
用戶通過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ū)分大小寫,個人喜歡小寫,主要大寫不好認(rèn)(bushi))
- []內(nèi)的內(nèi)容都是可以省略的,所以最簡單的寫法就是這樣:
create database 數(shù)據(jù)庫名字
- CHARACTER SET:指定數(shù)據(jù)庫采用的字符集(本文下面講~)
- COLLATE:指定數(shù)據(jù)庫字符集的校驗(yàn)規(guī)則(本文下面講~)
1.1 創(chuàng)建一個數(shù)據(jù)庫(演示
create database if not exists SpringThings;
創(chuàng)建成功,if not exists
的作用是什么呢>
如果創(chuàng)建的數(shù)據(jù)庫已經(jīng)存在就不會創(chuàng)建,并發(fā)出警告,當(dāng)我們不加if not exists
就會報(bào)錯,當(dāng)然數(shù)據(jù)也不會創(chuàng)建。也就是說if not exists
是一種比較溫和的檢查方式。
繼續(xù)看演示:
2. 字符集和校驗(yàn)規(guī)則
2.1 字符集
字符集大家都知道吧,想gbk
和utf-8
都是字符集,其底層也就是用一個唯一的二進(jìn)制數(shù)來代表一個字符,不同的字符集可能對應(yīng)的二進(jìn)制數(shù)代表的字符不同。最早的字符集是ASCII碼表,其大小只有一個字節(jié),只能表示256個字符。
MySQL默認(rèn)的字符集是什么呢?這個就要去看配置文件了,在Linux
下文件應(yīng)該是存儲在/etc/my.cnf
里面的,來看看里面的配置吧。
我的MySQL里面配置的是utf8
還有一種方法就是在MySQL的命令行中輸入:
show variables like 'character_set_database';
既然有默認(rèn)的字符集,那么也就表示字符集是可以選擇,MySQL中支持哪些字符集呢?
想要知道這個答案,只需要執(zhí)行,下面這個命令即可:
show charset;
2.2 校驗(yàn)規(guī)則
這里的校驗(yàn)規(guī)則主要是針對字符的大小寫,且是和字符集有關(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ī)則對大小寫的約束,我們來看下面的例子:
我們會用到的字符集是utf8
,校驗(yàn)規(guī)則為utf8_bin
(區(qū)分大小寫)和utf8_general_ci
(不區(qū)分大小寫)
我在數(shù)據(jù)庫中創(chuàng)建了一個表并插入了一些數(shù)據(jù),目前讀者不需要了解~
還記得我們的校驗(yàn)規(guī)則嗎,不區(qū)分大小寫那個~
居然都搜索出來嗎…你這家伙。符合預(yù)期。
再創(chuàng)建一個數(shù)據(jù)庫指定另一個校驗(yàn)規(guī)則:
create database if not exists collate utf8_bin;
這樣就區(qū)分大小寫了~
2.3 知識補(bǔ)充:)
在上面的數(shù)據(jù)庫創(chuàng)建,就是這個:
create database if not exists collate utf8_bin;
我只是指定了校驗(yàn)規(guī)則,并沒有指定字符集,MySQL能知道我的字符集嗎?
答案是可以的,雖然我們MySQL設(shè)置的默認(rèn)字符集就是utf8
但是即使我們設(shè)置其他默認(rèn)字符集,MySQL依然可以自動推導(dǎo)出來,同理當(dāng)你只指定了字符集MySQL也可以自動推測出校驗(yàn)規(guī)則~
不過要注意,你給的字符集和校驗(yàn)規(guī)則一定要是MySQL支持的,可不能自己隨便寫一個的。
3. 操作數(shù)據(jù)庫
3.1 基礎(chǔ)指令 查看MySQL下的所有數(shù)據(jù)庫(記得+‘s’)
show databases;
2. 顯示創(chuàng)建語句
show create database 數(shù)據(jù)庫名字;
說明:
數(shù)據(jù)庫名字的反引號,是為了防止使用的數(shù)據(jù)庫名剛好是關(guān)鍵字/*!40100 default… */ 這個不是注釋,表示當(dāng)前mysql版本大于4.01版本,就執(zhí)行這句話 3.2 使用數(shù)據(jù)庫
在我們對一個數(shù)據(jù)庫進(jìn)行操作前,要先指定使用這個數(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í)我們對數(shù)據(jù)庫的修改就是修改數(shù)據(jù)庫的字符集和校驗(yàn)規(guī)則。
alter database SpringThings charset=gbk;
3.3.1 知識補(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)建一個臨時(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ù)前,我們再看看路徑文件里備份文件的內(nèi)容吧。
還真是樸實(shí)無華啊,就是以前執(zhí)行過的sql語句
注意:前面博主沒有加-B
選項(xiàng),后續(xù)需要先創(chuàng)建數(shù)據(jù)庫,然后再恢復(fù)!最好的方法就是加-B
,所以這里其實(shí)是恢復(fù)失敗了
恢復(fù)的語法就是如此,大家快去試試吧~
4.1 錯誤的備份方法:(
主播主播,這個備份操作還是太難寫了,有沒有更簡單的方法。
有的有的,直接復(fù)制你需要備份的數(shù)據(jù)庫然后打包,等以后需要的時(shí)候解壓即可——嗎?
這種方法嚴(yán)重不推薦,原因是恢復(fù)時(shí)可能會出現(xiàn)問題,假設(shè)恢復(fù)至版本更低的 MySQL
中,會出現(xiàn)各種奇怪的問題,畢竟老版本沒有新特性,還有就是這種做法太暴力了
5.總結(jié)
在數(shù)據(jù)庫中,創(chuàng)建數(shù)據(jù)庫是最開始的一步,本文向讀者介紹了庫的創(chuàng)建,然后通過數(shù)據(jù)庫的創(chuàng)建語法引導(dǎo)出數(shù)據(jù)庫的字符集和校驗(yàn)規(guī)則,然后就是對數(shù)據(jù)庫進(jìn)行操作比如查看、修改等操作,最后就是數(shù)據(jù)的備份與恢復(fù)。
到此這篇關(guān)于MySQL庫的操作的文章就介紹到這了,更多相關(guān)MySQL庫的操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL中日期和時(shí)間戳互相轉(zhuǎn)換的函數(shù)和方法
這篇文章主要介紹了MySQL中日期和時(shí)間戳互相轉(zhuǎn)換的函數(shù)和方法,本文分別講解了時(shí)間戳轉(zhuǎn)換成日期的方法和把日期轉(zhuǎn)換為時(shí)間戳的方法,需要的朋友可以參考下2015-06-06MYSQL中查詢LONGBLOB類型數(shù)據(jù)的大小的詳細(xì)示例
在MySQL中,LONGBLOB?是一種二進(jìn)制大對象(BLOB)數(shù)據(jù)類型,用于存儲大量的二進(jìn)制數(shù)據(jù),但是,LONGBLOB?數(shù)據(jù)類型本身并不直接存儲數(shù)據(jù)的大?。ㄩL度),它存儲的是二進(jìn)制數(shù)據(jù)的實(shí)際內(nèi)容,這篇文章主要介紹了MYSQL中怎么查詢LONGBLOB類型數(shù)據(jù)的大小,需要的朋友可以參考下2024-06-06MySQL 5.7臨時(shí)表空間如何玩才能不掉坑里詳解
這篇文章主要給大家介紹了關(guān)于MySQL 5.7臨時(shí)表空間如何玩才能不掉坑里的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起看看吧2018-09-09