網(wǎng)站開發(fā)專業(yè)術(shù)語(yǔ)軟文營(yíng)銷的五大注意事項(xiàng)
目錄:
- 前言
- 庫(kù)的操作
- 創(chuàng)建數(shù)據(jù)庫(kù)
- 字符集和校驗(yàn)規(guī)則
- 校驗(yàn)規(guī)則對(duì)數(shù)據(jù)庫(kù)的影響
- 選擇和查看數(shù)據(jù)庫(kù)
- 修改數(shù)據(jù)庫(kù)
- 刪除數(shù)據(jù)庫(kù)
- 備份
- 注意事項(xiàng)
- 查看連接情況
- 總結(jié)
前言
劍指offer:一年又二天 |
---|
庫(kù)的操作
創(chuàng)建、選擇、查看、修改、刪除與備份。
創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
說(shuō)明:
- 大寫的表示關(guān)鍵字
- [] 是可選項(xiàng)
- CHARACTER SET: 指定數(shù)據(jù)庫(kù)采用的字符集
- COLLATE: 指定數(shù)據(jù)庫(kù)字符集的校驗(yàn)規(guī)則
mysql> show databases; --- 查看所有數(shù)據(jù)庫(kù),這些數(shù)據(jù)庫(kù)都是默認(rèn)的,我們不用管也不要?jiǎng)铀鼈?/span>
+---------------------+
| Database |
+---------------------+
| information_schema |
| README_TO_RECOVER_A |
| mysql |
| performance_schema |
| sys |
+---------------------+
5 rows in set (0.00 sec)mysql> create database db1 --- 創(chuàng)建數(shù)據(jù)庫(kù)db1,字符集和校驗(yàn)規(guī)則可以不寫使用默認(rèn)。-> charset=utf8-> collate=utf8_bin;
Query OK, 1 row affected (0.00 sec)mysql> show databases; --- 查看所有數(shù)據(jù)庫(kù)
+---------------------+
| Database |
+---------------------+
| information_schema |
| README_TO_RECOVER_A |
| db1 | ---
| mysql |
| performance_schema |
| sys |
+---------------------+
6 rows in set (0.00 sec)
字符集和校驗(yàn)規(guī)則
- 查看系統(tǒng)默認(rèn)字符集以及校驗(yàn)規(guī)則
show variables like 'character_set_database';
show variables like 'collation_database';
- 查看數(shù)據(jù)庫(kù)支持的字符集
show charset;
字符集主要是控制用什么語(yǔ)言。比如utf8就可以使用中文。
- 查看數(shù)據(jù)庫(kù)支持的字符集校驗(yàn)規(guī)則
show collation;
校驗(yàn)規(guī)則對(duì)數(shù)據(jù)庫(kù)的影響
不區(qū)分大小寫
create database test1 collate utf8_general_ci; --- 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),校驗(yàn)規(guī)則使用utf8_ general_ ci[不區(qū)分大小寫]
區(qū)分大小寫
create database test2 collate utf8_general_ci; --- 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),校驗(yàn)規(guī)則使用utf8_ bin[區(qū)分大小寫]
建表插入數(shù)據(jù)
mysql> create table stu(name char); --- 在數(shù)據(jù)庫(kù)test1中建表stu,插入數(shù)據(jù)(test2同操作)
Query OK, 0 rows affected (0.04 sec)mysql> insert into stu values('a'), ('b'), ('A'), ('B');
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0mysql> select * from stu; --- 插入情況
+------+
| name |
+------+
| a |
| b |
| A |
| B |
+------+
4 rows in set (0.00 sec)
- 查詢對(duì)比
mysql> use test1; --- 選擇數(shù)據(jù)庫(kù)test1
Database changedmysql> select * from stu where name = 'a'; --- 查詢名字為a的學(xué)生
+------+
| name |
+------+
| a |
| A |
+------+
2 rows in set (0.00 sec)
mysql> use test1; --- 選擇數(shù)據(jù)庫(kù)test2
Database changedmysql> select * from stu where name = 'a'; --- 查詢名字為a的學(xué)生
+------+
| name |
+------+
| a |
+------+
1 rows in set (0.00 sec)
- 排序?qū)Ρ?/li>
mysql> use test1; --- 選擇數(shù)據(jù)庫(kù)test1
Database changedmysql> select * from stu order by name; --- 按照名字排序
+------+
| name |
+------+
| a |
| A |
| b |
| B |
+------+
4 rows in set (0.00 sec)
mysql> use test1; --- 選擇數(shù)據(jù)庫(kù)test2
Database changedmysql> select * from stu order by name; --- 按照名字排序
+------+
| name |
+------+
| A |
| B |
| a |
| b |
+------+
4 rows in set (0.00 sec)
選擇和查看數(shù)據(jù)庫(kù)
show databases;
- 查看所有數(shù)據(jù)庫(kù)
select database();
- 查看當(dāng)前正在使用的數(shù)據(jù)庫(kù)
show create database 數(shù)據(jù)庫(kù)名;
- 查看數(shù)據(jù)庫(kù)創(chuàng)建語(yǔ)句
mysql> show create database db1; --- 顯示創(chuàng)建語(yǔ)法
+----------+-------------------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------------------+
| db1 | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+-------------------------------------------------------------------------------+
1 row in set (0.01 sec)mysql> show create database db1 \G --- 更加簡(jiǎn)潔的格式顯示
*************************** 1. row ***************************Database: db1
Create Database: CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */
1 row in set (0.00 sec)
MySQL 建議我們關(guān)鍵字使用大寫,但是不是必須的,在顯示時(shí)服務(wù)器(mysqld)會(huì)將我們的語(yǔ)法進(jìn)行規(guī)范處理。
數(shù)據(jù)庫(kù)名字的反引號(hào)``,是為了防止使用的數(shù)據(jù)庫(kù)名剛好是關(guān)鍵字。
/*!40100 default… */ 這個(gè)不是注釋,表示當(dāng)前mysql版本大于4.01版本,就執(zhí)行這句話。
mysql> select database(); --- 查看現(xiàn)在所操作的數(shù)據(jù)庫(kù)
+------------+
| database() |
+------------+
| NULL | --- 還沒有選擇數(shù)據(jù)庫(kù)
+------------+
1 row in set (0.00 sec)mysql> use db1; --- 選擇數(shù)據(jù)庫(kù)db1
Database changedmysql> select database();
+------------+
| database() |
+------------+
| db1 | --- 現(xiàn)在在操作數(shù)據(jù)庫(kù)db1
+------------+
1 row in set (0.00 sec)
修改數(shù)據(jù)庫(kù)
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
- 對(duì)數(shù)據(jù)庫(kù)的修改主要指的是修改數(shù)據(jù)庫(kù)的字符集,校驗(yàn)規(guī)則
mysql> show create database db1 \G --- 字符集為 utf8 ,校驗(yàn)規(guī)則為 utf8_bin
*************************** 1. row ***************************Database: db1
Create Database: CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */
1 row in set (0.00 sec)mysql> alter database db1 charset=gbk; --- 修改字符集為gbk
Query OK, 1 row affected (0.00 sec)mysql> show create database db1 \G --- 修改是全部覆蓋式寫入,我們只指明字符集,沒有指明校驗(yàn)規(guī)則,就改為默認(rèn)
*************************** 1. row ***************************Database: db1
Create Database: CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET gbk */
1 row in set (0.00 sec)
mysql并沒有提供自帶的修改數(shù)據(jù)庫(kù)名的操作,一種常見的做法是創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),然后將舊數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)和數(shù)據(jù)逐一導(dǎo)入到新數(shù)據(jù)庫(kù)中,最后刪除舊數(shù)據(jù)庫(kù)。這樣可以達(dá)到“修改”數(shù)據(jù)庫(kù)名的效果。
刪除數(shù)據(jù)庫(kù)
DROP DATABASE [IF EXISTS] 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ù)表全部被刪
(慎用)
mysql> create database test; --- 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)test
Query OK, 1 row affected (0.00 sec)mysql> show databases like 'test'; --- 查看數(shù)據(jù)庫(kù),like:在所有結(jié)果中匹配名為test的數(shù)據(jù)庫(kù)(用一下,后面會(huì)講)
+-----------------+
| Database (test) |
+-----------------+
| test | --- 找到一個(gè)
+-----------------+
1 row in set (0.00 sec)mysql> drop database test; --- 刪除數(shù)據(jù)庫(kù) test
Query OK, 0 rows affected (0.00 sec)mysql> show databases like 'test'; --- 再找,沒找到
Empty set (0.00 sec)
備份
- 備份
語(yǔ)法:
[root@VM-4-11-centos ~]# mysqldump -P3306 -u root -p 密碼 -B 數(shù)據(jù)庫(kù)名 > 數(shù)據(jù)庫(kù)備份存儲(chǔ)的文件路徑
-P3306:端口號(hào)
[root@VM-4-11-centos ~]# mysqldump -P3306 -u root -p -B db1 > ./db1_code.sql
-- 提示輸入mysql中root賬號(hào)的密碼
這時(shí),可以打開看看 db1_code.sql 文件里的內(nèi)容,其實(shí)把我們整個(gè)創(chuàng)建數(shù)據(jù)庫(kù),建表,導(dǎo)入數(shù)據(jù)的語(yǔ)句都裝載這個(gè)文件中。
- 還原
mysql> source D:/mysql-5.7.22/mytest.sql;
注意事項(xiàng)
- 如果備份的不是整個(gè)數(shù)據(jù)庫(kù),而是其中的一張表,怎么做?
[root@VM-4-11-centos ~]# mysqldump -u root -p 數(shù)據(jù)庫(kù)名 表名1 表名2 > D:/mytest.sql
- 同時(shí)備份多個(gè)數(shù)據(jù)庫(kù)
[root@VM-4-11-centos ~]# mysqldump -u root -p -B 數(shù)據(jù)庫(kù)名1 數(shù)據(jù)庫(kù)名2 ... > 數(shù)據(jù)庫(kù)存放路徑
如果備份一個(gè)數(shù)據(jù)庫(kù)時(shí),沒有帶上-B參數(shù), 在恢復(fù)數(shù)據(jù)庫(kù)時(shí),需要先創(chuàng)建空數(shù)據(jù)庫(kù),然后使用數(shù)據(jù)庫(kù),再使用source來(lái)還原。
查看連接情況
語(yǔ)法
show processlist;
mysql> show processlist;
+----+--------+-----------+-------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+--------+-----------+-------+---------+------+----------+------------------+
| 3 | root | localhost | db1 | Sleep | 3710 | | NULL |
| 5 | kz1111 | localhost | db1_1 | Query | 0 | starting | show processlist |
+----+--------+-----------+-------+---------+------+----------+------------------+
2 rows in set (0.00 sec)
可以告訴我們當(dāng)前有哪些用戶連接到我們的MySQL,如果查出某個(gè)用戶不是你正常登陸的,很有可能你的數(shù)據(jù)庫(kù)被人入侵了??梢杂眠@個(gè)指令來(lái)查看數(shù)據(jù)庫(kù)連接情況。
總結(jié)
數(shù)據(jù)庫(kù)不支持重命名,如果真的需要改名字,就把數(shù)據(jù)庫(kù)進(jìn)行備份,然后創(chuàng)建新庫(kù)并導(dǎo)入即可。(一般用不到)