本節相關:
- 創建數據庫
- 查看數據庫
- 修改數據庫
- 刪除數據庫
首發時間:2018-02-13 20:47
修改:
- 2018-04-07:考慮到規范化,將所有語法中“關鍵字”變成大寫;以及因為整理“mysql學習之路”,移除字符集和校對集問題並歸成一個新博文。
創建數據庫 :
語法 :
CREATE DATABASE 數據庫名字[庫選項];
庫選項說明 :
- 庫選項是可選項,可以不寫 ,如果不考慮全球化和本地化(比如考慮兼容中文問題),可以直接使用無庫選項的命令
- 庫選項有兩項:字符集和校對集。 並且由於一般校對集配合字符集使用,如果不想細化配置校對及可以忽略校對集配置
- 庫選項的字符集是數據庫識別或存儲數據使用的字符集。常用字符集有utf8和gbk;
- 庫選項的校對集是數據庫校對數據時使用的校對集【校對數據時依據校對集的規則來校對,比如有些校對集忽略大小寫】。
- 但凡是創建數據庫時不指定庫選項的,都將使用默認指定的庫選項。
使用示例 :
CREATE DATABASE school_info; CREATE DATABASE mydatabase CHARSET utf8;
補充說明 :
- 【絕不建議使用,不要沒事找事。。】數據庫名字不能使用關鍵字或保留字,如database,delete,如果語法無誤但創建失敗時,那么很可能是使用了關鍵字或保留字。如果非要使用關鍵字或保留字,需要使用`(TAB上面的鍵)包裹數據庫名字,但刪除的時候也需要加`。
- 數據庫名字是中文而無法創建問題:
- 問題的發生是因為客戶端跟服務端的字符集匹配問題,比如說服務端認為客戶端來的UTF8(漢字三個字節),而客戶端的字符集是gbk(漢字兩個字節)。解決辦法是使服務端接受字符的字符集與客戶端使用的字符集相同。
- 另外一個問題是服務端接收中文后傳輸給客戶端顯示問題,這需要使服務端傳輸給客戶端時使用的字符集與客戶端的相同【客戶端是gbk,而服務端傳的是utf8的中文,那么客戶端會顯示錯誤】。
- 修改辦法1:set names 客戶端使用的字符集;【執行set names utf8 就是把character_set_client、character_set_connection、character_set_results這3個參數值都設為utf8】
- 修改辦法2:逐一設置client、result的字符集。
查看數據庫 :
- 數據庫的查看可以查看現有的數據庫,也可以查看數據庫的創建語句。
- 數據庫的創建語句就是服務端創建這個數據庫的所有語句(比如說服務端會配置上數據庫的字符集)
語法:
-- 查看所有數據庫 SHOW DATABASES; -- 查看符合條件的數據庫 SHOW DATABASES LIKE '模糊匹配'; -- 查看數據庫的創建語句; SHOW CREATE DATABASE 數據庫名;
模糊匹配:
模糊匹配使用通配符來模糊查找。
- %代表匹配多個任意字符,比如%student可以找出:Astudent、ABCstudent、456student
- _代表匹配單個任意字符,比如_student可以找出:Astudent、Cstudent、6student
- 如果_或者%也是一個包含在數據庫名字中的字符的話,需要使用轉義字符\,不然會認定_和%是通配符
- 如查找database_student, 需使用database\_%;,不然可能查找出databasedemo之類不帶database_的數據庫。
使用示例:
SHOW DATABASES; SHOW DATABASES LIKE 'my%'; SHOW DATABASES LIKE 'my_'; SHOW CREATE DATABASE mydatabase;
修改數據庫 :
- 數據庫的修改可以修改數據庫的庫選項(字符集和校對集)
語法:
Alter database 數據庫名字 [庫選項];
使用示例:
ALTER DATABASE mydatabase CHARSET utf8; ALTER DATABASE mydatabase CHARACTER SET utf8; ALTER DATABASE mydatabase CHARACTER SET = utf8;
補充說明:
- 校對集依賴於字符集,一般單獨修改字符集時校對集也會更改,單獨修改校對集字符集也會更改。
- 如果更改的校對集依賴的字符集相同,不改變字符集。
- 字符集和校對集問題,將在我的另一篇博文講述。
刪除數據庫 :
刪除數據庫就是刪除掉整個數據庫連同整個數據庫的數據。刪除的數據無法恢復,刪庫有風險,跑路需謹慎。
語法:
DROP DATABASE 數據庫名字;
使用示例:
-- 刪除數據庫 mydatabase DROP DATABASE mydatabase;