关于Navicat for MySQL 的使用小结

最近都在做数据库的实验,通过实验了解了一些SQL的语法,也更加熟悉了mysql的使用,实验从最开始数据库的创建,表的创建,包括添加一些条件约束,创建索引触发器等都涉及到了。到后面有关mysql的权限管理,以及通过powerdesigner进行数据库建模设计,和使用Java 编程对数据库进行增删改查,几乎包含了所有数据库基础操作。通过实验,不仅是熟悉一些操作,更多的是了解认识更多东西。实验我使用的是Navicat,mysql,sql的基础语法太多,用到去查就行,这里主要记录一些偏实践性的东西,算是一个小总结吧。

1 、命令行界面查看mysql 版本

1
2
3
4
5
6
7
mysql> select version();
+-----------------+
| version() |
+-----------------+
| 10.1.32-MariaDB |
+-----------------+
1 row in set

也可以使用select version() from dual;命令,这里的 dual 是数据库里的一个默认表,在没有引用表的情况下,允许将dual指定为虚拟表名。在Oracle中使用的比较多,是一个oracle内部表,它仅包含一行一列,不论我们做什么操作(不要删除记录)它都只有一条记录。
在Mysql,SQL Server 等数据库中也都有dual 表,不过在mysql中的dual表没有值,select * from dual 这种语句会报错。

2、MySQL 和 MariaDB

我使用的xmapp的一个工具包,里面包括了mysql,但是在使用时我发现了我是MariaDB,不是mysql,然后就简单了解了一下mariaDB 和 mysql 的区别。

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

MariaDB的API和协议兼容MySQL,另外又添加了一些功能,以支持本地的非阻塞操作和进度报告,所以所有使用MySQL的连接器、程序库和应用程序也将可以在MariaDB下工作。

但两者之间也存在不兼容性,MariaDB 的文档中列出了 MySQL 和 MariaDB 之间的数百个不兼容问题。因此,我们无法通过简单的方案在这两个数据库之间进行迁移。

3、数据库存储引擎

数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。

可以使用show engines 命令查看MySQL 使用的引擎;

MySQL 支持的存储引擎包括:InnoDB、MyISAM、Memory、CSV、Archive、Blackhole、Merge、Federated、Example等

MariaDB 支持的存储引擎包括:XtraDB、InnoDB、MariaDB ColumnStore、Aria、Archive、Blackhole、Cassandra Storage Engine、Connect、CSV、FederatedX、Memory、Merge、Mroonga、MyISAM、MyRocks等

数据库可以支持多少个存储引擎其实并不太重要,满足需求才是最重要的。如果想了解不同数据库存储引擎的区别可以参考这篇文章 数据库—四种存储引擎

4、Navicat的帮助文档

Navicat提供了特别详细的帮助文档可以点击帮助菜单打开,也可以直接使用按f1打开。下面是Navicat for MySQL 一些常用的快捷键。

1
2
3
4
5
6
7
8
9
10
11
ctrl+q            打开查询窗口
ctrl+/ 注释sql语句
ctrl+shift +/ 解除注释
ctrl+r 运行查询窗口的sql语句
ctrl+shift+r 只运行选中的sql语句
F6 打开一个mysql命令行窗口
ctrl+d 查看表结构详情,包括索引 触发器,存储过程,外键,唯一键
ctrl+l 删除一行
ctrl+n 打开一个新的查询窗口
ctrl+w 关闭一个查询窗口
ctrl+tab 多窗口切换

5、sql 脚本的导入导出

  1. 可以直接点击右键点击数据库,运行SQL文件 或者转储SQL文件,就可以将已有的sql 文件导入数据库和将数据库保存为sql文件。也可以右键单击数据库,选择文件传输,这里可以选择不同的连接和数据格式,可以有选择的导入导出传输。

  2. 通过命令行导出sql文件

    1
    mysqldump -h 127.0.0.1 -uroot -ppassword databasename >D:/back_databasename.sql

    使用命令行,先进入mysql的安装目录。我这里是xmapp安装的,所以切换到C:\xampp\mysql\bin

    mysqldump -h 127.0.0.1 -uroot -ppassword databasename >D:/back_databasename.sql

    用户名为:root,与-u之间可有空格(-h后也可由空格)密码为:password(你自己的密码),注意!-p后面不可有空格,直接跟密码。数据库名称为:databasename(你自己要导入导出的数据库名),导出路径为:D:/back_databasename.sql(根据自己实际情况修改)

  3. 通过命令行还原sql文件,上面步骤相似

    1
    mysql -h 127.0.0.1 -u root -ppassword -f databasename <D:/back_databasename.sql --default-character-set=gbk
  4. 使用命令将数据库下表中的数据导出成文本文件

    1
    2
    3
    mysql> use hhh;  // 使用hhh数据库
    mysql> show tables; //查看数据库中的表
    mysql>select * from user into outfile 'out.txt'; //将user表保存为文本文件out.txt

6、使用xmapp启动mysql

  1. 命令行进入,先在Xampp的控制面板(shell)开启MYSQL,直接进入路径启动

    命令行切换至xmapp安装目录下的mysql目录下的bin目录

    比如:C:\xampp\mysql\bin

    mysql -u root -p 回车

    要求输入密码(如果是第一次登陆,直接回车,默认密码 “”)修改密码

  2. 修改密码

    命令行切换至xmapp安装目录下的mysql目录下的bin目录

    比如:C:\xampp\mysql\bin

    使用命令修改密码:mysqladmin -u root -p password 新密码

    修改密码后 mysql -u root -p 登录时就需要输入密码了

  3. 配置环境变量

    Path变量中加入C:\xampp\mysql\bin

    win+R -> cmd回车

    mysql -u root -p 回车

    要求输入密码(如果是第一次登陆,直接回车,默认密码 “”)

7、root 和 非root的区别

我在使用xmapp时,启动mysql,并通过Navicat连接了数据库后,创建了一些数据库,在Navicat里面的命令行界面可以查看到我创建的数据库,但是在xmapp shell 里面进入mysql 却没有显示我创建的数据库。

原因:是我在使用Navicat连接mysql时,使用的是root身份,但通过xmapp shell 进入mysql,我是直接启动的mysql,并没有使用root 进登录的。所以无法查看root身份下的创建的数据库,只是有几个系统默认的数据库。

解决方法:使用命令 mysql -u root -p 进入mysql。这时就可以通过查看自己创建的数据库了。

重要:以后在使用数据库时要区分以什么身份登录root 和非root有很大区别,对于数据库的管理权限也有所不同,具体情况具体分析。