mysql---庫的操作(二)

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 創建數據庫案例

  1. 創建名爲 db1 的數據庫
 create database db1;

說明:當我們創建數據庫沒有指定字符集和校驗規則時,系統使用默認字符集:utf8,校驗規則是:utf8_ general_ ci

  1. 創建一個使用utf8字符集的 db2 數據庫
create database db2 charset=utf8;
  1. 創建一個使用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');
  1. 區分大小寫
    創建一個數據庫,校驗規則使用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');
  1. 進行查詢

不區分大小寫的查詢以及結果

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)
  1. 結果排序 不區分大小寫排序以及結果:
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,如果查出某個用戶不是你正常登陸的,很有可能你的數據庫被人入侵了。以後大家發現自己數據庫比較慢時,可以用這個指令來查看數據庫連接情況。

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