亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL操作數(shù)據(jù)庫(kù)實(shí)戰(zhàn)指南

 更新時(shí)間:2023年07月22日 10:00:25   作者:每天都要進(jìn)步呀~  
這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)操作庫(kù)的相關(guān)資料,MySQL數(shù)據(jù)庫(kù)是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),所采用的SQL語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)最常用的標(biāo)準(zhǔn)會(huì)語(yǔ)言,需要的朋友可以參考下

一.創(chuàng)建數(shù)據(jù)庫(kù)

1. 創(chuàng)建數(shù)據(jù)庫(kù)的方式

create database database1;

image-20230716160242203

帶選項(xiàng)的創(chuàng)建

create database if not exists database1;

如果不存在(if not exists)才創(chuàng)建數(shù)據(jù)庫(kù)database1。

image-20230716162145611

2. 創(chuàng)建數(shù)據(jù)庫(kù)時(shí)的編碼問(wèn)題

與數(shù)據(jù)打交道的數(shù)據(jù)庫(kù)的創(chuàng)建一定與編碼有關(guān)系。創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候,有兩個(gè)編碼集:

  • 數(shù)據(jù)庫(kù)編碼集:數(shù)據(jù)庫(kù)未來(lái)存儲(chǔ)數(shù)據(jù)的編碼集。
  • 數(shù)據(jù)庫(kù)校驗(yàn)集:支持?jǐn)?shù)據(jù)庫(kù),進(jìn)行字段比較使用的編碼,本質(zhì)也是一種讀取數(shù)據(jù)庫(kù)中數(shù)據(jù)的采用的編碼格式。

因此,數(shù)據(jù)庫(kù)無(wú)論對(duì)數(shù)據(jù)做任何操作,都需要保證數(shù)據(jù)庫(kù)的操作和編碼必須是編碼一致的。

查看系統(tǒng)默認(rèn)支持的字符集和校驗(yàn)集:

show variables like 'character_set_database';

image-20230716163250563

show variables like 'collation_database';

image-20230716163406782

查看connection、database、server的校驗(yàn)集:

show variables like 'collation_%';

image-20230716163700707

大部分情況下,數(shù)據(jù)庫(kù)的連接,數(shù)據(jù)庫(kù)本身、數(shù)據(jù)庫(kù)的服務(wù)器都是utf8的。在最開(kāi)始的my.cnf配置中,我們把默認(rèn)字符集全部配成了utf8進(jìn)行統(tǒng)一,如果不配置,可能就會(huì)因?yàn)榫幋a的不同導(dǎo)致無(wú)法正確解析數(shù)據(jù)。

查看數(shù)據(jù)庫(kù)全部的字符集

show charset;

image-20230716163933162

查看對(duì)照表,數(shù)據(jù)庫(kù)選擇的就是其中的utf8的字符集。

查看數(shù)據(jù)庫(kù)支持的字符集校驗(yàn)規(guī)則

show collation;

3. 指定編碼創(chuàng)建數(shù)據(jù)庫(kù)

當(dāng)我們創(chuàng)建數(shù)據(jù)庫(kù)沒(méi)有指定字符集和校驗(yàn)規(guī)則時(shí),系統(tǒng)使用默認(rèn)字符集:utf8,校驗(yàn)規(guī)則是:utf8_general_ci。

兩種方式:

create database d2 charset=utf8; #指定編碼格式utf8

image-20230716200505946

create database d3 set utf8; #指定編碼格式utf8

image-20230716200815758

編碼集字符集同時(shí)設(shè)置:

create database d4 charset=utf8 collate utf8_general_ci; #既指明編碼,又指明校驗(yàn)規(guī)則

根據(jù)字符集表以及校驗(yàn)表創(chuàng)建不同編碼和校驗(yàn)規(guī)則的數(shù)據(jù)庫(kù)

image-20230716201340291

4. 驗(yàn)證校驗(yàn)規(guī)則對(duì)數(shù)據(jù)庫(kù)的影響

不區(qū)分大小寫(xiě)

創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),校驗(yàn)規(guī)則使用utf8_ general_ ci[不區(qū)分大小寫(xiě)]

create database test1 collate utf8_general_ci;
use test1;
create table person(name varchar(20));

image-20230717204517443

由于是不區(qū)分大小寫(xiě)的,所以在指定查’a’的時(shí)候,utf8_ general_ ci校驗(yàn)規(guī)則會(huì)將’A’和’a’一并查出:

image-20230717204907443

區(qū)分大小寫(xiě)

創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),校驗(yàn)規(guī)則使用utf8_ bin[區(qū)分大小寫(xiě)]

create database test2 collate utf8_bin;
use test2;
create table if not exists person(name varchar(20));

image-20230717205550620

因此,校驗(yàn)規(guī)則的不同,我們查出的結(jié)果也有可能不同。

校驗(yàn)規(guī)則的不同,排序的順序也會(huì)不同:(從小到大)

image-20230717205936435

故忽略大小寫(xiě)時(shí),大小寫(xiě)的排序不做區(qū)分。

二.數(shù)據(jù)庫(kù)與文件系統(tǒng)的關(guān)系

