IDE工具介绍(Navicat)

生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具,我们使用Navicat工具,这个工具本质上就是一个socket客户端,可视化的连接mysql服务端的一个工具,并且他是图形界面版的。我们使用它和直接使用命令行的区别就类似linux和windows系统操作起来的一个区别。

一、安装和使用

  下载地址:https://pan.baidu.com/s/1bpo5mqj

  下载完之后,直接解压出来就能用,看一下解压之后的目录:

  双击打开下面这个文件(可以把它添加一个桌面快捷方式,或者添加到任务栏):

  Navicat工具、pymysql模块、数据备份

      然后会提示你输入注册码:

      Navicat工具、pymysql模块、数据备份

    回到navicat的解压出来的文件夹里面,有个叫做key.txt的文件,打开,里面有注册码

    Navicat工具、pymysql模块、数据备份

    Navicat工具、pymysql模块、数据备份

    将这个注册码copy到输入注册码的地方:

    Navicat工具、pymysql模块、数据备份

    点击确定就能打开使用了:会显示出来下面的界面

    Navicat工具、pymysql模块、数据备份

    

    既然是mysql客户端,我们需要连接mysql服务端

    Navicat工具、pymysql模块、数据备份

    在弹出的界面输入mysql服务端的ip地址和端口,还有mysql用户名和密码

    Navicat工具、pymysql模块、数据备份

    Navicat工具、pymysql模块、数据备份

    Navicat工具、pymysql模块、数据备份

    Navicat工具、pymysql模块、数据备份

    Navicat工具、pymysql模块、数据备份

    Navicat工具、pymysql模块、数据备份

    

    Navicat工具、pymysql模块、数据备份

     

    Navicat工具、pymysql模块、数据备份

    关于校对规则大家看看这两篇博客就明白了:

      https://www.cnblogs.com/adforce/p/3282404.html

      https://www.jb51.net/article/48775.htm

 

     上面的步骤点击确定就建好一个数据库了:

    Navicat工具、pymysql模块、数据备份

    然后我们到上面的数据库里面新建一张表

    Navicat工具、pymysql模块、数据备份

 

     Navicat工具、pymysql模块、数据备份

    

     Navicat工具、pymysql模块、数据备份

    也就是我们自己用鼠标点啊点之类的,也就是生成对应的sql语句去执行

    然后点击保存:

    Navicat工具、pymysql模块、数据备份

    这个表就生成了:

    Navicat工具、pymysql模块、数据备份

    不信我们去命令行看一看:这个表就存在了

    Navicat工具、pymysql模块、数据备份

    以后我们直接就使用这个工具来操作数据库就可以了,因为命令行操作还是比较恶心的

    然后我们看看建立外键

    Navicat工具、pymysql模块、数据备份

    Navicat工具、pymysql模块、数据备份

    然后自动会生成对应的sql语句

    Navicat工具、pymysql模块、数据备份

    

     Navicat工具、pymysql模块、数据备份

    Navicat工具、pymysql模块、数据备份

    然后点击保存,起一个表名,就有了这个表了

    Navicat工具、pymysql模块、数据备份

    然后双击上面的表名就可以插入数据了

    Navicat工具、pymysql模块、数据备份

    

    比方说我们上面这个dep表的id字段没有设置自增,我想改一下,让它这个id字段变为自增的怎么办

    设计表:

    Navicat工具、pymysql模块、数据备份

    

    Navicat工具、pymysql模块、数据备份

    那我们该怎么办呢,直接删除这个表然后重新创建吗?你另外一个关联表肯定不让你这么做,所以你需要先将那个关联表的外键关系先取消,或者先将那个外键关联表删除

    Navicat工具、pymysql模块、数据备份

    然后把这个关联表的外键删除,然后保存

    然后再去我们想给id字段加上自增的那个dep表里面把id字段设置为自增,保存,然后在重新将emp表外键到dep的id字段上

    然后给dep表插入几条数据

    Navicat工具、pymysql模块、数据备份

    Navicat工具、pymysql模块、数据备份

    这个工具还能将你的表之间的关系通过图形的形式来给你展示:

    Navicat工具、pymysql模块、数据备份

    Navicat工具、pymysql模块、数据备份

    点击这个ER图,两者的关系图就显示出来了,那么将来你的表很多的时候,你就可以通过这个图来查看自己表和表之间的关系,看效果:

    Navicat工具、pymysql模块、数据备份

    如果我们点击两个表之间的线,是可以看到两者之间的关系的:

    Navicat工具、pymysql模块、数据备份

 

    

     还可以选择上面的模型来直接创作图表,创建表之间的关系

    Navicat工具、pymysql模块、数据备份

    Navicat工具、pymysql模块、数据备份

    但是上面我们建立的这个模型,是不能直接创建到数据库里面的,需要将它以sql的形式导入,然后把导出的sql语句,到数据库里面去执行

    Navicat工具、pymysql模块、数据备份

    然后导出保存到一个地方

    Navicat工具、pymysql模块、数据备份

    打开我们导出的文件,看一下里面的内容

    Navicat工具、pymysql模块、数据备份

    你看,就是咱们创建的模型翻译成的sql语句,复制一下这些sql语句,但mysql里面去执行一下,就等到我们模型里面的两个表了,是不是很方便

    Navicat工具还能写原生sql语句来进行数据库的操作

    Navicat工具、pymysql模块、数据备份

    就看到一个输入sql语句的界面了:

    Navicat工具、pymysql模块、数据备份

    然后写一个sql语句试一下:

    Navicat工具、pymysql模块、数据备份

    Navicat工具、pymysql模块、数据备份

      然后运行一下:

      Navicat工具、pymysql模块、数据备份

        

      我们还可以将之前数据库中导出来的数据,以sql文件的形式通过navicat导入到数据库中:看步骤

      假如我们有一个从数据库中导入的文件,文件名称为init.sql,里面的内容就下面的东东

