MySQL数据库简介及应用

简介

MySQL这款软件提供了一个非常快速,多线程,多用户和强悍的SQL(结构化查询语言)数据库器。MySQL服务器是为关键任务,重载生产系统,以及嵌入到大规模部署的软件。

教程目录

1,连接和断开服务器

2,进入查询

3,创建和使用数据库

4,获取数据库和表信息

5,批量使用mysql

6,常用查询样例

7 ,MysQL配合Apache使用

本章通过展示如何使用MysQL客户端程序创建和使用一个简单的数据库来介绍MysQL。mysql(有时被称为“终端监视器”或仅仅是“监视器”)是一个交互式程序,它允许你连接到mysql服务器,运行查询,并查看结果。Mysql也可以在批处理模式下使用:你事先将你的查询放在一个文件中,然后告诉mysgl执行文件的内容。

这里介绍了两种使用mysql的方法要查看mysql提供的选项列表,请使用–help选项调用它:

$> mysql --help

1连接和断开服务器

为了连接到服务器,您通常需要在调用MySQL时提供一个MySQL用户名,很可能还需要一个密码。如果服务器运行在您登录的机器以外的机器上,您还需要指定一个nost名称。联系您的管理员,了解您应该使用什么连接参数进行连接(即,使用什么主机、用户名和密码)。一旦你知道了合适的参数,你应该能够像这样连接:

$> mysql -h host -u user -p
Enter password: ********

host和user表示MySQL服务器运行的主机名和MySQL帐户的用户名。为您的设置替换适当的值。*****代表您的密码,当mysql出现“enter password:”提示时输入。

如果你在MySQL运行的同一台机器上登录,你可以省略主机,只需使用以下命令:

$> mysql -u user -p

mysql>提示符告诉你mysql已经准备好让你输入SQL语句了:

mysql>

当你连接成功后,你可以在mysql>提示符下输入QUIT (or \q) 来断开连接:

mysql> QUIT
Bye

在Linux上,您也可以通过按下Control+D来断开连接。

2 进入查询

如前一节所述,确保您已连接到服务器。这样做本身并不选择要使用的任何数据库,但这是可以的。此时,更重要的是了解如何发出查询,而不是直接创建表、将数据加载到表中并从中检索数据。本节描述了输入查询的基本原则,您可以尝试使用几个查询来熟悉mysql的工作方式。下面是一个简单的查询,它要求服务器告诉您它的版本号和当前日期。在mysgl>提示符下输入,然后按Enter键:

mysql> SELECT VERSION(), CURRENT_DATE;
±-------------±-------------+
| VERSION() | CURRENT_DATE |
±-------------±-------------+
| 5.7.1-m4-log | 2012-12-25 |
±-------------±-------------+
1 row in set (0.01 sec)
mysql>

这个查询说明了关于mysql的一些事情:查询通常由后面跟着分号的SQL语句组成。(有一些例外,分号可以省略。前面提到的guIr就是其中之一。我们稍后会讲到其他内容。)当你发出一个查询时,mysql将它发送到服务器执行,并显示结果,然后打印另一个mysgl>提示,表明它准备好进行另一个查询。Mysql以表格形式(行和列)显示查询输出。第一行包含列的标签。下面的行是查询结果。通常,列标签是从数据库表中获取的列的名称。如果检索的是一个表达式的值,而不是一个表列(如刚才所示的例子),mysql使用表达式本身来标记该列。Mysql显示了返回了多少行以及查询执行了多长时间,这让您大致了解了服务器的性能。这些值是不精确的,因为它们表示挂钟时间(而不是CPU或机器时间),而且它们受到服务器负载和网络延迟等因素的影响。(为了简单起见,“rows in set”行有时不会在本章的其余示例中显示。)关键字可以输入在任何字母。以下查询是等价的:
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;

这是另一个问题。它演示了你可以使用mysql作为一个简单的计算器:
mysql> SELECT SIN(PI()/4), (4+1)*5;
±-----------------±--------+
| SIN(PI()/4) | (4+1)*5 |
±-----------------±--------+
| 0.70710678118655 | 25 |
±-----------------±--------+
1 row in set (0.02 sec)

