欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL 5.7以及MySQL Workbench使用

程序员文章站 2022-05-07 23:09:16
...

转载自:http://blog.csdn.net/z45689/article/details/54139396

摘要:使用MySQL时,一般会使用可视化工具管理数据库,方便开发提升效率。身边使用Navicat的人居多,Navicat有人家收费的理由,用着确实顺手,界面简单不复杂,上手容易,**版不知道哪些个公司的安装包,用着着实不放心,遂下载了MySQL官方的Workbench,本文会持续更新一些Workbench的用法,也会穿插一些MySQL5.7的新特性。

MySQL Workbench

安装使用

  MySQL Workbench为数据库架构师,开发人员和DBA提供统一的可视化工具。MySQL Workbench为服务器配置,用户管理,备份等提供了数据建模,SQL开发以及全面的管理工具。 
  官方下载地址 64位 32位 
  安装完成后launch it,进入首页面。

MySQL 5.7以及MySQL Workbench使用

  选择数据库实例(Local instance MySQL),双击进行登录,需要输入密码。

MySQL 5.7以及MySQL Workbench使用

  新建一个数据库test。

MySQL 5.7以及MySQL Workbench使用

  Create 数据库表,填写Table Name,Comments之后点击向上的箭头,填写Column信息。

MySQL 5.7以及MySQL Workbench使用

MySQL 5.7以及MySQL Workbench使用

MySQL 5.7以及MySQL Workbench使用

  添加列信息的过程中,发现一个没使用过的字段选项 Generated Column。表建好之后,鼠标轻放在table上,会出现三个icon,我们能够去查看表的相关信息,分析表和创建表的索引,以及去编辑表,修改表结构。

MySQL 5.7以及MySQL Workbench使用

  接下来给user表中添加数据,MySQL基础语法不再赘述。

MySQL 5.7以及MySQL Workbench使用

  闪电icon执行SQL语句,1处,执行SQL脚本的选定部分,如果没有选定,则执行窗口的所有SQL语句;2处,执行光标所在的SQL语句;3处,SQL语句性能分析时使用,EXPLAIN执行计划使用执行查询;4处,是否在执行失败的语句后继续执行SQL脚本;5处,是否开启事务自动提交模式;6处,格式化SQL。执行SQL也可以点击最上菜单栏的Query菜单项。

消除MySQL Workbench SQL编辑窗口的小红叉

  明明没有语法错误,SQL编辑器却出现小红叉,强迫症的同学肯定受不了。(问题发现还没彻底解决,Beautify/reformat the SQL script用起来时好时坏,重启倒是挺好用,太low)

设置显示mysql和information_schema数据库

  我们平时在开发中会用到information_schema数据库和mysql数据库,默认SCHEMAS栏是没有显示的,需要设置让其显示。Edit->Preferences->SQL Editor,Sidebar中勾选Show Metadata and Internal Schemas。

MySQL 5.7以及MySQL Workbench使用

数据导入导出

  Export

MySQL 5.7以及MySQL Workbench使用

  Import

MySQL 5.7以及MySQL Workbench使用

Reverse Engineer****

  数据库****说白了就是根据现有数据库结构建立数学模型,菜单栏Database->Reverse Engineer…

MySQL 5.7以及MySQL Workbench使用

  设置DBMS Connect参数。

MySQL 5.7以及MySQL Workbench使用

  Connect信息,Show Logs按钮可查看日志。

MySQL 5.7以及MySQL Workbench使用

  选择需要执行反向工程的数据库,这里选择测试数据库student。

MySQL 5.7以及MySQL Workbench使用

  检索相关信息,Show Logs按钮查看详情。

MySQL 5.7以及MySQL Workbench使用

  选择数据库中参与建模的表,之后一路Execute->Next->Finish,建模完成。

MySQL 5.7以及MySQL Workbench使用

MySQL 5.7以及MySQL Workbench使用

MySQL 5.7以及MySQL Workbench使用

  双击E-R图中实体,在弹出的对话框能够对表进行编辑。

MySQL 5.7以及MySQL Workbench使用

  将E-R图保存为PNG、SVG、PDF、SQL文件等,很方便,菜单栏File->Export->…

MySQL 5.7以及MySQL Workbench使用

MySQL 5.7

Generated Column

  MySQL5.7引入了Generated Column,顾名思义,就是引用其他列值生成的列。 
  语法:<type> [ GENERATED ALWAYS ] AS ( <expression> ) [ VIRTUAL|STORED ] 
