1. MySQL服务器简介
MySQL是由瑞典公司于1995年开发的开源关系数据库管理系统。MySQL是一个开源系统,它已被Facebook,Google,Twitter,Flickr和Youtube等众多著名公司使用。 MySQL服务器还是开源Web应用程序框架LAMP的核心组件。 MySQL数据库服务器是用C和C ++编写的,并使用词法分析器处理SQL查询。
Sun Microsystems于2008年收购了MySQL服务器,后来又被Oracle收购了Sun Microsystem。 创始人在被Sun Microsystems收购时分叉MySQL并推出了Maria DB,但是MySQL保持了其在市场中的地位,并被许多组织所使用。
在本文中,我们将讨论有关MySQL服务器的安装。 接下来,我们将带您了解SQL查询的一些基础知识,并说明如何执行它们。 稍后,我们将继续讨论一些复杂的查询结构,例如MySQL中的联接和子查询。
目录
2.安装MySQL服务器
MySQL服务器具有多种变体,具体取决于数据库体系结构和许可证首选项。 可用的变体是:
自由:
商业:
在整个教程中,我们将使用MySQL Community Server及其功能。 为了安装MySQL社区服务器,请转到其下载页面 。
滚动到页面底部,您将找到下载列表和一个选择框,以选择操作系统。 根据需要选择操作系统。
选择操作系统后,建议下载以下设置:
MacOS: dmg存档
Linux变体:根据您的体系结构对应的DEB包。 在Ubuntu和Debian之类的Linux变体中,现在也可以使用apt仓库进行安装。
Windows: exe可执行文件
下载相关设置后,请按照以下步骤进行安装:
2.1在MacOS中安装
在MacOS中,双击下载的.dmg文件开始安装。 它将显示类似于以下所示的屏幕。 接受许可证并选择安装位置。 选择位置后,它将显示安装将占用的空间量,如下所示。
单击安装后,将继续安装并安装MySQL服务器。 下一步是配置MySQL服务和root用户密码。 记住输入的密码很重要,因为它是创建更多用户所需的管理员密码。 配置服务名称和凭据,然后单击完成。
2.2在Windows中安装
Windows OS中的安装过程与MacOS非常相似。 执行您现在必须已经下载的.exe文件。 只要该exe与您的系统兼容,安装程序便会启动并顺利进行。
将会显示类似于上图所示的窗口。 提示时选择安装位置。 您可以选择仅继续安装服务器。 完全安装基本上也可以安装一堆SQL实用程序,这可能不是必需的。 安装完成后,下一步就是配置数据库服务器凭据。 配置凭据并完成安装过程。
2.3在Linux变体中安装
对于Linux变体,MySQL服务器安装程序以.deb文件形式提供。 .deb文件使您可以按照上述类似的方式完成该过程。 但是,对于喜欢命令行的人,也可以使用命令行安装mysql服务器。 MySQL服务器可通过apt,yum和zypper存储库使用 。 此外,我们将讨论使用apt信息库安装MySQL服务器。
为了设置apt信息库以安装MySQL服务器,请执行以下步骤并执行必要的命令。
- 从此链接中选择正确的apt软件包名称。 名称格式为mysql-apt-config_x.x.xx-x_all.deb。
- 下载相应的包
- 下载后,执行以下命令。
$ sudo dpkg -i /PATH/version-specific-package-name.deb
- 在上述软件包的安装过程中,提示安装时输入要安装的版本
- 配置完成后,运行以下命令更新apt信息库。
$ sudo apt-get update
- 要最终安装MySQL服务器,请执行以下命令。
sudo apt-get install mysql-server
- 安装后,服务器将通过启动相关服务自动启动。 您可以使用以下命令检查状态。
sudo service mysql status
3.连接到MySQL数据库
命令行在启动每个应用程序时都面临挑战。 即使对于MySQL,您也可能面临挑战,尤其是在MacOSX方面。 首先,我们将了解如何在Windows中使用命令行连接到MySQL数据库。
3.1使用Windows命令提示符连接到MySQL数据库服务器
连接到MySQL服务器之前,您需要确保相关服务已启动并正在运行。 为了检查,通过在开始菜单中搜索服务并检查MySQL56服务的服务列表,导航到服务列表。 服务状态指示MySQL服务器是启动还是停止。 一旦确定它正在运行,我们可以使用命令提示符连接到服务器。 Windows命令主要在PATH环境变量上起作用。 只要路径环境变量具有MySQL安装的bin位置条目,就可以直接使用所有mysql命令。 如果没有MySQL安装路径的条目,则可以导航到MySQL Server安装文件夹。 进入bin文件夹,然后从该文件夹中打开终端。
进入终端后,需要输入以下命令:
> mysql -u root -p
这应该使用上面命令中指定的用户名root连接到mysql服务器。 它将要求输入密码,如-p标志所示。 输入开头配置的密码,您将看到如下所示的MySQL提示。
该提示使您可以使用简单的SQL查询与MySQL数据库进行交互。 我们将在后面的部分中看到相同的内容。
您还可以使用mysql
命令连接到其他远程数据库,并使用终端与远程数据库进行交互。 为此,您需要使用以下命令。 在命令中传递的属性很容易解释。
> mysql --host=localhost --user=myname --password=password mydb
3.2使用Linux Terminal连接到MySQL数据库服务器
使用Linux终端连接到MySQL服务器与使用Windows命令提示符连接到它非常相似。 首先,请确保MySQL服务器已启动并正在运行。 为了检查MySQL服务器的进程确实在运行,请键入以下命令:
$ ps -eF|grep mysql
该命令提供了正在运行的MySQL进程的列表。 查找除刚刚执行的grep进程以外的进程。 如果MySQL服务器未运行,则可以在大多数发行版中使用以下命令启动它。
$ service mysqld start
服务器启动后,键入以下命令以root用户身份连接到数据库。
$ mysql -u root -p
输入密码,您应该能够看到类似于上面显示的提示。 如上所示,应该允许您在窗口中进入类似的MySQL提示符。
3.3使用MacOS终端连接到MySQL数据库服务器
在MacOS中,考虑到UI角度,启动和停止服务器的过程非常不同。 在MacOS中,为了检查状态或启动或停止服务器,您需要转到“ 系统偏好设置” 。 在系统偏好设置中,您应该能够在底部区域中找到MySQL图标,如下所示。
单击MySQL图标,以查看服务状态。 将显示类似于以下所示的窗口。 只需单击按钮,即可从此处停止或启动服务器。
如上图所示,还可以直接从上面的窗口重新初始化数据库并为root设置新密码。 为了重置密码并重新初始化数据库,只需单击“初始化数据库”按钮。 它将要求输入新密码,一切准备就绪。
一旦确定服务器已启动并正在运行,下一步就是使用与上述相同的命令连接到数据库服务器。 输入下面显示的命令以连接到数据库服务器。
$ mysql -u root -p
4.连接到架构并执行查询
连接到数据库服务器后,就该执行查询了。 与操作系统无关,使用命令提示符进行查询的过程执行对于所有用户都是相同的。 本节将介绍与执行SQL查询有关的所有基本操作。
4.1创建和检查架构
使用MySQL数据库的第一步是创建一个架构。 使用以下命令创建架构。
mysql> create schema tutorial;
在这里,教程可以替换为您想要的模式名称。 为了执行查询,请在mysql提示符下键入它,如上所示。 键入后,只需按Enter。 它将给出一条成功消息,指出受影响的1行。 如果没有,请确保在查询后加上分号。 万一错过,将会有一个带有“>”箭头的提示。 如果出现这样的提示,则需要输入分号并按Enter。
因此,将创建一个新的架构。 为了确认相同,您可以使用以下命令查看架构列表。
mysql> show schemas;
如上图所示,模式列表以格式化的控制台输出显示。 您可能会看到略有不同的输出,具体取决于您创建的模式的数量。 如果您精确地遵循了本教程,则列表应在列表中仅显示一个架构。
4.2选择架构并创建表
创建架构后,下一步是选择架构并在其中创建表。 要开始选择模式,请使用刚创建的模式名称执行以下命令。
mysql> use tutorial
请注意,在此语句中,语句末尾的分号不是真正必需的。 执行以上命令后,您应该能够看到输出Database Changed
。 选择数据库模式后,请使用以下命令验证选择。
mysql> select database() from dual;
该查询将以与上面所示类似的格式输出所选数据库的名称。 下一步是在架构中创建第一个表。 我们将考虑一个博客网站的用例来创建表格。 因此,使用以下查询创建两个表,用户和文章。
mysql> CREATE TABLE `tutorial`.`users` (`userid` INT NOT NULL,`name` VARCHAR(45) NULL,`email` VARCHAR(100) NULL,`password` VARCHAR(24) NULL, PRIMARY KEY (`userid`));
Table Created
mysql> CREATE TABLE `tutorial`.`articles`(`articleid` INT NOT NULL,`content` TEXT NULL,`userid` INT NULL,PRIMARY KEY (`articleid`), INDEX `user_fk_idx` (`userid` ASC),CONSTRAINT `user_fk` FOREIGN KEY (`userid`) REFERENCES `tutorial`.`users` (`userid`) ON DELETE NO ACTION ON UPDATE NO ACTION);
Table Created
一个接一个地执行查询。 执行每个查询之后,输出Table Created
应该可用。 可以使用以下命令检查创建的表列表。
mysql> show tables;
+--------------------+
| Tables_in_tutorial |
+--------------------+
| articles |
| users |
+--------------------+
2 rows in set (0.00 sec)
mysql>
因此,它将在标题中显示具有模式名称的表的列表。
4.3使用MySQL命令行在表中添加和获取数据
将数据添加到表中非常简单。 我们将只向用户表添加数据以使其简单。 执行以下查询以将数据添加到users表。
mysql> insert into users values (1,'Abhishek', 'abcd@javacodegeeks.com','mysql123');
Query OK, 1 row affected (0.08 sec)
mysql> insert into users values (2,'Dennis', 'denis@javacodegeeks.com','mysql123');
Query OK, 1 row affected (0.04 sec)
mysql>
上面的查询也显示了相关的输出。 成功插入记录后,您可以使用选择查询来检查表中表中的数据。 执行以下查询以从用户表中获取记录列表。
mysql> select * from users;
+--------+----------+-------------------------+----------+
| userid | name | email | password |
+--------+----------+-------------------------+----------+
| 1 | Abhishek | abcd@javacodegeeks.com | mysql123 |
| 2 | Dennis | denis@javacodegeeks.com | mysql123 |
+--------+----------+-------------------------+----------+
2 rows in set (0.00 sec)
从这里可以看到,命令行以控制台格式的输出显示记录列表。 列名成为表的标题,其余行成为记录。 同样,可以使用命令提示符执行几乎所有的SQL查询。
4.4更新和删除记录
一旦我们在表中有了记录,就可能需要在需要时更新或删除记录。 这可以通过使用更新和删除SQL查询来实现,如进一步说明。 在上面显示的记录中考虑用户Dennis。 可以看出,电子邮件ID对于Dennis具有拼写错误。 让我们使用更新查询进行更正。
mmysql> update users set email='dennis@javacodegeeks.com' where userid=2;
Query OK, 1 rows affected (0.39 sec)
Rows matched: 1 Changed: 1 Warnings: 0
与删除记录类似,在where子句中使用带有相应用户ID的delete查询。
mysql> delete from users where userid=2;
Query OK, 1 rows affected (0.50 sec)
4.5检查数据库表结构
在开发过程中的某些时候,您可能需要了解某个数据库表的结构。 数据库结构基本上是列列表和列的数据类型。 可以使用以下命令获取任何表的结构。
mysql> desc articles;
执行该命令后,将获得类似于以下所示的输出。 可以看出,它提供了有关数据类型,主键,默认值的详细信息,并且如果应用的话还提供了非null约束。
mysql> desc articles;
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| articleid | int(11) | NO | PRI | NULL | |
| content | text | YES | | NULL | |
| userid | int(11) | YES | MUL | NULL | |
+-----------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)
4.6预定义的MySQL函数
有时,我们希望某些任务可以在数据库中完成。 例如,我们希望计算用户数或检查当前日期和时间。 MySQL数据库预先打包有这些功能。 要检查上表中的用户数,只需执行以下查询。
mysql> select count(1) from users;
它将返回表中的用户记录数。 同样,可以使用以下查询检查当前日期和时间。
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2018-05-18 11:59:03 |
+---------------------+
1 row in set (0.00 sec)
因此,它以上述格式显示当前日期和时间。 now()
函数可用于自动设置记录的创建时间或更新时间。 除了这些功能外,还有许多其他功能,例如min(),
max()
, avg()
, sum()
and few others.
5. MySQL管理
MySQL数据库管理涉及多个任务。 但是,在这里,我们将讨论三个简单的任务,即–创建用户,向用户分配许可并删除用户。 为了创建用户,请在开始时选择mysql数据库。 选择数据库后,执行以下查询以接收输出,如下所示。
mysql> create user 'newuser'@'localhost' identified by 'newpassword';
Query OK, 0 rows affected (0.06 sec)
用户的权限可以根据要求有选择地分配。 为了将所有权限分配给新创建的用户,请执行以下查询并验证输出。
mysql> grant all on tutorial.* to 'newuser'@'localhost';
Query OK, 0 rows affected (0.04 sec)
提供授权后,您可以退出提示并尝试使用新用户进行连接。 为了退出并使用新用户重新连接,请执行以下查询。
mysql> exit
Bye
MacBook-Air:bin abhishekkothari$ ./mysql -u newuser -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.11 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
成功登录后,尝试检查架构列表。 如果以前像我一样在数据库中有其他架构,您会注意到架构列表不会显示所有架构。 输出将类似于以下所示。 第一个模式information_schema是每个用户的通用MySQL模式。 显示的第二个模式是为其提供了查看用户所需的许可的模式。
mysql> show schemas;
+--------------------+
| Database |
+--------------------+
| information_schema |
| tutorial |
+--------------------+
2 rows in set (0.00 sec)
为了删除用户,请退出命令提示符并使用root用户重新登录。 要删除最近创建的用户,请执行以下查询。
mysql> drop user 'newuser'@'localhost'
-> ;
Query OK, 0 rows affected (0.07 sec)
为了确认删除用户,您可以退出并尝试使用同一用户再次登录。 您将被拒绝此权限。 因此,我们可以创建和删除用户以及管理提供给用户的权限。
六,结论
本文详细介绍了每种流行操作系统的MySQL服务器安装过程。 除了讨论安装过程之外,还讨论了在每个操作系统中将MySQL数据库与命令行一起使用的基本知识。 因此,本文为任何开发人员提供了使用MySQL数据库服务器的入门知识。 但是,这还没有结束。 对于那些发现命令行工具笨拙并喜欢GUI而不是命令行的用户,请查看本文以了解最流行的MySQL数据库GUI工具– MySQL工作台。
翻译自: https://www.javacodegeeks.com/2018/05/mysql-server-tutorial.html