1、安装和使用
下载地址:https://pan.baidu.com/s/1bpo5mqjpython
下载完以后,直接解压出来就能用,看一下解压以后的目录:mysql
双击打开下面这个文件(能够把它添加一个桌面快捷方式,或者添加到任务栏):linux
而后会提示你输入注册码:sql
回到navicat的解压出来的文件夹里面,有个叫作key.txt的文件,打开,里面有注册码数据库
将这个注册码copy到输入注册码的地方:windows
点击肯定就能打开使用了:会显示出来下面的界面后端
既然是mysql客户端,咱们须要链接mysql服务端服务器
在弹出的界面输入mysql服务端的ip地址和端口,还有mysql用户名和密码socket
关于校对规则你们看看这两篇博客就明白了:
http://www.javashuo.com/article/p-xdoxxfej-ew.html
https://www.jb51.net/article/48775.htm
上面的步骤点击肯定就建好一个数据库了:
而后咱们到上面的数据库里面新建一张表
也就是咱们本身用鼠标点啊点之类的,也就是生成对应的sql语句去执行
而后点击保存:
这个表就生成了:
不信咱们去命令行看一看:这个表就存在了
之后咱们直接就使用这个工具来操做数据库就能够了,由于命令行操做仍是比较恶心的
而后咱们看看创建外键
而后自动会生成对应的sql语句
而后点击保存,起一个表名,就有了这个表了
而后双击上面的表名就能够插入数据了
比方说咱们上面这个dep表的id字段没有设置自增,我想改一下,让它这个id字段变为自增的怎么办
设计表:
那咱们该怎么办呢,直接删除这个表而后从新建立吗?你另一个关联表确定不让你这么作,因此你须要先将那个关联表的外键关系先取消,或者先将那个外键关联表删除
而后把这个关联表的外键删除,而后保存
而后再去咱们想给id字段加上自增的那个dep表里面把id字段设置为自增,保存,而后在从新将emp表外键到dep的id字段上
而后给dep表插入几条数据
这个工具还能将你的表之间的关系经过图形的形式来给你展现:
点击这个ER图,二者的关系图就显示出来了,那么未来你的表不少的时候,你就能够经过这个图来查看本身表和表之间的关系,看效果:
若是咱们点击两个表之间的线,是能够看到二者之间的关系的:
还能够选择上面的模型来直接创做图表,建立表之间的关系
可是上面咱们创建的这个模型,是不能直接建立到数据库里面的,须要将它以sql的形式导入,而后把导出的sql语句,到数据库里面去执行
而后导出保存到一个地方
打开咱们导出的文件,看一下里面的内容
你看,就是我们建立的模型翻译成的sql语句,复制一下这些sql语句,但mysql里面去执行一下,就等到咱们模型里面的两个表了,是否是很方便
Navicat工具还能写原生sql语句来进行数据库的操做
就看到一个输入sql语句的界面了:
而后写一个sql语句试一下:
而后运行一下:
咱们还能够将以前数据库中导出来的数据,以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;
首先咱们新建一个库:
而后选择这个数据库,点击右键,选择运行sql文件;
注意上面这一步,直接关闭就能够了,不要再次点击开始了
而后经过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