1. 程式人生 > 實用技巧 >18.mysql客戶端工具

18.mysql客戶端工具

注意,這裡所說的客戶端工具就是指我們在沒有登入到資料庫之前我們可以執行的命令

1.1 mysql

該mysql不是指mysql服務,而是指mysql的客戶端工具。

語法 :

mysql [options] [database]

1.1.1 連線選項

引數 : 
    -u, --user=name         指定使用者名稱
    -p, --password[=name]   指定密碼
    -h, --host=name         指定伺服器IP或域名
    -P, --port=#            指定連線埠
​
示例 :
    mysql -
h 127.0.0.1 -P 3306 -u root -p --回車之後還需要輸入密碼 mysql -h127.0.0.1 -P3306 -uroot -p123456   --回車之後直接登入進去(注意書寫的時候-u和登入使用者名稱之間沒有空格,-p和密碼之間沒有空格)

   mysql -uroot -p123456              --登入本地資料庫伺服器IP和埠可以省略
    mysql -uroot -p123456 db_01          --登入mysql並且直接使用db_01資料庫

1.1.2 執行選項

-e, --execute=name      執行SQL語句並退出

此選項可以在Mysql客戶端執行SQL語句,而不用連線到MySQL資料庫再執行,對於一些批處理指令碼,這種方式尤其方便。

示例:
mysql -uroot -padmin123 demo_01 -e "select * from city";

1.2 mysqladmin

mysqladmin 是一個執行管理操作的客戶端程式。可以用它來檢查伺服器的配置和當前狀態、建立並刪除資料庫等。

可以通過 : mysqladmin --help 指令檢視幫助文件

示例 :
    mysqladmin -uroot -padmin123 create 'test01';  --建立資料庫
mysqladmin -uroot -padmin123 drop 'test01'; --刪除資料庫 mysqladmin -uroot -padmin123 version; --檢視mysql版本

1.3 mysqlbinlog

由於伺服器生成的二進位制日誌檔案以二進位制格式儲存,所以如果想要檢查這些文字的文字格式,就會使用到mysqlbinlog 日誌管理工具。

語法 :

mysqlbinlog [options]  log-files1 log-files2 ...

選項:

    -d, --database=name : 指定資料庫名稱,只列出指定的資料庫相關操作。
    
    -o, --offset=# : 忽略掉日誌中的前n行命令。
    
    -r,--result-file=name : 將輸出的文字格式日誌輸出到指定檔案。
    
    -s, --short-form : 顯示簡單格式, 省略掉一些資訊。
    
    --start-datatime=date1  --stop-datetime=date2 : 指定日期間隔內的所有日誌。
    
    --start-position=pos1 --stop-position=pos2 : 指定位置間隔內的所有日誌。

1.4 mysqldump

mysqldump 客戶端工具用來備份資料庫或在不同資料庫之間進行資料遷移。備份內容包含建立表,及插入表的SQL語句。

語法 :

mysqldump [options] db_name [tables]
​
mysqldump [options] --database/-B db1 [db2 db3...]
​
mysqldump [options] --all-databases/-A

1.4.1 連線選項

引數 : 
    -u, --user=name         指定使用者名稱
    -p, --password[=name]   指定密碼
    -h, --host=name         指定伺服器IP或域名
    -P, --port=#            指定連線埠

1.4.2 輸出內容選項

引數:
    --add-drop-database     在每個資料庫建立語句前加上 Drop database 語句
    --add-drop-table        在每個表建立語句前加上 Drop table 語句 , 預設開啟 ; 不開啟 (--skip-add-drop-table)
    
    -n, --no-create-db      不包含資料庫的建立語句
    -t, --no-create-info    不包含資料表的建立語句
    -d --no-data            不包含資料
    
     -T, --tab=name         自動生成兩個檔案:一個.sql檔案,建立表結構的語句;一個.txt檔案,資料檔案,相當於select into outfile  

示例 :

1.匯出指定資料庫下指定表(包含建立語句和插入語句)

