MySQL及其Workbench的安装与使用

来源:IT165收集  发布日期:2016-02-26 22:02:33

由David发表在天码营

SQL简介

我们对数据库已经有了一个感性认识,了解了数据库表以及表之间的几种关系。我们已经针对几个简单的场景设计了blog、user等几张数据表。在一个具体数据库(比如MySQL)中如何来描述表的结构和表之间的关系呢?这就是需要接下来讲的结构化查询语言(SQL, Structured Query Language)了。SQL是关系式数据库管理系统的标准语言,我们可以通过来对关系型数据库进行操作,创建表的内部结构与关联关系,并对表数据进行各种操作。

为什么要学习SQL

我们知道,现在的Web开发中我们引入了各种ORM(Object Relation Mapping)框架。通过ORM框架,我们可以基本屏蔽SQL的相关信息,直接通过面向对象的方式对数据库进行操作,ORM框架自身会为我们自动生成对应的SQL语句(这正是Mapping的意思)。那么我们为什么依赖还是需要学习SQL呢?

学习SQL对于我们编写更好程序还是是非常重要的:

由架构生成的SQL语句往往比较低效,当我们遇到效率上的瓶颈时,自己重写SQL语句往往是有效的解决方案 直接通过面向对象的方式操作数据库往往会大大增加数据库的操作数,导致程序与数据库之间的通信数量大大增加,这往往会造成数据库压力过大,甚至宕机。如果我们了解SQL,可以通过优化程序的方式减少数据库的压力 开发时可能会遇到一些SQL相关的问题,如果不了解SQL的话可能会花费大量的时间,但是如果学习过SQL后就能够很容易的发现。例如from是SQL的一个关键字,如果我们将为某个对象的属性名取名为from,此时直接运行框架为我们生成的SQL语句将会抛出错误。如果了解SQL的话看到错误就能很快的发现问题并解决。

总而言之,如果你想成为一个优秀的Java Web开发者,学习SQL是非常必要的。

SQL包含哪些内容

SQL主要包含两部分内容:

数据定义语言(Data Definition Language, DDL)

负责数据结构定义与数据库对象定义的语言。新建、更改或者删除数据库表等对数据库表的操作都属于数据定义语言的范围。

数据操纵语言 (Data Manipulation Language, DML)

负责对数据库对象运行数据访问工作,包括查询、插入、更新与删除数据,是进行数据操纵时与数据库系统交互的指令。

安装MySQL Server

学习具体的SQL语法之前,我们先熟悉一个开源的数据库实现MySQL。在熟悉MySQL的过程中来学习SQL语法,能够让我们看到实际的操纵效果,加深我们的理解。我们先来装MySQL服务器吧。

我们选择MySQL的开源社区版——MySQL Community Server。在MySQL官方下载页面选择合适的平台和版本,进行下载。

Mac环境

Mac环境我们一般选择DMG格式的安装包,下载完成后,按提示进行安装即可。

1.png

Windows环境

Windows环境下,我们根据系统选择相应的ZIP格式安装包。

2.png

下载完成后解压到合适的位置中,我们将解压后的地址假设为MYSQL_HOME。解压完成后,我们需穴ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq9q015U1FMtcRiaW7Ev8K8zO2809bBu7e+s7Hkwb9QYXRo1tCho734yOu/2NbGw+aw5SAtJmd0OyDL+dPQv9jWxsPmsOXP7iAtJmd0OyDPtc2zIC0mZ3Q7ILjfvLYgLSZndDsgu7e+s7Hkwb+jrNTaUGF0aLrzzO280ztNWVNRTF9IT01FL2JpbqOs0N64xLu3vrOx5MG/tcTP6s+4sr3W6LK71NnXuMr2o6y/ybLO1dVKYXZhv6q3oru3vrOwstew0+vF5NbDoaM8L3A+CjxoNCBpZD0="验证mysql-server">验证MySQL Server

安装完成后,我们打开命令行,通过以下命令查看是否安装成功:

mysql --version

如果看到类似下列Mysql信息,则说明安装成功

mysql  Ver 14.14 Distrib 5.1.63, for apple-darwin10.3.0 (i386) using readline 5.1

安装成功后,可以输入以下命令登录Mysql Server:

mysql -u root -p

登录成功后我们就能通过SQL语句操作数据库,例如,当我们输入命令show databases;我们就能看见当前MySQL服务器下的所有数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

这都是MySQL自带的数据库,用以保存其自身的数据。我们可以输入use mysql;进入到mysql数据库中。

输入命令show tables就能看到当前数据库中的所有表:

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

这时我们就行进行数据库表的增删改查了。比如我们将help_category中的数据全部取出来:

