MySQL入门_实战2_MYSQL的登录和断开以及SQL查询常见问题

发布于:2022-12-24 ⋅ 阅读:(344) ⋅ 点赞:(0)


MYSQL的登录和断开以及SQL查询常见问题

1.登录数据库

通过windows的dos命令窗口
Win键 + R键,输入cmd
在这里插入图片描述

  • 要连接到服务器,在调用MySQL时,通常需要提供MySQL用户名和密码。如果服务器运行在您登录的机器以外的计算机上,则还必须指定一个主机IP。知道这些信息后,就可以连接数据库。
    格式如下:

> mysql -h host-u user -p

参数详解:
-h :MySQL服务器的主机,对应host
-u:MySQL帐户的用户名,对应user
-p:密码

根据你的环境的替换成相应的值

如果您在运行MySQL的同一台机器上登录,那么可以忽略-h host,使用以下格式:


> mysql -u root -p

如果登录成功,你会看到一些介绍性的信息,然后是一个mysql>提示符
在这里插入图片描述
当您试图登录时,如果得到一个错误消息,例如

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql. sock’ (2)

表示MySQL服务器守护进程(Unix)或服务(Windows)没有运行。请参考 MySQL入门_实战1_安装数据库 章节内容。

2.断开数据库

成功连接后,您可以在mysql>提示符后输入exit、quit(或\q)随时断开连接。

mysql> exit
Bye
或者
mysql> quit
Bye
或者
mysql> \q
Bye

在Linux或者Unix上,您也可以通过按下Ctrl + D键来断开连接。

3.SQL查询常见问题

  • 请确保您已连接到数据库服务器。本节介绍了输入查询的基本原则,并您可以通过几个查询来熟悉mysql的工作原理。

下面是一个简单的查询,它要求服务器返回它的版本号和当前日期。在mysql>提示下输入如下所示,然后按Enter:

mysql> SELECT VERSION(), CURRENT_DATE;
+-----------+--------------+
| VERSION() | CURRENT_DATE |
+-----------+--------------+
| 8.0.30    | 2022-09-08   |
+-----------+--------------+
1 row in set (0.01 sec)

通过这个查询说明了关于mysql的一些事情:

  • 查询通常由一个SQL语句后跟一个分号组成。(也有一些例外可以省略分号。前面提到的QUIT就是其中之一。我们稍后再讨论其他问题。)
  • 当您发出查询时,mysql将其发送到服务器进行执行并显示结果,然后打印另一个mysql>提示符,以表明它已经准备好进行另一个查询。
  • mysql以表格形式(行和列)显示查询输出。第一行包含这些列的标签。下面各行是查询结果。通常,列标签是您从数据库表中获取的列的名称。如果要检索表达式的值而不是表列,例如上面例子中的VERSION(),mysql将使用表达式本身对该列进行标签。
  • mysql显示了返回了多少行以及执行查询时所需的时间,这让您对服务器性能有了一个粗略的概念。

关键字可以用任何字母大小组合输入。以下查询是等效的,但是建议大家规范书写。

mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;

这是另一个查询,它演示了您可以使用mysql作为一个简单的计算器:

mysql> SELECT (1+2)*5;
+---------+
| (1+2)*5 |
+---------+
|      15 |
+---------+

到目前为止,所显示的查询都是相对较短的单行语句。您甚至可以在一行上输入多个语句。每个字母的结尾都有一个分号:

mysql> SELECT VERSION(); SELECT NOW();
+-----------+
| VERSION() |
+-----------+
| 8.0.30    |
+-----------+
1 row in set (0.00 sec)

+---------------------+
| NOW()               |
+---------------------+
| 2022-09-08 21:56:41 |
+---------------------+
1 row in set (0.00 sec)

mysql>

查询不需要在一行上全部给出,因此需要几行的冗长查询不是问题。mysql通过查找分号而不是查找输入行的结尾来确定语句的结束位置。(换句话说,mysql接受自由格式的输入:它接收输入行,但直到看到分号时才执行它们。)
下面是一个简单的多行语句:

mysql> SELECT
    -> USER()
    -> ,
    -> CURRENT_DATE;
+----------------+--------------+
| USER()         | CURRENT_DATE |
+----------------+--------------+
| root@localhost | 2022-09-08   |
+----------------+--------------+
1 row in set (0.01 sec)

mysql>

在本例中,请注意在输入多行查询的第一行后,提示符如何从mysql>更改为->。这就是mysql表示它还没有看到完整的语句,正在等待SQL其余部分。提示符是很有帮助,因为它提供了有价值的反馈。您根据这个反馈可以随时知道mysql在等待什么。

如果您决定不执行正在输入的查询,请输入\c取消它:

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

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

提示符 含义
mysql> 为新查询做好准备
-> 正在等待多行查询的下一行输入
'> 等待下一行,等待以单引号(‘)开头的字符串的完成
"> 等待下一行,等待以双引号(“)开头的字符串的完成
`> 等待下一行,等待完成以后退勾行开始的标识符(`)
/*> 等待下一行,等待以/*开头的注释完成

当您打算在单行上发出查询,但忘记了加分号时,通常会意外地出现多行语句提示符 ->。在这种情况下,mysql等待继续输入:

mysql> SELECT USER()
 ->

如果这种情况发生在您身上(您认为您已经输入完成了一个语句,但是返回的却是一个->提示符),那么很可能是mysql正在等待分号。如果你没注意到提示符,在那儿干坐着等了一会儿,然后才意识到你忘记加分号了。此时输入一个分号,然后mysql就会执行它:

mysql> SELECT USER()
    -> ;
+----------------+
| USER()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

mysql>

‘>“>提示发生在字符串接收期间(另一种说法,MySQL正在等待字符串输入完成)。在MySQL中,您可以编写由''“字符”包围的字符串(例如,'hello'“再见”),并且MySQL允许您输入跨越多行的字符串。当您看到‘>“>提示符时,这意味着您输入了一行包含以"引号字符开头的字符串,但尚未输入终止该字符串的匹配引号。这通常表明您无意中遗漏了一个引号。例如:

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

如果输入此SQL,然后按enter并等待结果,则什么都不会发生。不要想为什么这个查询需要这么长时间,请注意'>提示符提供的线索。它告诉您,mysql希望看到一个未终止的字符串的其余部分。

(你发现上面语句中的错误了吗?字符串'Smith'缺少第二个单引号。)

如果遇到这种情况,你会做什么?最简单的方法是取消该查询。但是,在这种情况下,您不能只键入\c,因为mysql将其解释为它正在接收的字符串的一部分。相反,输入结束的单引号字符('),这样mysql知道您已经完成了字符串),然后键入\c:

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

提示符变回mysql>,表明mysql已经准备好进行新的查询,重新输入正确的SQL。

SELECT * FROM my_table WHERE name = 'Smith' AND age < 30;

通过本节练习,您可以掌握MYSQL的登录和断开以及SQL查询中常见的问题。

如果该文章有帮助到您,请 点赞 支持,谢谢!
有任何疑问,欢迎在评论中留言。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到