/*
 数据导入:
 Navicat Premium Data Transfer

 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 50624
 Source Host           : localhost
 Source Database       : sqlexam

 Target Server Type    : MySQL
 Target Server Version : 50624
 File Encoding         : utf-8

 Date: 10/21/2016 06:46:46 AM
*/

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `class`
-- ----------------------------
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
  `cid` int(11) NOT NULL AUTO_INCREMENT,
  `caption` varchar(32) NOT NULL,
  PRIMARY KEY (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `class`
-- ----------------------------
BEGIN;
INSERT INTO `class` VALUES ('1', '三年二班'), ('2', '三年三班'), ('3', '一年二班'), ('4', '二年九班');
COMMIT;

-- ----------------------------
--  Table structure for `course`
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
  `cid` int(11) NOT NULL AUTO_INCREMENT,
  `cname` varchar(32) NOT NULL,
  `teacher_id` int(11) NOT NULL,
  PRIMARY KEY (`cid`),
  KEY `fk_course_teacher` (`teacher_id`),
  CONSTRAINT `fk_course_teacher` FOREIGN KEY (`teacher_id`) REFERENCES `teacher` (`tid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `course`
-- ----------------------------
BEGIN;
INSERT INTO `course` VALUES ('1', '生物', '1'), ('2', '物理', '2'), ('3', '体育', '3'), ('4', '美术', '2');
COMMIT;

-- ----------------------------
--  Table structure for `score`
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `student_id` int(11) NOT NULL,
  `course_id` int(11) NOT NULL,
  `num` int(11) NOT NULL,
  PRIMARY KEY (`sid`),
  KEY `fk_score_student` (`student_id`),
  KEY `fk_score_course` (`course_id`),
  CONSTRAINT `fk_score_course` FOREIGN KEY (`course_id`) REFERENCES `course` (`cid`),
  CONSTRAINT `fk_score_student` FOREIGN KEY (`student_id`) REFERENCES `student` (`sid`)
) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `score`
-- ----------------------------
BEGIN;
INSERT INTO `score` VALUES ('1', '1', '1', '10'), ('2', '1', '2', '9'), ('5', '1', '4', '66'), ('6', '2', '1', '8'), ('8', '2', '3', '68'), ('9', '2', '4', '99'), ('10', '3', '1', '77'), ('11', '3', '2', '66'), ('12', '3', '3', '87'), ('13', '3', '4', '99'), ('14', '4', '1', '79'), ('15', '4', '2', '11'), ('16', '4', '3', '67'), ('17', '4', '4', '100'), ('18', '5', '1', '79'), ('19', '5', '2', '11'), ('20', '5', '3', '67'), ('21', '5', '4', '100'), ('22', '6', '1', '9'), ('23', '6', '2', '100'), ('24', '6', '3', '67'), ('25', '6', '4', '100'), ('26', '7', '1', '9'), ('27', '7', '2', '100'), ('28', '7', '3', '67'), ('29', '7', '4', '88'), ('30', '8', '1', '9'), ('31', '8', '2', '100'), ('32', '8', '3', '67'), ('33', '8', '4', '88'), ('34', '9', '1', '91'), ('35', '9', '2', '88'), ('36', '9', '3', '67'), ('37', '9', '4', '22'), ('38', '10', '1', '90'), ('39', '10', '2', '77'), ('40', '10', '3', '43'), ('41', '10', '4', '87'), ('42', '11', '1', '90'), ('43', '11', '2', '77'), ('44', '11', '3', '43'), ('45', '11', '4', '87'), ('46', '12', '1', '90'), ('47', '12', '2', '77'), ('48', '12', '3', '43'), ('49', '12', '4', '87'), ('52', '13', '3', '87');
COMMIT;

-- ----------------------------
--  Table structure for `student`
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `gender` char(1) NOT NULL,
  `class_id` int(11) NOT NULL,
  `sname` varchar(32) NOT NULL,
  PRIMARY KEY (`sid`),
  KEY `fk_class` (`class_id`),
  CONSTRAINT `fk_class` FOREIGN KEY (`class_id`) REFERENCES `class` (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `student`
-- ----------------------------
BEGIN;
INSERT INTO `student` VALUES ('1', '', '1', '理解'), ('2', '', '1', '钢蛋'), ('3', '', '1', '张三'), ('4', '', '1', '张一'), ('5', '', '1', '张二'), ('6', '', '1', '张四'), ('7', '', '2', '铁锤'), ('8', '', '2', '李三'), ('9', '', '2', '李一'), ('10', '', '2', '李二'), ('11', '', '2', '李四'), ('12', '', '3', '如花'), ('13', '', '3', '刘三'), ('14', '', '3', '刘一'), ('15', '', '3', '刘二'), ('16', '', '3', '刘四');
COMMIT;

-- ----------------------------
--  Table structure for `teacher`
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
  `tid` int(11) NOT NULL AUTO_INCREMENT,
  `tname` varchar(32) NOT NULL,
  PRIMARY KEY (`tid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `teacher`
-- ----------------------------
BEGIN;
INSERT INTO `teacher` VALUES ('1', '张磊老师'), ('2', '李平老师'), ('3', '刘海燕老师'), ('4', '朱云海老师'), ('5', '李杰老师');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;
数据库导出的文件

 

      首先我们新建一个库:

      Navicat工具、pymysql模块、数据备份

      然后选择这个数据库,点击右键,选择运行sql文件;

      Navicat工具、pymysql模块、数据备份

      Navicat工具、pymysql模块、数据备份

      Navicat工具、pymysql模块、数据备份

      注意上面这一步,直接关闭就可以了,不要再次点击开始了

       Navicat工具、pymysql模块、数据备份

      然后通过ER图,来看看,各个表的关系就看的很清楚了。

      

      我们还可以对sql语句进行注释:选中语句然后ctrl+/就能多行注释,ctrl+shift+/ 就能取消注释

      ok,Navicat简单的就介绍完了,大家可以练一练了~~~

 

MySQL数据备份

使用mysqldump实现逻辑备份

#语法:
# mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql

#示例:
#单库备份
mysqldump -uroot -p123 db1 > db1.sql
mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql

#多库备份
mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql

#备份所有库
mysqldump -uroot -p123 --all-databases > all.sql

恢复逻辑备份

#方法一:
[root@localhost backup]# mysql -uroot -p123 < /backup/all.sql

#方法二:
mysql> use db1;
mysql> SET SQL_LOG_BIN=0;
mysql> source /root/db1.sql

#注:如果备份/恢复单个库时,可以修改sql文件
DROP database if exists school;
create database school;
use school;

表的导出和导入

SELECT... INTO OUTFILE 导出文本文件
示例:
mysql> SELECT * FROM school.student1
INTO OUTFILE 'student1.txt'
FIELDS TERMINATED BY ',' //定义字段分隔符
OPTIONALLY ENCLOSED BY '' //定义字符串使用什么符号括起来
LINES TERMINATED BY '\n' ; //定义换行符


mysql 命令导出文本文件
示例:
# mysql -u root -p123 -e 'select * from student1.school' > /tmp/student1.txt
# mysql -u root -p123 --xml -e 'select * from student1.school' > /tmp/student1.xml
# mysql -u root -p123 --html -e 'select * from student1.school' > /tmp/student1.html

LOAD DATA INFILE 导入文本文件
mysql> DELETE FROM student1;
mysql> LOAD DATA INFILE '/tmp/student1.txt'
INTO TABLE school.student1
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY ''
LINES TERMINATED BY '\n';
#可能会报错
mysql> select * from db1.emp into outfile 'C:\\db1.emp.txt' fields terminated by ',' lines terminated by '\r\n';
ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable


#数据库最关键的是数据,一旦数据库权限泄露,那么通过上述语句就可以轻松将数据导出到文件中然后下载拿走,因而mysql对此作了限制,只能将文件导出到指定目录
在配置文件中
[mysqld]
secure_file_priv='C:\\' #只能将数据导出到C:\\下

重启mysql
重新执行上述语句

数据库迁移

务必保证在相同版本之间迁移
# mysqldump -h 源IP -uroot -p123 --databases db1 | mysql -h 目标IP -uroot -p456

相关文章:

  • 2021-09-04
  • 2021-09-19
  • 2022-12-23
  • 2022-02-12
  • 2021-08-24
  • 2022-03-03
猜你喜欢
  • 2021-11-27
  • 2022-12-23
  • 2021-07-29
  • 2022-12-23
  • 2022-02-07
  • 2018-03-02
  • 2021-06-21
相关资源
相似解决方案