mysql> select * from help_category;
+------------------+-----------------------------------------------+--------------------+-----+
| help_category_id | name                                          | parent_category_id | url |
+------------------+-----------------------------------------------+--------------------+-----+
|                1 | Geographic                                    |                  0 |     |
|                2 | Polygon properties                            |                 35 |     |
|                3 | Numeric Functions                             |                 39 |     |
|                4 | WKT                                           |                 35 |     |
|                5 | Plugins                                       |                 36 |     |
|                6 | Control flow functions                        |                 39 |     |
|                7 | MBR                                           |                 35 |     |
|                8 | Transactions                                  |                 36 |     |
|                9 | Help Metadata                                 |                 36 |     |
|               10 | Account Management                            |                 36 |     |
|               11 | Point properties                              |                 35 |     |
|               12 | Encryption Functions                          |                 39 |     |
|               13 | LineString properties                         |                 35 |     |
|               14 | Miscellaneous Functions                       |                 39 |     |
|               15 | Logical operators                             |                 39 |     |
|               16 | Functions and Modifiers for Use with GROUP BY |                 36 |     |
|               17 | Information Functions                         |                 39 |     |
|               18 | Storage Engines                               |                 36 |     |
|               19 | Bit Functions                                 |                 39 |     |
|               20 | Comparison operators                          |                 39 |     |
|               21 | Table Maintenance                             |                 36 |     |
|               22 | User-Defined Functions                        |                 36 |     |
|               23 | Data Types                                    |                 36 |     |
|               24 | Compound Statements                           |                 36 |     |
|               25 | Geometry constructors                         |                 35 |     |
|               26 | GeometryCollection properties                 |                  1 |     |
|               27 | Administration                                |                 36 |     |
|               28 | Data Manipulation                             |                 36 |     |
|               29 | Utility                                       |                 36 |     |
|               30 | Language Structure                            |                 36 |     |
|               31 | Geometry relations                            |                 35 |     |
|               32 | Date and Time Functions                       |                 39 |     |
|               33 | WKB                                           |                 35 |     |
|               34 | Procedures                                    |                 36 |     |
|               35 | Geographic Features                           |                 36 |     |
|               36 | Contents                                      |                  0 |     |
|               37 | Geometry properties                           |                 35 |     |
|               38 | String Functions                              |                 39 |     |
|               39 | Functions                                     |                 36 |     |
|               40 | Data Definition                               |                 36 |     |
+------------------+-----------------------------------------------+--------------------+-----+
40 rows in set (0.00 sec)

我们看到表中有40条记录,对应于MySQL帮助信息的40个分类。注意这里只是为了让大家了解MySQL的命令行控制台的使用,一般情况下我们是不需要也不应该去修改MySQL自带的数据库。

安装MySQL Workbench

大家对SQL语法可能还不是很了解,对于通过命令行直接与数据库进行交互不太习惯。没关系,MySQL为我们提供了一个图形界面–MySQL Workbench,我们可以通过图形界面对数据库进行操作。

我们首先进行MySQL Workbench 官方下载页面下载MySQL Workbench,对于Mac系统以及Windows系统都有相应的安装包,下载后直接安装即可。

使用MySQL Workbench连接数据库

打开MySQL Workbench,我们可以看到如下界面:

3.png

点击左上角的加号,创建一个新的连接,根据提示依次以下信息:

Connection Name:连接名,自定义即可 Hostname:数据库地址,我们的MySQL Server在本地,填写127.0.0.1即可 Username:用户名,这里我们使用root Password:密码,如果没有设置默认密码为空

4.png

创建成功后,单击【localhost】即可进入数据库:

5.png

创建数据库

点击数据库按钮创建一个测试数据库:

6.png

输入数据库名称test,为了编码出现中文字符乱码的问题,在创建数据库时需要指定数据库的默认字符编码,这里我们选择字符编码default - default collation:

7.png

点击【Apply】,MySQL Workbench会根据你的输入自动生成SQL语句。检查SQL语句无误,再次点击【Apply】,即可成功创建数据库。我们可以在左下角的数据库列表中看到新建的数据库test:

8.png

创建数据库表

右键【test数据库】,将`test`数据库设置为此次连接的默认数据库,接下来的所有操作都将在`test`数据库下进行操作:

屏幕快照 2016-02-24 上午1.24.01.png

打开`test`数据库的折叠菜单,右键Tables,选择【Create Table…】创建数据库表:

屏幕快照 2016-02-24 上午1.21.15.png

按照提示输入数据库表的相关信息,这里我们只填以下两个信息:

数据库表名:使用test作为数据表名 字段:为test表添加一个title字段,数据类型为VARCHAR(255)

9.png

点击【Apply】,MySQL Workbench同样会根据你的输入自动生成SQL语句。检查SQL语句无误,再次点击【Apply】,即可成功创建数据库表`test`。我们可以在左下角数据库test的Tables菜单下看到我们新建的`test`表:

10.png

查看并操作数据

右键【test表】,选择【Select Rows…】即可查看test表中的数据。

屏幕快照 2016-02-24 上午1.33.39.png

我们可以看到,在1区域显示了查看test表数据所对应的SQL语句,在2区域显示了test表的前1000条数据,目前`test`表中还没有任何数据:

11.png

双击2区域中的【null】标识,进入编辑模式,为`test`表添加第一条数据,添加完成后,单击【Apply】,MySQL Workbench将生成向test表插入一条数据的SQL语句。再次点击【Apply】,执行SQL语句,成功将数据插入`test`表。

12.png

再次右键【test表】,选择【Select Rows…】,查看test表中的数据,发现test表中有一条记录。

当我们通过web界面对数据库进行操作时,我们可以通过MySQL Workbench随时查看我们的操作是否正确。

通过SQL语句与数据库交互

无论我们对数据库进行何种操作,MySQL Workbench实际上都会帮我们转化为SQL语句。当然,我们还可以直接告诉MySQL Workbench最终的SQL语句,MySQL Workbench直接执行即可。

单击坐上角【create new sql tab…】按钮,将出现一个新的窗口:

13.png

在窗口中输入希望运行的SQL语句,单击【运行】按钮即可:

14.png

 

延伸阅读:

  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规