- MySQL 8.0从入门到实战
- 张文亮编著
- 1832字
- 2024-12-27 21:25:53
2.2 连接数据库和基本信息查询
数据库设计好了,本节就来连接数据库并进行基本信息查询。
2.2.1 连接数据库
要连接到SQL服务器,需要在调用MySQL时提供用户名,并且很可能需要提供密码。如果SQL服务器在其他计算机上运行,还必须指定主机名。此时应联系管理员,了解该使用哪些连接参数来进行连接(即使用的主机、用户名和密码)。当知道正确的参数之后,可以执行如下命令进行连接:
shell> mysql -h host -u user -p Enter password: ********
host和user分别代表运行的MySQL服务器的主机名和MySQL账户的用户名。********代表密码,当MySQL显示“Enter password:”提示时,输入账户对应的密码。如果输入密码正确,那么会看到如下信息:
shell> mysql -h host -u user -p Enter password: ******** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 25338 to server version: 8.0.25-standard Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
出现“mysql>”提示符就表示可以输入SQL语句了。
如果在运行MySQL的同一台计算机上登录,则可以省略主机名,只需执行以下命令:
shell> mysql -u user -p
如果在尝试登录时收到错误提示信息,例如ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2),则表示MySQL服务器守护程序(在UNIX操作系统中)或服务(在Windows操作系统中)未运行,也就是需要启动MySQL服务。
2.2.2 基本信息查询
本小节将介绍信息查询的基本原则,通过几个查询示例来熟悉MySQL的工作原理。
例2.4 查询服务器的版本号和当前日期。在“mysql>”提示符后面输入如下命令,然后按Enter键:
这是一个简单的查询,说明了有关MySQL查询的几点信息:
(1)查询通常由以分号结尾的SQL语句组成(有一些例外可以省略分号,QUIT语句就是其中之一)。
(2)当我们输入查询语句后,MySQL将它发送到服务器执行并显示结果,然后显示出下一个“mysql>”提示符,表明它已准备好接收另一个查询。
(3)MySQL以表格形式(行和列)显示查询的结果。第一行是列的标签(或称为列名),其他行是查询的结果。通常列标签是从数据库表中提取的列名称。如果要检索表达式的值而不是表列的值,那么MySQL会使用表达式本身来标记该列。
图2-2 SQL关键字不区分字母大小写示例
(4)MySQL显示返回了多少行数据以及执行查询用了多长时间,由此我们大致可以了解服务器的性能。不过这些值是不精确的,因为它们代表的是时钟时间,并且受到服务器负载和网络延迟等因素的影响。
例2.5 使用不同字母大小写进行相同内容的查询。
mysql> SELECT VERSION(), CURRENT_DATE; mysql> select version(), current_date; mysql> SeLeCt vErSiOn(), current_DATE;
查询结果如图2-2所示,在查询时,输入的SQL语句中的关键字可以不区分字母大小写,最后输出的答案是一致的,也不会抛出任何异常。
例2.6 把MySQL用作计算器。
执行结果如图2-3所示,MySQL给出了计算结果。
例2.7 用分号分隔多条SQL语句。
执行结果如图2-4所示,可以在一行中输入多条SQL语句(或命令),每条SQL语句之间只需用分号分隔即可。
图2-3 MySQL作为计算器
图2-4 一行执行多条SQL语句
例2.8 MySQL可以写成多行的形式,最后带上终止分号即可。
上述SQL语句的执行结果如图2-5所示。如果一条SQL查询语句冗长,在一行内写不下,那么可以写成多行的形式,最后带上终止分号即可,因为MySQL不是在每一行的末尾去找代表SQL语句结束的分号,而是在多个连续行去找分号来确定语句的结束位置。(MySQL接收自由格式的输入,在看到分号之后才会执行当前的SQL查询语句),当我们不输入分号时,之前输入的命令是不会被执行的。
例2.9 取消查询。
mysql> select -> users -> \c mysql>
执行结果如图2-6所示,当输入“\c”之后,当前输入的命令就被取消执行了。
图2-5 多行查询
图2-6 取消执行当前输入的SQL命令
需要注意的是,在输入取消命令“\c”之后,MySQL回到“mysql>”提示符状态,表示已准备好接收新的查询。表2-11总结了MySQL显示不同提示符时所处的状态。
表2-11 MySQL所处状态的含义
(1)当以单行输入查询语句时,如果忘记以分号结尾,那么MySQL会一直等待我们输入“;”:
mysql> select user() ->
如果发生这种情况(我们认为已经输入完成一条查询语句,而唯一的响应是“->”提示符),那么很可能就是MySQL在等待分号。输入分号之后,MySQL才会开始执行输入的SQL查询语句:
(2)“'>”和“">”提示符表示当前正处于字符串的收集过程中(即表示MySQL正在等待用户输入表示字符串终止的配对符号)。在MySQL中,我们可以编写由一对“'”或一对“"”作为起止的字符串,而MySQL允许输入跨多行的字符串。当看到“'>”或“">”提示符时,表示输入了包含以“'”或“"”开头的字符串,但尚未输入终止字符串的配对引号。例如:
mysql> select * from mytable where name = 'clay and age <18; '>
如果输入此select语句,然后按Enter键并等待结果,则没有任何反应。此时我们需要注意“'>”提示符提供的线索。它其实是告诉我们:MySQL希望看到字符串的其余部分(语句中clay开始的字符串缺少了第二个单引号)。此时我们可以选择输入“\c”取消本次查询语句的执行:
mysql> select * from mytable where name = clay and age < 18; '> '\c mysql>
提示符又变回“mysql>”,表明MySQL再次就绪,可以接收新的查询。