「前言」文章內(nèi)容大致是數(shù)據(jù)庫的基本操作
「歸屬專欄」MySQL
「主頁鏈接」個人主頁
「筆者」楓葉先生(fy)
「楓葉先生有點文青病」「句子分享」
哪里會有人喜歡孤獨,不過是不喜歡失望罷了。
——村上春樹《挪威的森林》
一、創(chuàng)建/查看數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)庫語法:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,create_specification] ...]
create_specification
的選項:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
說明:
-
db_name
是創(chuàng)建數(shù)據(jù)庫的名字 - 大寫的表示關(guān)鍵字
- [] 是可選項,可以選擇不寫
- CHARACTER SET: 指定數(shù)據(jù)庫采用的字符集
- COLLATE: 指定數(shù)據(jù)庫字符集的校驗規(guī)則
查看所有的數(shù)據(jù)庫:
show databases;
[IF NOT EXISTS]
的意思是,如果數(shù)據(jù)庫存在就不創(chuàng)建,數(shù)據(jù)庫不存在就創(chuàng)建。例如創(chuàng)建已經(jīng)存在的 test
數(shù)據(jù)庫
create database if not exists test;
或者 create database test; // 直接創(chuàng)建
如果不存在則創(chuàng)建
create database if not exists test1;
數(shù)據(jù)庫被創(chuàng)建本質(zhì)上就是在/var/lib/mysql/
下創(chuàng)建一個目錄
二、刪除數(shù)據(jù)庫
語法:文章來源:http://www.zghlxwxcb.cn/news/detail-555886.html
DROP DATABASE [IF EXISTS] db_ name;
-
db_name
是創(chuàng)建數(shù)據(jù)庫的名字 - [] 是可選項,可以選擇不寫
執(zhí)行刪除之后的結(jié)果:
- 數(shù)據(jù)庫內(nèi)部看不到對應的數(shù)據(jù)庫
- 對應的數(shù)據(jù)庫文件夾被刪除,級聯(lián)刪除,里面的數(shù)據(jù)表全部被刪
- 數(shù)據(jù)庫被刪除本質(zhì)上就是在
/var/lib/mysql/
下刪除一個目錄
注意:不要隨意刪除數(shù)據(jù)庫,盡量是對不需要的數(shù)據(jù)庫進行重命名備份即可
三、數(shù)據(jù)庫字符集和數(shù)據(jù)庫校驗規(guī)則
創(chuàng)建名為 db1 的數(shù)據(jù)庫
create database db1;
說明:當我們創(chuàng)建數(shù)據(jù)庫沒有指定字符集和校驗規(guī)則時,系統(tǒng)使用默認字符集:utf8
,校驗規(guī)則
是:utf8_ general_ ci
,即MySQL配置文件/etc/my.cnf
里面設(shè)置的,如果我們自己指定字符集或校驗規(guī)則,則不會使用系統(tǒng)默認的字符集和校驗規(guī)則時。
我們自已也可以指定創(chuàng)建創(chuàng)建一個使用utf8
字符集的 db2 數(shù)據(jù)庫
create database db2 charset=utf8;
或者 create database db2 CHARACTER SET utf8
也可以帶創(chuàng)建一個使用utf
字符集,并帶校對規(guī)則utf8_general_ci
的 db3 數(shù)據(jù)庫
create database db3 charset=utf8 collate utf8_general_ci;
什么是字符集和校驗規(guī)則??
- 字符集就是編碼集,數(shù)據(jù)庫用于表示和存儲數(shù)據(jù)
- 校驗規(guī)則是一種用于檢測和驗證數(shù)據(jù)完整性的方法,數(shù)據(jù)庫在比較字段的時候需要用到的編碼(讀取數(shù)據(jù)、比較數(shù)據(jù))
數(shù)據(jù)庫庫無論對數(shù)據(jù)做任何操作,都必須保證編碼格式是一致的
查看系統(tǒng)默認字符集(當前數(shù)據(jù)庫)(MySQL配置文件/etc/my.cnf
里面設(shè)置的)
show variables like 'character_set_database';
查看系統(tǒng)默認校驗規(guī)則(當前數(shù)據(jù)庫)
show variables like 'collation_database';
查看數(shù)據(jù)庫支持的字符集,字符集主要是控制用什么語言。比如utf8就可以使用中文
show charset;
查看數(shù)據(jù)庫支持的字符集校驗規(guī)則
每一種校驗規(guī)則都匹配一種字符集,比如utf8_general_ci
檢驗規(guī)則匹配的字符集是utf8
四、校驗規(guī)則對數(shù)據(jù)庫的影響
不區(qū)分大小寫
創(chuàng)建一個數(shù)據(jù)庫,校驗規(guī)則使用utf8_ general_ ci[不區(qū)分大小寫]
create database test1 charset=utf8 collate utf8_general_ci;
創(chuàng)建表插入數(shù)據(jù)
use test1;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
在該數(shù)據(jù)庫的目錄下,db.opt
文件就是存放該庫的編碼規(guī)則
cat /var/lib/mysql/test1/db.opt
查看表的信息
查找字符 a
select * from person where name='a';
a
和A
都被查出來了,說明檢驗規(guī)則utf8_general_ci
不區(qū)分大小寫
區(qū)分大小寫
創(chuàng)建一個數(shù)據(jù)庫,校驗規(guī)則使用utf8_ bin[區(qū)分大小寫]
create database test2 collate utf8_bin;
創(chuàng)建表插入數(shù)據(jù)
use test2;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
在該數(shù)據(jù)庫的目錄下,db.opt
文件就是存放該庫的編碼規(guī)則
查找字符 a
,只有符合條件的被查出來的,說明檢驗規(guī)則utf8_bin
區(qū)分大小寫
五、修改數(shù)據(jù)庫
顯示創(chuàng)建數(shù)據(jù)庫時的語句
show create database 數(shù)據(jù)庫名;
說明:
- MySQL 建議我們關(guān)鍵字使用大寫,但是不是必須的。
- 數(shù)據(jù)庫名字的反引號``,是為了防止使用的數(shù)據(jù)庫名剛好是關(guān)鍵字
-
/*!40100 default.... */
這個不是注釋,表示當前mysql版本大于4.01版本,就執(zhí)行這句話,如果小于就不執(zhí)行
修改數(shù)據(jù)庫
語法:
ALTER DATABASE db_name [alter_spacification [,alter_spacification]...]
alter_spacification
選項:
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
- 大寫的表示關(guān)鍵字
- [] 是可選項,可以選擇不寫
說明:對數(shù)據(jù)庫的修改主要指的是修改數(shù)據(jù)庫的字符集,校驗規(guī)則
例如,將test2
的字符集gbk
alter database test1 charset=gbk collate gbk_chinese_ci;
注意:現(xiàn)在的數(shù)據(jù)庫不支持修改數(shù)據(jù)庫名字,以前支持
六、數(shù)據(jù)庫的備份和恢復
備份
語法
mysqldump -P3306 -u root -p -B 數(shù)據(jù)庫名 > 數(shù)據(jù)庫備份存儲的文件路徑
注:> 是輸出重定向
例如,將test1
庫備份到文件,需要退出mysql連接
mysqldump -P3306 -uroot -p -B test1 > /home/fy/mysql/test1.sql
vim 打開看一下,該數(shù)據(jù)的有效操作+數(shù)據(jù)全部備份了
還原
語法:
source 備份的文件(路徑)
注:> 是輸出重定向
把test1
刪除,進行測試
進行還原test1
,在連接mysql下操作
source /home/fy/mysql/test1.sql;
查看數(shù)據(jù)庫,數(shù)據(jù)已經(jīng)恢復
注意事項:
如果備份的不是整個數(shù)據(jù)庫,而是其中的一張表
mysqldump -uroot -p 數(shù)據(jù)庫名 表名1 表名2... > 備份的文件(路徑),如:/mytest.sql
同時備份多個數(shù)據(jù)庫
mysqldump -u root -p -B 數(shù)據(jù)庫名1 數(shù)據(jù)庫名2 ... > 數(shù)據(jù)庫存放路徑
如果備份一個數(shù)據(jù)庫時,沒有帶上-B參數(shù), 在恢復數(shù)據(jù)庫時,需要先創(chuàng)建空數(shù)據(jù)庫,然后使用數(shù)據(jù)
庫,再使用source來還原。
七、查看數(shù)據(jù)庫連接情況
語法:
show processlist;
可以告訴我們當前有哪些用戶連接到我們的MySQL,如果查出某個用戶不是你正常登陸的,很有可能你的數(shù)據(jù)庫被人入侵了。以后發(fā)現(xiàn)自己數(shù)據(jù)庫比較慢時,可以用這個指令來查看數(shù)據(jù)庫連接情況
--------------------- END ----------------------文章來源地址http://www.zghlxwxcb.cn/news/detail-555886.html
「 作者 」 楓葉先生
「 更新 」 2023.7.7
「 聲明 」 余之才疏學淺,故所撰文疏漏難免,
或有謬誤或不準確之處,敬請讀者批評指正。
到了這里,關(guān)于【MySQL系列】MySQL庫的學習及基本操作(增刪查改)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!