最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL庫的操作方法超詳細講解(ubuntu系統(tǒng))

 更新時間:2025年10月06日 09:24:38   作者:景風~  
MySQL是一個功能強大的數(shù)據(jù)庫管理系統(tǒng),正確管理和維護MySQL對于確保數(shù)據(jù)庫的穩(wěn)定性和性能至關(guān)重要,這篇文章主要介紹了ubuntu系統(tǒng)下MySQL庫的操作方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

MySQL庫的操作

創(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

說明:

  • 大寫的表示關(guān)鍵字
  • [] 是可選項
  • CHARACTER SET: 指定數(shù)據(jù)庫采用的字符集
  • COLLATE: 指定數(shù)據(jù)庫字符集的校驗規(guī)則

注意: 如果創(chuàng)建數(shù)據(jù)庫時未指明數(shù)據(jù)庫的編碼格式或校驗規(guī)則,則默認使用MySQL配置文件中對應的編碼格式或校驗規(guī)則。

創(chuàng)建數(shù)據(jù)庫案例

采用默認的編碼格式和校驗規(guī)則創(chuàng)建數(shù)據(jù)庫

創(chuàng)建數(shù)據(jù)庫時不指明數(shù)據(jù)庫的編碼格式和校驗規(guī)則即可。如下:

注意: 如果沒有對MySQL的配置文件進行過修改,則默認的編碼格式是utf8,默認的校驗規(guī)則是utf8_general_ci。

指定utf8編碼格式創(chuàng)建數(shù)據(jù)庫

注意: SQL中的charset=utf8,也可以寫成character set=utf8或character set utf8。

指定utf8編碼格式和utf8_general_ci校驗規(guī)則創(chuàng)建數(shù)據(jù)庫

創(chuàng)建數(shù)據(jù)庫時通過charset和collate分別指明數(shù)據(jù)庫的編碼格式和校驗規(guī)則即可。如下:

注意: SQL中的collate utf8_general_ci 也可以寫成。collate=utf8_general_ci

字符集和校驗規(guī)則

查看系統(tǒng)默認字符集以及校驗規(guī)則

查看系統(tǒng)默認字符集以及校驗規(guī)則

通過查看MySQL系統(tǒng)變量variables中的character_set_database,可以得知系統(tǒng)默認的字符集。如下:

注意: 如果是在指定數(shù)據(jù)庫下使用該SQL,則查看的是該數(shù)據(jù)庫對應的字符集。

查看系統(tǒng)默認的字符集校驗規(guī)則

通過查看MySQL系統(tǒng)變量variables中的collation_database,可以得知系統(tǒng)默認的字符集校驗規(guī)則。如下:

查看數(shù)據(jù)庫支持的字符集

使用show charsetSQL可以查看數(shù)據(jù)庫支持的字符集。如下:

說明一下: 字符集主要是控制用什么語言,比如utf8就可以使用中文。

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

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

使用show collationSQL可以查看數(shù)據(jù)庫支持的字符集校驗規(guī)則。如下:

校驗規(guī)則對數(shù)據(jù)庫的影響

字符集編碼格式和字符集校驗規(guī)則的區(qū)別

  • 字符集編碼格式指的是在存儲數(shù)據(jù)時各個字符的底層編碼,用于指定數(shù)據(jù)的存儲格式。
  • 字符集校驗規(guī)則是在字符集內(nèi)用于比較字符的一套規(guī)則,用于對數(shù)據(jù)進行比對。

比如我們存儲數(shù)據(jù)的時候是按照utf8mb4的格式進行存儲的,那么將來在對數(shù)據(jù)做比對時也必須按照utf8mb4的格式進行比對,因為“存數(shù)據(jù)”和“取數(shù)據(jù)”的方式必須保持一致。

注意: 在對數(shù)據(jù)庫當中的數(shù)據(jù)進行增刪查改時,不可避免的需要進行數(shù)據(jù)的比對,因為在對數(shù)據(jù)做增刪查改之前,都需要先通過比對的方式找到目標數(shù)據(jù)。

校驗規(guī)則對數(shù)據(jù)庫的影響

現(xiàn)在我們知道了,為了保證讀取的數(shù)據(jù)和存儲的數(shù)據(jù)是一致的,因此字符集編碼格式和校驗規(guī)則必須是對應的。但實際同一中字符集編碼格式一般會有多種可選擇的校驗規(guī)則,比如utf8編碼格式的校驗規(guī)則有utf8_general_ci、utf8_bin、utf8_unicode_ci等校驗規(guī)則。

使用不同的校驗規(guī)則操作數(shù)據(jù)庫中的數(shù)據(jù)可能會得到不同的結(jié)果,比如utf8mb4_general_ci校驗規(guī)則在比對數(shù)據(jù)時是不區(qū)分大小寫的,而utf8mb4_bin校驗規(guī)則在對比數(shù)據(jù)時則是區(qū)分大小寫的。

我們以兩個庫test1和test2來比對兩種校驗規(guī)則

不區(qū)分大小寫用utf8mb4_ general_ ci

創(chuàng)建一個數(shù)據(jù)庫test1,校驗規(guī)則使用utf8_ general_ ci[不區(qū)分大小寫]如下:

區(qū)分大小寫用utf8mb4_ bin

創(chuàng)建一個數(shù)據(jù)庫,校驗規(guī)則使用utf8mb4_ bin[區(qū)分大小寫]如下:

進行查詢

  • 不區(qū)分大小寫的查詢以及結(jié)果

  • 區(qū)分大小寫的查詢以及結(jié)果

結(jié)果排序

  • 不區(qū)分大小寫排序以及結(jié)果:

  • 區(qū)分大小寫排序以及結(jié)果:

注:A的ASCII碼為65,a的ASCII碼值為97

操縱數(shù)據(jù)庫

查看數(shù)據(jù)庫

使用show databaseSQL可以查看系統(tǒng)中所有的數(shù)據(jù)庫。如下:

顯示創(chuàng)建語句

使用show create database 數(shù)據(jù)庫名SQL可以查看對應數(shù)據(jù)庫的創(chuàng)建語句。如下:

說明一下:

  • MySQL建議SQL中的關(guān)鍵字使用大寫,但不是必須的。
  • 數(shù)據(jù)庫的名字加上反引號,是為了防止使用的數(shù)據(jù)庫名與關(guān)鍵字沖突。
  • 80016指的是 MySQL 版本號:8.0.16。
  • /*!80016 DEFAULT ENCRYPTION='N' */不是注釋,作用是告訴 MySQL 8.0.16+,建表時默認不開啟表級加密;而低版本 MySQL 不支持表級加密,所以直接忽略。

修改數(shù)據(jù)庫

ALTER DATABASE db_name
 [alter_spacification [,alter_spacification]...]
 alter_spacification:
 [DEFAULT] CHARACTER SET charset_name
 [DEFAULT] COLLATE collation_name

說明: 對數(shù)據(jù)庫的修改主要指的是修改數(shù)據(jù)庫的字符集,校驗規(guī)則

比如將 db3 數(shù)據(jù)庫字符集改成 gbk

刪除數(shù)據(jù)庫

刪除數(shù)據(jù)庫的SQL如下:

DROP DATABASE [IF EXISTS] db_name;

刪除數(shù)據(jù)庫后該數(shù)據(jù)庫對應的文件夾就被刪除了。比如:

并且刪除數(shù)據(jù)庫后,該數(shù)據(jù)庫下的所有表也都會被級聯(lián)刪除,因此不要隨意刪除數(shù)據(jù)庫。

備份和恢復

數(shù)據(jù)庫備份

使用如下命令即可對指定數(shù)據(jù)庫(helloworld)進行備份:

sudo mysqldump -u root -S /var/run/mysqld/mysqld.sock helloworld > ~/back/helloworld.sql
  • mysqldump MySQL 官方“邏輯備份”工具,導出表結(jié)構(gòu) + 數(shù)據(jù)為可執(zhí)行的 SQL。
  • -u root指定 MySQL 用戶名為 root。
  • -S /var/run/mysqld/mysqld.sock指定 UNIX Socket 文件連接 MySQL(免密登錄,本機直連,不走 TCP)

1.創(chuàng)建目錄

mkdir -p ~/back

家目錄下就創(chuàng)建了一個back目錄

back的擁有者和所屬組都是root,后面重定向時用戶無法讀寫該目錄所以要修改權(quán)限

sudo chown -R "$USER":"$USER" ~/back
chmod u+rwx ~/back

這兩條命令的作用就是把你家目錄下的 back 文件夾(以及里面的內(nèi)容)改成歸你自己所有、并確保你自己有讀寫執(zhí)行權(quán)限

2.進行備份

sudo mysqldump -u root -S /var/run/mysqld/mysqld.sock helloworld > ~/back/helloworld.sql

打開helloworld.sql文件即可看到,文件中的內(nèi)容實際就是我們在該數(shù)據(jù)庫中執(zhí)行的各種SQL命令,包括創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、插入數(shù)據(jù)等SQL語句。如下:

數(shù)據(jù)庫恢復

為了演示數(shù)據(jù)庫恢復,我們先將剛才創(chuàng)建的數(shù)據(jù)庫刪除。如下:

這時讓MySQL服務器執(zhí)行如下命令即可對數(shù)據(jù)庫進行恢復。如下:

# 1) 建庫(MySQL 8.0 可用 0900 排序規(guī)則;若是 5.7/MariaDB 用 utf8mb4_general_ci)
sudo mysql -S /var/run/mysqld/mysqld.sock -e \
"CREATE DATABASE IF NOT EXISTS helloworld CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;"

# 2) 導入備份(把路徑替換成你的絕對路徑更穩(wěn)妥)
sudo mysql -S /var/run/mysqld/mysqld.sock helloworld < /home/lzg/back/helloworld.sql

同時該數(shù)據(jù)庫下的表,以及表當中的數(shù)據(jù)也都恢復出來了。如下:

當然還有省事的辦法

備份

sudo mysqldump -u root -S /var/run/mysqld/mysqld.sock -B helloworld > ~/back/helloworld.sql 

恢復

sudo mysql -S /var/run/mysqld/mysqld.sock < ~/back/helloworld.sql

查看連接情況

使用show processlistSQL即可查看當前連接MySQL的用戶。比如:

說明一下:

  • Id列:一個標識,可以在MySQL中通過kill id殺死指定id的線程。
  • User列:顯示當前用戶,如果不是root,這個命令就只顯示你權(quán)限范圍內(nèi)的SQL語句。
  • Host列:顯示這個語句是從哪個IP的哪個端口上發(fā)出的,可用來追蹤出問題語句的用戶。
  • db列:當前執(zhí)行的命令是在哪一個數(shù)據(jù)庫上,如果沒有指定數(shù)據(jù)庫,則該值為NULL。
  • Command列:顯示當前連接執(zhí)行的命令,一般就是休眠(Sleep)、查詢(Query)和連接(Connect)。
  • Time列:表示該線程處于當前狀態(tài)的時間,單位是秒。
  • State列:顯示使用當前連接的SQL語句的狀態(tài)。
  • Info列:一般記錄的是線程執(zhí)行的語句,默認只顯示前100個字符,如果要看全部信息,需要使用show full processlist。

show processlist可以告訴我們當前有哪些用戶連接到我們的MySQL,如果查出某個用戶不是你正常登錄的,那么很有可能你的數(shù)據(jù)庫被人入侵了,以后如果發(fā)現(xiàn)自己的數(shù)據(jù)庫比較慢時,可以用這個SQL來查看數(shù)據(jù)庫連接情況。

總結(jié)

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

相關(guān)文章

最新評論

佛学| 深圳市| 富民县| 琼中| 额敏县| 唐山市| 台南县| 麻栗坡县| 西平县| 堆龙德庆县| 新竹市| 大悟县| 报价| 山丹县| 彰武县| 汉沽区| 南汇区| 芮城县| 大同市| 乡城县| 汝南县| 赤城县| 北票市| 萨嘎县| 潢川县| 宜春市| 连山| 清涧县| 晋江市| 连城县| 古田县| 华宁县| 桦甸市| 德格县| 西贡区| 德江县| 紫阳县| 视频| 广丰县| 民县| 大理市|