創(chuàng)建數(shù)據(jù)庫(kù):create database db_name; 本質(zhì)就是在/var/lib/mysql創(chuàng)建一個(gè)目錄。

刪除數(shù)據(jù)庫(kù):drop database db_name; 本質(zhì)就是在/var/lib/mysql刪除目錄。

因此,我們可以在/var/lib/mysql上創(chuàng)建目錄,那么數(shù)據(jù)庫(kù)層面也一定會(huì)產(chǎn)生相應(yīng)的數(shù)據(jù)庫(kù)。

image-20230716161418944

同理,在mysql目錄中刪掉一個(gè)目錄,數(shù)據(jù)庫(kù)層面的對(duì)應(yīng)數(shù)據(jù)庫(kù)也會(huì)被刪掉。

當(dāng)然,絕對(duì)不應(yīng)該在文件系統(tǒng)層面創(chuàng)建目錄從而生成對(duì)應(yīng)數(shù)據(jù)庫(kù),這樣是不合理的。因此mysql8.0就禁掉了這個(gè)功能,而mysql5.6支持。

三.操縱數(shù)據(jù)庫(kù)

1. 查看數(shù)據(jù)庫(kù)

show databases;

image-20230716155403820

如果想要確定是在哪個(gè)數(shù)據(jù)庫(kù)里,可以執(zhí)行:

select database();

image-20230719130308084

2. 刪除數(shù)據(jù)庫(kù)

drop database db_name;

執(zhí)行刪除之后的結(jié)果:

  • 數(shù)據(jù)庫(kù)內(nèi)部看不到對(duì)應(yīng)的數(shù)據(jù)庫(kù)
  • 對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件夾被刪除,級(jí)聯(lián)刪除,里面的數(shù)據(jù)表全部被刪

注意:不要隨意刪除數(shù)據(jù)庫(kù)

3. 修改數(shù)據(jù)庫(kù)

對(duì)數(shù)據(jù)庫(kù)的修改主要指的是修改數(shù)據(jù)庫(kù)的字符集,校驗(yàn)規(guī)則

alter database test2 charset=gbk collate gbk_Chinese_ci;

image-20230719130801155

四.數(shù)據(jù)庫(kù)的備份和恢復(fù)

1.數(shù)據(jù)庫(kù)的備份

 mysqldump -P3306 -u root -p 密碼 -B 數(shù)據(jù)庫(kù)名 > 數(shù)據(jù)庫(kù)備份存儲(chǔ)的文件路徑

-B:代表選擇數(shù)據(jù)庫(kù)的選項(xiàng)。

image-20230719135036092

test1.sql中存儲(chǔ)的不僅僅是test1數(shù)據(jù)庫(kù)中的數(shù)據(jù),還有歷史上創(chuàng)建過(guò)的命令:

image-20230719135143891

至此就完成了對(duì)數(shù)據(jù)庫(kù)test1的備份操作。

2.數(shù)據(jù)庫(kù)的恢復(fù)

現(xiàn)在,將test1數(shù)據(jù)庫(kù)刪掉:

image-20230719135825570

這樣,在/var/lib/mysql的路徑下,一定也不存在test1目錄。

通過(guò)pwd命令,我們知道test1.sql所在的路徑:

然后,通過(guò)以下恢復(fù)命令:

mysql> source /root/MySQL/test1.sql;

image-20230719140542138

此時(shí),就可以查看到對(duì)應(yīng)test1的數(shù)據(jù)庫(kù)及其內(nèi)容:

image-20230719141029717

注意事項(xiàng)

如果備份的不是整個(gè)數(shù)據(jù)庫(kù),而是其中的一張表,怎么做?

mysqldump -u root -p 數(shù)據(jù)庫(kù)名 表名1 表名2 > 路徑/mytest.sql

同時(shí)備份多個(gè)數(shù)據(jù)庫(kù)

mysqldump -u root -p -B 數(shù)據(jù)庫(kù)名1 數(shù)據(jù)庫(kù)名2 ... > 數(shù)據(jù)庫(kù)存放路徑

如果備份一個(gè)數(shù)據(jù)庫(kù)時(shí),沒(méi)有帶上-B參數(shù), 在恢復(fù)數(shù)據(jù)庫(kù)時(shí),需要先創(chuàng)建空數(shù)據(jù)庫(kù),然后使用數(shù)據(jù)庫(kù),再使用source來(lái)還原。

五.查看連接情況

如果在使用數(shù)據(jù)庫(kù)時(shí),出現(xiàn)卡頓,那么有可能訪問(wèn)數(shù)據(jù)庫(kù)的不止你一個(gè),所以,通過(guò)如下命令,我們可以看到User的數(shù)量及名稱Id。

show processlist;

image-20230719143408395

這可以告訴我們當(dāng)前有哪些用戶連接到我們的MySQL,如果查出某個(gè)用戶不是你正常登陸的,很有可能你的數(shù)據(jù)庫(kù)被人入侵了。

總結(jié)

到此這篇關(guān)于MySQL操作庫(kù)的文章就介紹到這了,更多相關(guān)MySQL操作庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論