mysqldump -uroot -padmin123 demo_01 city > /tmp/city.sql;

      1 -- MySQL dump 10.13  Distrib 5.6.22, for Linux (i686)
      2 --
      3 -- Host: localhost    Database: demo_01
      4 -- ------------------------------------------------------
      5 -- Server version       5.6.22
      6
      7 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
      8 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
      9 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
     10 /*!40101 SET NAMES utf8 */;
     11 /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
     12 /*!40103 SET TIME_ZONE='+00:00' */;
     13 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
     14 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
     15 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
     16 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
     17
     18 --
     19 -- Table structure for table `city`
     20 --
     21
     22 DROP TABLE IF EXISTS `city`;
     23 /*!40101 SET @saved_cs_client     = @@character_set_client */;
     24 /*!40101 SET character_set_client = utf8 */;
     25 CREATE TABLE `city` (
     26   `city_id` int(11) NOT NULL AUTO_INCREMENT,
     27   `city_name` varchar(50) NOT NULL,
     28   `country_id` int(11) NOT NULL,
     29   PRIMARY KEY (`city_id`),
     30   UNIQUE KEY `idx_city_name` (`city_name`)
     31 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
     32 /*!40101 SET character_set_client = @saved_cs_client */;
     33
     34 --
     35 -- Dumping data for table `city`
     36 --
     37
     38 LOCK TABLES `city` WRITE;
     39 /*!40000 ALTER TABLE `city` DISABLE KEYS */;
     40 INSERT INTO `city` VALUES (1,'西安市',1),(2,'NewYork',2),(3,'北京',1),(4,'上海',1);
     41 /*!40000 ALTER TABLE `city` ENABLE KEYS */;
     42 UNLOCK TABLES;
     43 /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
     44
     45 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
     46 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
     47 /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
     48 /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
     49 /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
     50 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
     51 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
     52
     53 -- Dump completed on 2020-07-31 11:31:35
city.sql

2.匯出指定資料庫下所有表(包含建立語句和插入語句)

 mysqldump -uroot -padmin123 demo_01  >/tmp/demo01.sql;
-- MySQL dump 10.13  Distrib 5.6.22, for Linux (i686)
--
-- Host: localhost    Database: demo_01
-- ------------------------------------------------------
-- Server version       5.6.22

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `city`
--

DROP TABLE IF EXISTS `city`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `city` (
  `city_id` int(11) NOT NULL AUTO_INCREMENT,
  `city_name` varchar(50) NOT NULL,
  `country_id` int(11) NOT NULL,
  PRIMARY KEY (`city_id`),
  UNIQUE KEY `idx_city_name` (`city_name`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `city`
--

LOCK TABLES `city` WRITE;
/*!40000 ALTER TABLE `city` DISABLE KEYS */;
INSERT INTO `city` VALUES (1,'西安市',1),(2,'NewYork',2),(3,'北京',1),(4,'上海',1);
/*!40000 ALTER TABLE `city` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `country`
--

DROP TABLE IF EXISTS `country`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `country` (
  `country_id` int(11) NOT NULL AUTO_INCREMENT,
  `country_name` varchar(100) NOT NULL,
  PRIMARY KEY (`country_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `country`
--

LOCK TABLES `country` WRITE;
/*!40000 ALTER TABLE `country` DISABLE KEYS */;
INSERT INTO `country` VALUES (1,'China'),(2,'America'),(3,'Japan'),(4,'UK');
/*!40000 ALTER TABLE `country` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `emp`
--

DROP TABLE IF EXISTS `emp`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL COMMENT '姓名',
  `age` int(11) DEFAULT NULL COMMENT '年齡',
  `salary` int(11) DEFAULT NULL COMMENT '薪水',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `emp`
--

LOCK TABLES `emp` WRITE;
/*!40000 ALTER TABLE `emp` DISABLE KEYS */;
INSERT INTO `emp` VALUES (1,'金毛獅王',55,3800),(2,'白眉鷹王',60,4000),(3,'青翼蝠王',39,2800),(4,'紫衫龍王',42,1800),(6,'光明右使',33,3200);
/*!40000 ALTER TABLE `emp` ENABLE KEYS */;
UNLOCK TABLES;
/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client  = utf8 */ ;
/*!50003 SET character_set_results = utf8 */ ;
/*!50003 SET collation_connection  = utf8_general_ci */ ;
/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 trigger emp_insert_trigger
after insert
on emp
for each row
begin
insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values
(null,'insert',now(),new.id,concat('插入資料:(id:',new.id,';name:',new.name,';age:',new.age,';salary:',new.salary,')'));

end */;;
DELIMITER ;
/*!50003 SET sql_mode              = @saved_sql_mode */ ;
/*!50003 SET character_set_client  = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection  = @saved_col_connection */ ;
/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client  = utf8 */ ;
/*!50003 SET character_set_results = utf8 */ ;
/*!50003 SET collation_connection  = utf8_general_ci */ ;
/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 trigger emp_update_trigger
after update
on emp
for each row
begin
insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values
(null,'insert',now(),new.id,concat('更新前資料:(id:',old.id,';name:',old.name,';age:',old.age,';salary:',old.salary,')',

'更新後資料:(id:',new.id,';name:',new.name,';age:',new.age,';salary:',new.salary,')'));

end */;;
DELIMITER ;
/*!50003 SET sql_mode              = @saved_sql_mode */ ;
/*!50003 SET character_set_client  = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection  = @saved_col_connection */ ;
/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client  = utf8 */ ;
/*!50003 SET character_set_results = utf8 */ ;
/*!50003 SET collation_connection  = utf8_general_ci */ ;
/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 trigger emp_delete_trigger
after delete
on emp
for each row
begin
insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values
(null,'delete',now(),old.id,concat('刪除的資料:(id:',old.id,';name:',old.name,';age:',old.age,';salary:',old.salary,')'));

end */;;
DELIMITER ;
/*!50003 SET sql_mode              = @saved_sql_mode */ ;
/*!50003 SET character_set_client  = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection  = @saved_col_connection */ ;

--
-- Table structure for table `emp_logs`
--

DROP TABLE IF EXISTS `emp_logs`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp_logs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `operation` varchar(20) NOT NULL COMMENT '操作型別, insert/update/delete',
  `operate_time` datetime NOT NULL COMMENT '操作時間',
  `operate_id` int(11) NOT NULL COMMENT '操作表的ID',
  `operate_params` varchar(500) DEFAULT NULL COMMENT '操作引數',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `emp_logs`
--

LOCK TABLES `emp_logs` WRITE;
/*!40000 ALTER TABLE `emp_logs` DISABLE KEYS */;
INSERT INTO `emp_logs` VALUES (1,'insert','2020-07-26 19:14:29',5,'插入資料:(id:5name:光明左使age:salary:3500)'),(2,'insert','2020-07-26 19:18:40',6,'插入資料:(id:6;name:光明右使;age:33;salary:3200)'),(3,'insert','2020-07-26 19:35:35',3,'更新前資料:(id:3;name:青翼蝠王;age:38;salary:2800)更新後資料:(id:3;name:青翼蝠王;age:39;salary:2800)'),(4,'delete','2020-07-26 19:40:46',5,'刪除的資料:(id:5;name:光明左使;age:30;salary:3500)');
/*!40000 ALTER TABLE `emp_logs` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2020-07-31 11:37:49
demo01.sql

3.匯出某個資料庫下某個表,建立語句匯出為***.sql,資料匯出為***.txt;

mysqldump -uroot -padmin123 -T /tmp demo_01 city;    --匯出 demo_01資料庫的 city表到/tmp目錄下

-- MySQL dump 10.13  Distrib 5.6.22, for Linux (i686)
--
-- Host: localhost    Database: demo_01
-- ------------------------------------------------------
-- Server version       5.6.22

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `city`
--

DROP TABLE IF EXISTS `city`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `city` (
  `city_id` int(11) NOT NULL AUTO_INCREMENT,
  `city_name` varchar(50) NOT NULL,
  `country_id` int(11) NOT NULL,
  PRIMARY KEY (`city_id`),
  UNIQUE KEY `idx_city_name` (`city_name`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2020-07-31 11:48:21
city.sql
1       西安市  1
2       NewYork 2
3       北京    1
4       上海    1
city.txt

1.5 mysqlimport/source

mysqlimport 是客戶端資料匯入工具,用來匯入mysqldump 加 -T 引數後匯出的文字檔案(txt)。

語法:

mysqlimport [options]  db_name  textfile1  [textfile2...]

示例:

mysqlimport -uroot -padmin123 demo_01 /tmp/city.txt

如果需要匯入sql檔案,可以使用mysql中的source 指令 :注意該指令是登入mysql之後才能使用

1.匯出指定資料庫下指定表(包含建立語句和插入語句)

mysqldump -uroot -padmin123 demo_01 city > /tmp/city.sql;

2.然後我們把city表刪除

3.通過source命令執行sql檔案內容(建立表並匯入資料)

 source /tmp/city.sql;  ---注意,該語句在登入mysql之後使用(非客戶端工具)

1.6 mysqlshow

mysqlshow 客戶端物件查詢工具,用來很快地查詢存在哪些資料庫、資料庫中的表、表中的列或者索引。

語法:

mysqlshow [options] [db_name [table_name [col_name]]]

引數:

--count     顯示資料庫及表的統計資訊(資料庫,表 均可以不指定)
-i          顯示指定資料庫或者指定表的狀態資訊

示例:

#查詢每個資料庫的表的數量及表中記錄的數量
 mysqlshow -uroot -padmin123 --count

#查詢demo_01庫中每個表中的欄位書,及行數
mysqlshow -uroot -padmin123 demo_01 --count

#查詢demo_01庫中city表的詳細情況
 mysqlshow -uroot -padmin123 demo_01 city --count