Linux下的MySQL--(2)庫的操作

1.創建數據庫

標準語法

CREATE DATABASE [IF NOT EXISTS] db_name [create _specification] 

create _specification:
[DEFAULT] CHARACTER SET=charset_name
[DEFAULT] COLLATE collation_name

說明

  • 大寫的表示關鍵字,關鍵字可大寫可小寫。
  • [ ]表示可選項,裏面的內容可寫可不寫。
  • CHARACTER SET :指定數據庫採用的字符集。
  • COLLATE:指定數據庫字符集的校驗規則。

使用案例

  • 創建一個數據庫
create database db1;

當創建數據庫沒有指定字符集和校驗規則時,系統使用默認字符集:utf8,默認校驗規則utf8_general_ci

  • 創建一個utf8字符集,並帶校驗規則的db2數據庫
create database db2 charset=utf8 collate utf8_general_ci;

2.字符集和校驗規則

2.1 字符集和校驗規則是什麼?
字符集:
字符的二進制編碼方式
二進制編碼到一套字符的映射
二進制->編碼->字
UTF-8:不一定是3字節,前面是0-1字節,10-2字節,110-3字節。在中文裏,全設置爲3字節,即在數據庫裏一個UTF-8佔了3字節。
說白了字符集可以控制是用什麼語言,utf8,就可以使用中文。

校驗規則:
是在字符集內用於比較字符的一套規則,即字符集的排序規則。
不區分的大小寫:utf8_general_ci
區分大小寫:utf8_bin

MySQL可以使用對種字符集和檢驗規則來組織字符。

2.2 查看系統默認字符集以及校驗規則

show variables like 'character_set_database';
show variables like 'collation_dadatbse';

這裏爲了方面,接下來我都以我的helloworld庫爲例,查找結果如下:
在這裏插入圖片描述
在這裏插入圖片描述
2.3 查看數據庫支持的字符集

show charset;

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
說明:圈出來的兩個字符集:BIG5,這個是漢字編碼的繁體字符集。還有一個GB是簡體的字符集。
2.4 查看數據庫支持的校驗規則

show collation;

這裏就不一一截圖了,我們可以找到utf8_general_ci規則:
在這裏插入圖片描述
2.5 校驗規則對數據庫的影響

  • utf8_general_ci:不區分大小寫
    創建一個數據庫test1,校驗規則使用utf8_general_ci,然後往裏面插入一些大寫小寫字母。操作如下:
create database test1 collate utf8_general_ci;
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');

插入後結果如下:
在這裏插入圖片描述

  • 區分大小寫:uft8_bin
    創建一個數據庫test2,校驗規則使用utf8_bin,插入上述同樣的字母。
create database test2
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');

插入後結果如下:
在這裏插入圖片描述

  • 對於兩個不同校驗規則數據庫的查詢結果
    對於test1:
    在這裏插入圖片描述
    對於test2:
    在這裏插入圖片描述

3.操作數據庫

3.1 查看數據庫

show databases;

不管你此時身在那個庫裏,都可以直接使用這條語句查看所有的庫。
在這裏插入圖片描述
3.2 顯示創建語句

show create database +數據庫名;

這個語句可以使你查看到你原來創建這個庫的方式(數據庫名與字符集)。那麼我就來展示一下剛剛創建的test1庫的創建過程:
在這裏插入圖片描述
說明

  • 數據庫名的反引號’ ',是爲了數據庫的名字剛與關鍵字相同。
  • /*40100 DEFAULT… */ 表示如果當前mysql版本大於4.01版本,就執行這句話。不是註釋功能。

3.3 修改數據庫
對數據庫的修改主要指的是修改數據庫的字符集和校驗規則。
標準語法:

alter database db_name [alter_spacification];

alter_spacification:
[DEFAULT] CHARACTER SET=charset_name
[DEFAULT] COLLATE collation_name

使用案例:

  • 將test1數據庫的字符集改成gbk
alter database test1 charset=gbk;

我們可以很明顯地看到,此時test1的字符集已經變成了gbk。
在這裏插入圖片描述

  • 將test1的字符校驗規則改成區分大小寫的字符集:utf8_bin
alter database test1 collate utf8_bin;

結果也顯而見之。
在這裏插入圖片描述

  • 一些探索

那麼我想回過頭來看看test1庫修改校驗規則後,之前創建的表person裏面的select結果會不會不一樣呢?我們來測試一下。
在這裏插入圖片描述
結果竟然是沒有,所以person表所使用的校驗規則並沒有改變。那麼試試創建一個新表看看它的校驗規則是怎樣?
在這裏我創建了一張新表person1,並插入和person相同的四組元素。
在這裏插入圖片描述
顯而易見,在test1修改爲區分大小寫的校驗規則後,新創建的person1表纔開始使用這個新的校驗規則。
結論:當修改數據庫的校驗規則時,對之前已經建立的表沒有影響,只對後面重新建立的表纔有影響。

3.3 刪除數據庫

drop database[IF_EXITS]db_name;

刪除結果:

  1. 數據庫內看不到對應的數據庫。
  2. 對應的數據庫文件、級聯、裏面的數據都將全部刪除。

所以不要隨意刪庫跑路:)

3.4 備份和恢復

備份(前提是退出MariDB連接)

mysqldump -p3306 -u root -p +密碼 -B +數據庫名稱 > 數據庫備份存儲的文件路徑//-p3306可省略

實例:將test1庫備份到文件

mysqldump -u root -p******* -B test1 > ./mytest1.sql

我們可以看到在目錄下已經生成了備份的mytest.sql文件,可以使用cat 查看內容(包含了整個創建數據庫,建表,導入數據的所有語句)。
在這裏插入圖片描述
還原

mysql> source mytest1.sql;

3.5 查看連接情況

show processlist;

這個語句的作用是可以告訴我當前有哪些用戶連接到了我的MySQL,如果有不認識的用戶,那麼我的數據庫就有可能被入侵了。當數據庫運行比較慢時,可以試試用用這招。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章