MySQL学习——连接服务器和输入查询

news2024/12/27 16:02:48

MySQL是一个流行的关系型数据库管理系统(RDBMS),由瑞典的MySQL AB公司开发,后来被Oracle公司收购。它使用SQL(结构化查询语言)作为访问和操作数据库的标准语言。

要查看 mysql 客户端程序提供的选项列表,可以使用 --help 选项来调用它。mysql 客户端是一个交互式的程序,允许连接到 MySQL 服务器、运行查询并查看结果。同时,mysql 也支持批处理模式,可以将查询预先放置在一个文件中,然后告诉 mysql 执行该文件的内容。

$> mysql --help

1 连接到服务器

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

$> mysql -h host -u user -p

Enter password: ********

在连接到MySQL服务器时,host 代表MySQL服务器运行的主机名,而 user 是你的MySQL账户的用户名。你需要根据你的具体设置替换为适当的值。******** 代表你的密码;当 mysql 显示 Enter password: 提示时,你需要输入它。

如果连接成功,你应该会看到一些介绍性的信息,随后出现一个 mysql> 提示符

$> 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.4.0-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

mysql> 提示符表示 mysql 已经准备好让你输入SQL语句了。

如果你正在MySQL服务器运行的同一台机器上登录,你可以省略主机名,并简单地使用以下命令:

$> mysql -u user -p

如果在尝试登录时收到类似“ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)”的错误消息,这意味着MySQL服务器守护进程(Unix系统)或服务(Windows系统)没有运行。

某些MySQL安装允许用户作为匿名(未命名)用户连接到在本地主机上运行的服务器。如果你的机器上也是这种情况,那么你应该能够通过不带任何选项地调用mysql来连接到该服务器:

$> mysql

2 与服务器断开连接

成功连接后,你可以在mysql>提示符下随时键入QUIT(或\q)来断开连接:

mysql> QUIT

Bye

在Unix系统上,你还可以通过按Control+D来断开连接。

以下内容中的大多数示例都假设你已经连接到了服务器。它们通过mysql>提示符来表示这一点。

当你看到mysql>提示符时,这意味着你已经成功登录到MySQL服务器,并且可以开始输入SQL命令了。在这个提示符下,你可以执行各种数据库操作,如表的创建、数据的查询和修改等。

输入查询

确保你已经按照上的说明连接到了服务器。这样做本身并不会选择任何数据库来操作,但这没关系。在这一点上,了解如何发出查询比直接创建表、向表中加载数据和从表中检索数据更重要。本节描述了输入查询的基本原则,你可以尝试几个查询来熟悉mysql的工作方式。

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

mysql> SELECT VERSION(), CURRENT_DATE;

+-----------+--------------+

| VERSION() | CURRENT_DATE |

+-----------+--------------+

| 5.8.0-m17 | 2015-12-21   |

+-----------+--------------+

1 row in set (0.02 sec)

mysql>

这个查询说明了关于mysql的几件事:

  1. 一个查询通常由一个SQL语句后跟一个分号组成。(有一些例外情况可以省略分号。前面提到的QUIT就是其中之一。我们稍后会讲到其他情况。)
  2. 当你发出查询时,mysql会将其发送到服务器以执行并显示结果,然后打印另一个mysql>提示符,表示它已准备好进行另一个查询。
  3. mysql以表格形式(行和列)显示查询输出。第一行包含列的标签。下面的行是查询结果。通常,列标签是从数据库表中获取的列的名称。如果你正在检索表达式的值而不是表列(如刚才所示的例子),mysql会使用表达式本身为列加标签。
  4. mysql显示了返回了多少行以及查询执行了多长时间,这可以让你大致了解服务器的性能。这些值是不精确的,因为它们表示的是挂钟时间(而不是CPU或机器时间),并且受到服务器负载和网络延迟等因素的影响。(为了简洁起见,在本章的剩余示例中,有时不显示“行集”行。)

关键字可以以任何字母大小写输入。以下查询是等价的:

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() |

+-----------+

| 8.0.13    |

+-----------+

1 row in set (0.00 sec)



+---------------------+

| NOW()               |

+---------------------+

| 2018-08-24 00:56:40 |

+---------------------+

1 row in set (0.00 sec)

查询不必全部写在单行上,因此需要多行的冗长查询不是问题。mysql通过寻找终止分号来确定你的语句在哪里结束,而不是通过寻找输入行的末尾。(换句话说,mysql接受自由格式的输入:它收集输入行,但在看到分号之前不会执行它们。)

以下是一个简单的多行语句示例:

mysql> SELECT

    -> USER()

    -> ,

    -> CURRENT_DATE;

+---------------+--------------+

| USER()        | CURRENT_DATE |

+---------------+--------------+

| jon@localhost | 2018-08-24   |

+---------------+--------------+