[ UNIQUE [KEY] ] [ [PRIMARY] KEY ] [ NOT NULL ] [ COMMENT <text> ],MySQL5.7支持两种Generated Columns,Virtual Generated Column(默认) 和Stored Generated Column。前者的列值是在每次从表中读取记录时计算所得,不持久化在数据库中,Stored Generated Column则在表中写入新记录时计算列,之后将作为常规字段处理。这两种类型都可以有NOT NULL限制,但只有Stored Generated Column生成列可以作为索引的一部分。 
  Generated Column使用时的一些限制:

  • generation expression只能调用native deterministic functions(MySQL内建函数),stored routines(存储过程?)和UDF(用户自定义函数)尚不支持
  • 受.frm文件的限制, generation expression的总长度不能超过64K。因此,可以有一个字段的generation expression长度为64K,或者有30个字段,每个的generation expression的平均长度为2K
  • Generated Column不能引用自身或稍后定义的其他Generated Column,但它可以引用任何以前定义的Generated Column。这个限制对于常规列不适用,Generated Column可以引用任何常规列,无论它在何时定义

    mysql> CREATE TABLE sales ( 
            -> name VARCHAR(20),  
            -> price_eur DOUBLE,
            -> amount INT,
            -> total_eur DOUBLE AS (price_eur * amount),
            -> total_usd DOUBLE AS (total_eur * xrate),
            -> xrate DOUBLE);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

  total_eur(Virtual Generated Column)列值由price_eur(常规列)*amount(常规列)表达式计算所得。

mysql_install_db

  mysql_install_db,MySQL 5.7.6之后开始已弃用,功能已经集成到mysqld。mysql_install_db初始化MySQL数据目录并创建system tables(如果不存在),以及初始化管理InnoDB表的系统表空间和相关数据结构。 语法:mysql_install_db [options]。 
  从MySQL 5.6.8开始,mysql_install_db是Perl脚本,可以在任何安装了Perl的系统上使用,之前是shell脚本,仅在Unix平台上可用。MySQL 5.7.5之后,mysql_install_db使用C ++编写,并在binary distributions中应用。 此外,又添加了多个新选项,删除了部分旧选项,如果发现某个选项不能正常工作,检查哪些选项适用于你的当前mysql_install_db版本。 
  默认情况下,MySQL 5.7.5及更高版本是安全的,具有以下特性:

  • 名为“root”@’localhost’的单个管理帐户使用随机生成的密码创建,并标记为已过期
  • 不会创建匿名帐户
  • 不会创建所有用户都可访问的测试数据库
  • –admin-xxx选项可用于控制管理帐户的特性
  • –random-password-file选项可用于控制随机密码的写入位置。
  • –insecure选项可用于禁止随机密码生成

mysqld_safe

  ./mysqld_safe是在Unix上启动mysqld服务器的推荐方法。 mysqld_safe添加了一些安全功能,如在发生错误时重新启动服务器,并将运行时信息记录到错误日志文件。从MySQL 5.7.6开始,对于使用RPM分布式安装的MySQL,服务器startup、shutdown由Linux平台上的systemd工具管理,因此在这些平台上,不再安装mysqld_safe。

mysql_upgrade

  检查所有数据库中所有表与当前MySQL版本的兼容性。 mysql_upgrade还会升级系统表,以利用可能添加的新特权或功能。语法: mysql_upgrade [options]

innodb_force_recovery

  强制启动InnoDB存储引擎,同时防止后台操作运行,以便转储tables。紧急状况下,将innodb_force_recovery设置为大于0的值,便可以启动InnoDB并转储表, 在执行此操作之前,请确已进行了数据库备份,以便在需要重新创建数据库时使用。 
  innodb_force_recovery默认为0(正常启动),所允许的非零值为1到6,较大的值包括较小值的functionality。 例如,值3包括值1和2的所有functionality。

  • 1 (SRV_FORCE_IGNORE_CORRUPT) 
      即使检测到损坏页面,服务器继续运行。 尝试使SELECT * FROM tbl_name跳过损坏的索引记录和页面,有助于转储表。
  • 2 (SRV_FORCE_NO_BACKGROUND) 
      阻止主线程和任何purge线程运行。 如果在purge操作期间发生崩溃,则此恢复值会阻止它运行。
  • 3 (SRV_FORCE_NO_TRX_UNDO) 
      不执行事务回滚。
  • 4 (SRV_FORCE_NO_IBUF_MERGE) 
      阻止插入缓冲区的合并操作,不计算表统计信息。 此操作可能永久损坏数据文件,设置SRV_FORCE_NO_IBUF_MERGE后,将删除并重新创建所有二级索引。 从MySQL 5.7.3开始,此操作设置InnoDB为只读。
  • 5 (SRV_FORCE_NO_UNDO_LOG_SCAN) 
      启动时不查看undo logs,,此操作可能永久损坏数据文件,设置SRV_FORCE_NO_UNDO_LOG_SCAN后,InnoDB甚至将不完整的事务处理为已提交。 从MySQL 5.7.3开始,此操作设置InnoDB为只读。
  • 6 (SRV_FORCE_NO_LOG_REDO) 
      数据库恢复时不执行redo log前滚,此操作可能永久损坏数据文件,使数据库页面处于历史状态,反过来可能将更多的损坏引入B树和其他数据库结构。 从MySQL 5.7.3,此操作设置InnoDB为只读。

参考: 
Generated Columns in MySQL 5.7.5 
MySQL Workbench使用手册 
MySQL 5.7 Reference Manual