到目前为止显示的查询都是相对较短的单行语句。您甚至可以在一行中输入多个语句。用分号结尾:
mysql> SELECT VERSION(); SELECT NOW();
±-----------------+
| VERSION() |
±-----------------+
| 5.7.10-ndb-7.5.1 |
±-----------------+
1 row in set (0.00 sec)

±--------------------+
| NOW() |
±--------------------+
| 2016-01-29 18:02:55 |
±--------------------+
1 row in set (0.00 sec)

查询不需要在一行中给出所有的内容,因此需要数行的冗长查询不是问题。Mysql通过查找终止分号来确定语句的结束位置,而不是通过查找输入行结束。(换句话说,mysql接受自由格式的输入:它收集输入行,但直到看到分号才执行它们。)下面是一个简单的多行语句:
mysql> SELECT
-> USER()
-> ,
-> CURRENT_DATE;
±--------------±-------------+
| USER() | CURRENT_DATE |
±--------------±-------------+
| jon@localhost | 2010-08-06 |
±--------------±-------------+

在本例中,请注意在输入多行查询的第一行后,提示符如何从mysql>更改为->。这就是mysql如何表明它还没有看到一个完整的语句,正在等待剩下的语句。提示是你的好友,因为它提供了有价值的反馈。如果你使用这些反馈,你就可以知道mysql在等待什么。如果你决定你不想执行你正在输入的查询,通过输入\c:

mysql> SELECT
-> USER()
-> \c
mysql>

这里也要注意提示符。在你输入\c后,它切换回mysql>,提供反馈,表明mysql已经准备好进行新的查询。下表显示了您可能看到的每一个提示,并总结了它们对mysql所处状态的含义。

提示意义
mysql>准备执行新的查询
->等待多行查询的下一行
">等待下一行,等待以单引号(’)开头的字符串完成
`>等待下一行,等待以双引号(")开头的字符串完成
/*>等待下一行,等待以反勾()开头的标识符完成等待下一行
/*>等待以*/开头的注释完成

当您打算在单行上发出查询,但忘记结束分号时,通常会意外地出现多行语句。在这种情况下,mysql等待更多的输入:
mysql> SELECT USER()
->

如果这种情况发生在您身上(您认为您已经输入了一个语句,但唯一的响应是一个->提示符),很可能mysql正在等待分号。如果你没有注意到提示告诉你什么,你可能会在那里坐一会儿才意识到你需要做什么。输入分号完成语句,mysql执行它:
mysql> SELECT USER()
-> ;
±--------------+
| USER() |
±--------------+
| jon@localhost |
±--------------+

‘>和’>提示发生在字符串收集期间(另一种方式表示MySQL正在等待一个字符串完成)。在MysQL中,你可以写由’或’字符包围的字符串(例如,‘hello’或’ goodbye ‘), MysQL允许你输入跨多行字符串。当您看到’>或’>提示符时,这意味着您已经输入了包含以’或’ '引号开头的字符串的行,但还没有输入匹配的引号以结束字符串。这通常表示您无意中遗漏了一个引用字符。例如:
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
'>

如果您输入这个SELECr语句,然后按enter键并等待结果,什么也不会发生。不要疑惑为什么这个查询花了这么长的时间,请注意’>提示符提供的线索。它告诉你mysql希望看到一个未结束字符串的剩余部分。你看到声明中的错误了吗?字符串’Smith缺少第二个单引号。)在这一点上,你会怎么做?最简单的方法是取消查询。然而,在这种情况下,你不能只输入\c,因为mysql将其解释为它正在收集的字符串的一部分。相反,输入结束引号字符(这样mysql就知道你已经完成了字符串),然后输入\c:

mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
'> '\c
mysql>

提示符返回到mysql>,表明mysql已经准备好进行新的查询。“>”提示符类似于“>”和“>”提示符,但它表示您已经开始使用后引号引号括起来的标识符,但还没有完成。了解‘>’、‘>’和‘>提示符表示什么是很重要的,因为如果您错误地输入了一个未终止的字符串,那么您输入的任何其他行都会被mysql忽略——包括包含QUI的行。这可能非常令人困惑,特别是如果您不知道在取消当前查询之前需要提供终止报价的话。

请注意从此以后,编写多行语句时将不需要辅助(->或其他)提示,以便更容易地复制和粘贴语句。

待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值