在这个例子中,请注意,当你输入多行查询的第一行后,提示符如何从mysql>变为->。这是mysql表示它还没有看到一个完整的语句,正在等待剩余部分的方式。提示符是你的朋友,因为它提供了有价值的反馈。如果你使用这些反馈,你可以始终意识到mysql正在等待什么。

如果你决定不想执行你正在输入的查询,可以通过键入\c来取消它:

mysql> SELECT

    -> USER()

    -> \c

mysql>

在这里,同样请注意提示符。在你键入\c之后,它会切换回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;

    '>

如果你输入了这个 SELECT 语句,然后按下回车并等待结果,但什么反应也没有。这时,与其纳闷为什么这个查询需要这么长时间,不如注意一下 '> 提示符提供的线索。它告诉你 mysql 正在等待一个未终止的字符串的其余部分。(你看到这个语句中的错误了吗?字符串 'Smith 缺少第二个单引号。)

在这一点上,你应该怎么做呢?最简单的方法就是取消查询。但是,在这种情况下,你不能直接键入 \c,因为 mysql 会将其解释为它正在收集的字符串的一部分。相反,你应该先输入闭合的引号字符(这样 mysql 就知道你已经完成了字符串),然后再键入 \c

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

    '> '\c

mysql>

提示符变回mysql>,表明mysql已经准备好接受新的查询。

>提示符与'>">提示符类似,但它表示你已经开始但尚未完成一个用反引号括起来的标识符。

了解'>">>提示符的含义非常重要,因为如果你错误地输入了一个未终止的字符串,你后续键入的任何行似乎都会被mysql忽略——包括包含QUIT的行。这可能会相当令人困惑,特别是如果你不知道在取消当前查询之前需要提供终止引号的话。

在实际操作中,如果你发现自己陷入了这样的困境,首先应该检查是否遗漏了引号或反引号来正确终止你的输入。一旦你补全了缺失的引号,mysql就会继续处理你的查询,或者你可以使用\c来取消它。

为了避免这种情况,建议在编写查询时保持警惕,确保所有的字符串和标识符都被正确地引用和终止。这样不仅可以避免不必要的混淆和延误,还可以提高你的工作效率和准确性。

注意

从此处开始,多行语句将不再包含次级提示符(如 -> 或其他),以便您更轻松地复制和粘贴这些语句进行尝试。

这意味着,在提供的示例中,您将不会看到在输入多行命令时MySQL通常显示的连续提示符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1712102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

合约的值类型

基本数据类型&#xff1a;整数、枚举、布尔&#xff08;类似java的数据类型&#xff09;Address、Contract&#xff08;这两种是solidity特有的数据类型&#xff09;Fixed byte array&#xff08;定长字节数组&#xff09; Integer(int/uint) int/uint 以8位字节递增&#xf…

硬盘有EFI分区格式化不了,也删不了怎么办,不能读取磁盘

问题&#xff1a;EFI为系统引导分区表明这是一块系统盘&#xff0c;常规操作无法格式化也无法删除&#xff0c;也不能读取 解决&#xff1a; 1.管理员运行cmd 2.输入diskpart 3.输入list disk 查看系统磁盘&#xff0c;并找到你格式化不了的那块磁盘 4.select disk 编号 选择…

【Go专家编程——并发控制——三剑客】

并发控制 我们考虑这么一种场景&#xff0c;协程在A执行过程中需要创建子协程A1、A2、A3…An&#xff0c;协程创建完子协程后就等待子协程退出。 针对这种场景&#xff0c;Go提供了三种解决方案&#xff1a; Channel&#xff1a;使用channel控制子协程 优点&#xff1a;实现…

【稳定检索】2024年核能科学与材料、物理应用国际会议(NESMPA 2024)

2024年核能科学与材料、物理应用国际会议 2024 International Conference on Nuclear Energy Science and Materials, Physical Applications 【1】会议简介 2024年核能科学与材料、物理应用国际会议即将拉开帷幕&#xff0c;这是一场汇聚全球核能科学、材料研究及物理应用领域…

全志T527 适配双目tp2815_mipi

一、硬件信息 TP2815&#xff1a; 确认硬件信息&#xff1a; 1、通信接口&#xff1a;TWI2总线&#xff0c;引脚组为PE1 、PE2 2、RESET脚&#xff1a; 二、软件配置 1、设备树 t527 dtsi: bsp/configs/linux-5.15/sun55iw3p1.dtsi t527 uboot-board.dts device/config/chi…

必看丨SSL证书是什么?怎么免费申请一张?

SSL证书是一种网络安全证书&#xff0c;它能帮助网站实现数据加密传输&#xff0c;保障用户信息在浏览器和网站服务器之间的安全交流。想象一下SSL证书就像一封密信的封蜡&#xff0c;确保信件内容在途中不会被他人偷看或篡改。 SSL证书的作用主要有两点&#xff1a; 1. 身份验…

gin框架精通篇(二)

