2. 庫的操作
2.1 創建數據庫
語法:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
說明:
- 大寫的表示關鍵字
- [] 是可選項
- CHARACTER SET: 指定數據庫採用的字符集
- COLLATE: 指定數據庫字符集的校驗規則
2.2 創建數據庫案例
- 創建名爲 db1 的數據庫
create database db1;
說明:當我們創建數據庫沒有指定字符集和校驗規則時,系統使用默認字符集:utf8,校驗規則是:utf8_ general_ ci
- 創建一個使用utf8字符集的 db2 數據庫
create database db2 charset=utf8;
- 創建一個使用utf字符集,並帶校對規則的 db3 數據庫。
create database db3 charset=utf8 collate utf8_general_ci;
2.3 字符集和校驗規則
2.3.1 查看系統默認字符集以及校驗規則
show variables like 'character_set_database';
show variables like 'collation_database';
2.3.2 查看數據庫支持的字符集
show charset;
字符集主要是控制用什麼語言。比如utf8就可以使用中文。
2.3.3 查看數據庫支持的字符集校驗規則
show collation;
2.3.4 校驗規則對數據庫的影響
不區分大小寫
創建一個數據庫,校驗規則使用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');
- 區分大小寫
創建一個數據庫,校驗規則使用utf8_ bin[區分大小寫]
create database test2 collate utf8_bin;
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');
- 進行查詢
不區分大小寫的查詢以及結果
mysql> use test1;
mysql> select * from person where name='a';
+------+
| name |
+------+
| a |
| A |
+------+
2 rows in set (0.01 sec)
區分大小寫的查詢以及結果
mysql> use test2;
mysql> select * from person where name='a';
+------+
| name |
+------+
| a |
+------ +
2 rows in set (0.01 sec)
- 結果排序 不區分大小寫排序以及結果:
mysql> use test1;
mysql> select * from person order by name;
+------+
| name |
+------+
| a |
| A |
| b |
| B |
+------+
區分大小寫排序以及結果:
mysql> use test2;
mysql> select * from person order by name;
+------ +
| name |
+------ +
| A |
| B |
| a |
| b |
+------ +
2.4 操縱數據庫
2.4.1 查看數據庫
show databases;
2.4.2 顯示創建語句
show create database 數據庫名;
示例:
mysql> show create database mytest;
+---------- +---------------------------------------------------------------- +
| Database | Create Database |
+---------- +---------------------------------------------------------------- +
| mysql | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+---------- +---------------------------------------------------------------- +
說明:
-
MySQL 建議我們關鍵字使用大寫,但是不是必須的。
-
數據庫名字的反引號``,是爲了防止使用的數據庫名剛好是關鍵字
-
/*!40100 default… */ 這個不是註釋,表示當前mysql版本大於4.01版本,就執行這句話
2.4.2 修改數據庫
語法:
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
說明:
- 對數據庫的修改主要指的是修改數據庫的字符集,校驗規則實例: 將 mytest 數據庫字符集改成 gbk
mysql> alter database mytest charset=gbk;
Query OK, 1 row affected (0.00 sec)
mysql> show create database mytest;
+---------- +---------------------------------------------------------------- +
| Database | Create Database |
+---------- +---------------------------------------------------------------- +
| mytest | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET gbk */ |
+---------- +---------------------------------------------------------------- +
2.4.4 數據庫刪除
DROP DATABASE [IF EXISTS] db_ name;
執行刪除之後的結果:
-
數據庫內部看不到對應的數據庫
-
對應的數據庫文件夾被刪除,級聯刪除,裏面的數據表全部被刪
注意:不要隨意刪除數據庫
2.4.5 備份和恢復
2.4.5.1 備份
語法:
# mysqldump -P3306 -u root -p 密碼 -B 數據庫名 > 數據庫備份存儲的文件路徑
示例:將mytest庫備份到文件(退出連接)
mysqldump -P3306 -u root -p123456 -B mytest > ./mytest.sql
這時,可以打開看看 mytest.sql 文件裏的內容,其實把我們整個創建數據庫,建表,導入數據的語句都裝載這個文件中。
2.4.5.2 還原
mysql> source D:/mysql-5.7.22/mytest.sql;
2.4.5.3 注意事項
如果備份的不是整個數據庫,而是其中的一張表,怎麼做?
# mysqldump -u root -p 數據庫名 表名1 表名2 > ./mytest.sql
同時備份多個數據庫
# mysqldump -u root -p -B 數據庫名1 數據庫名2 ... > 數據庫存放路徑
如果備份一個數據庫時,沒有帶上-B參數, 在恢復數據庫時,需要先創建空數據庫,然後使用數據庫,再使
用source來還原。
2.4.6 查看連接情況
語法:
show processlist
示例:
mysql> show processlist;
+ ---- + ------+----------- +------ +--------- + ------ + -------+------------------ +
| Id | User | Host | db | Command | Time | State | Info |
+ ---- + ------+----------- +------ +--------- + ------ + -------+------------------ +
| 2 | root | localhost | test | Sleep | 1386 | | NULL |
| 3 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+ ---- + ------+----------- +------ +--------- + ------ + -------+------------------ +
可以告訴我們當前有哪些用戶連接到我們的MySQL,如果查出某個用戶不是你正常登陸的,很有可能你的數據庫被人入侵了。以後大家發現自己數據庫比較慢時,可以用這個指令來查看數據庫連接情況。