原生数据库使用 导入模块&#xff1a;go get -u github.com/go-sql-driver/mysql 安装 mysql 数据库 安装数据库可能遇到的问题&#xff1a;&#xff08;网上的方法基本可以解决&#xff09; ERROR 1045 (28000): Access denied for user ‘-root’‘localhost’ (using passwo…

【leetcode2765--最长交替子数组】

要求&#xff1a;给定一个数组&#xff0c;找出符合【x, x1,x,x-1】这样循环的最大交替数组长度。 思路&#xff1a;用两层while循环&#xff0c;第一个while用来找到符合这个循环的开头位置&#xff0c;第二个用来找到该循环的结束位置&#xff0c;并比较一下max进行记录。 …

LLVM技术在GaussDB等数据库中的应用

目录 LLVM和数据库 LLVM适用场景 LLVM对所有类型的SQL都会有收益吗&#xff1f; LLVM在OLTP中就一定没有收益吗&#xff1f; GaussDB中的LLVM 1. LLVM在华为应用于数据库的时间线 2. GaussDB LLVM实现简析 3. GaussDB LLVM支持加速的场景 支持LLVM的表达式&#xff1a…

河南道路与桥梁乙级资质升级门槛条件解读

河南道路与桥梁乙级资质升级门槛条件解读如下&#xff1a; 一、企业基本条件 法人资格&#xff1a; 企业需具备独立企业法人资格&#xff0c;能够独立承担民事责任。注册资金&#xff1a; 企业的注册资金应不少于100万元人民币&#xff0c;这一数字直接体现了企业的经济实力和…

Yann LeCun 和 Elon Musk 就 AI 监管激烈交锋

&#x1f989; AI新闻 &#x1f680; Yann LeCun 和 Elon Musk 就 AI 监管激烈交锋 摘要&#xff1a;昨天&#xff0c;Yann LeCun 和Elon Musk 在社交媒体就人工智能的安全性和监管问题展开激烈辩论。LeCun 认为目前对 AI 的担忧和监管为时过早&#xff0c;主张开放和共享。而…

【linux:基础IO】

目录 系统调用的文件接口&#xff1a; open read: write: lseek: close: 系统调用的文件接口&#xff1a; open 当文件存在时&#xff1a;int open (const char*pathname,int flags)当文件不存在时&#xff1a;int open (const char* pathname,int flags,mode_t mode) 返…

拉格朗日插值法的推导

1、插值的基本定义   设函数 y f ( x ) yf(x) yf(x)在区间 [ a , b ] [a,b] [a,b]上有定义&#xff0c;且已知它在 n 1 n1 n1个互异点 a ≤ x 0 < x 1 < . . . < x n ≤ b a\leq x_0<x_1<...<x_n\leq b a≤x0​<x1​<...<xn​≤b上的函数值 y 0 …

经典文献阅读之--SMERF(通过标清导航地图增强车道感知和拓扑理解)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&#xff0c;并附带200G…

【全开源】西陆家政系统源码小程序(FastAdmin+ThinkPHP+原生微信小程序)

打造高效便捷的家政服务平台 一、引言&#xff1a;家政服务的数字化转型 随着人们生活节奏的加快&#xff0c;家政服务需求日益增长。为了满足广大用户对高效、便捷的家政服务的需求&#xff0c;家政小程序系统源码应运而生。这款源码不仅能够帮助家政服务提供商快速搭建自己…

【VTKExamples::Utilities】第十六期 WindowModifiedEvent

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例WindowModifiedEvent,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. WindowModifi…

基于 RNNs 对 IMDB 电影评论进行情感分类

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对抗网络、门控循环单元、长短期记…

Sqli-labs-master靶场1-20通关教程

目录 SQL注入基本语句 Less-1&#xff08;字符型-闭合 &#xff09; Less-2&#xff08;数字型&#xff09; Less-3&#xff08;字符型-闭合 ) &#xff09; Less-4&#xff08;字符型-闭合 ") &#xff09; Less-5&#xff08;报错注入-闭合 &#xff09; Less-…

实战教程:使用Go的net/http/fcgi包打造高性能Web应用

实战教程&#xff1a;使用Go的net/http/fcgi包打造高性能Web应用 简介理解FCGI协议FastCGI工作原理CGI与FastCGI对比其他接口对比 初步使用net/http/fcgi包设置和配置基础环境一个简单的FastCGI应用示例本地测试与调试 深入net/http/fcgi包的高级用法探索net/http/fcgi的主要功…

【贪心算法】C++ 解决算法题:买卖股票 / K次取反 / 按身高排序 / 优势洗牌

1. 前言 1.1 贪心算法介绍 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取当前状态下最优决策的算法。贪心算法通常用来解决最优化问题&#xff0c;其核心思想是通过局部最优解逐步推导出全局最优解。 在贪心算法中&#xff0c;我们并不总是考…