MySQL™ 参考手册(字面值)
来源:SegmentFault
2023-02-24 12:44:34
0浏览
收藏
本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《MySQL™ 参考手册(字面值)》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~
字面值
本节描述如何在MySQL中编写字面值,这些参数包括字符串、数字、十六进制和位值、布尔值和
NULL,本节还将介绍在MySQL中处理这些基本类型时可能遇到的各种细微差别。
字符串字面值
字符串是一个字节或字符序列,包含在单引号(
')或双引号(
")字符中,例如:
'a string' "another string"
相互相邻的引用字符串连接为单个字符串,下列行是等价的:
'a string' 'a' ' ' 'string'
如果启用了
ANSI_QUOTESSQL模式,字符串字面值只能用单引号括起来,因为双引号括起来的字符串被解释为标识符。
二进制字符串是由字节组成的字符串,每个二进制字符串都有一个名为
binary的字符集和排序规则。非二进制字符串是一串字符,它有一个非二进制的字符集和一个与字符集兼容的排序规则。
对于这两种类型的字符串,都基于字符串单元的数值比较,对于二进制字符串,单位是字节,使用数值字节值比较。对于非二进制字符串,单位是字符,有些字符集支持多字节字符,使用数字字符码值比较,字符码排序是字符串排序的函数。
字符串字面值可以有一个可选的字符集导入器和
COLLATE子句,将其指定为使用特定字符集和排序规则的字符串:
[_charset_name]'string' [COLLATE collation_name]
例如:
SELECT _latin1'string'; SELECT _binary'string'; SELECT _utf8'string' COLLATE utf8_danish_ci;
可以使用
N'literal'(或
n'literal')在国际字符集中创建字符串,这些语句是等价的:
SELECT N'some text'; SELECT n'some text'; SELECT _utf8'some text';
在字符串中,除非启用
NO_BACKSLASH_ESCAPESSQL模式,否则某些序列具有特殊的含义,每个序列都以反斜杠(
\)开头,称为转义字符。MySQL识别下表中所示的转义序列,对于所有其他转义序列,将忽略反斜杠,也就是说,转义字符被解释为没有转义,例如,
\x就是
x。这些序列是区分大小写的,例如,
\b被解释为退格,但是
\B被解释为
B,转义处理是根据
character_set_connection系统变量所表示的字符集来完成的,即使对于前面有一个表示不同字符集的导入器的字符串也是如此。
转义序列 | 序列表示字符 |
---|---|
\0 |
ASCII NUL(X'00')字符 |
\' |
单引号(')字符 |
\" |
双引号(")字符 |
\b |
退格字符 |
\n |
换行字符 |
\r |
回车字符 |
\t |
制表符 |
\Z |
ASCII 26(Control+Z) |
\\ |
反斜杠(\)字符 |
\% |
%字符 |
\_ |
_字符 |
ASCII 26字符可以编码为
\Z,以使你能够解决ASCII 26在Windows上代表文件结束的问题,如果试图使用
mysql db_name ,文件中的ASCII 26会导致问题。 <p></p><pre class="brush:go;">\%和
\_序列用于在模式匹配上下文中搜索
%和
_的文本实例,否则它们将被解释为通配符,如果在模式匹配上下文之外使用
\%或
\_,它们的值是字符串
\%和
\_,而不是
%和
_。
有几种方法可以在字符串中包含引用字符:
- 在字符串内加上引号
'
可以写成''
。 - 在字符串内加上双引号
"
可以写成""
。 - 在引用字符之前加上转义字符(
\
)。 - 在
"
字符串内部加上'
不需要特殊处理’,也不需要重复或转义,同样的道理,在'
字符串内部加上"
不需要特殊处理’。
下面的
SELECT语句演示了如何引用和转义:
mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT 'This\nIs\nFour\nLines'; +--------------------+ | This Is Four Lines | +--------------------+ mysql> SELECT 'disappearing\ backslash'; +------------------------+ | disappearing backslash | +------------------------+
要将二进制数据插入字符串列(例如
BLOB列),应该使用转义序列表示某些字符,必须转义反斜杠(
\)和用于引用字符串的引号字符,在某些客户端环境中,可能还需要转义
NUL或
Control+Z。如果没有转义,
mysql客户端会截断包含
NUL字符的引用字符串,如果没有转义,Windows上的文件末尾可以使用
Control+Z。
在编写应用程序时,在将字符串用作发送到MySQL服务器的SQL语句中的数据值之前,必须正确转义任何可能包含这些特殊字符的字符串,你可以通过两种方式做到这一点:
- 使用转义特殊字符的函数处理字符串,在C程序中,可以使用
mysql_real_escape_string_quote()
C API函数转义字符,在构造其他SQL语句的SQL语句中,可以使用QUOTE()
函数,Perl DBI接口提供了一个quote
方法,用于将特殊字符转换为正确的转义序列,其他语言接口可能提供类似的功能。 - 作为显式转义特殊字符的替代方法,许多MySQL API提供了占位符功能,使你能够将特殊标记插入到语句字符串中,然后在发出语句时将数据值绑定到它们,在本例中,API负责为你转义值中的特殊字符。
Boolean字面值
常量
TRUE和
FALSE的值分别为
1和
0,常量名可以用任何字母大小写书写。
mysql> SELECT TRUE, true, FALSE, false; -> 1, 1, 0, 0
NULL值
NULL值表示“没有数据”,NULL可以用任何大小写。
注意,
NULL值与数值类型的
0或字符串类型的空字符串不同。
使用
LOAD DATA或
SELECT ... INTO OUTFILE执行为文本文件导入或导出操作中,
NULL由
\N序列表示。
对于使用
ORDER BY排序,
NULL值在升序排序的其他值之前排序,在降序排序的其他值之后排序。
到这里,我们也就讲完了《MySQL™ 参考手册(字面值)》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!
版本声明
本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除

- 上一篇
- MySQL 查询条件中 in 会不会用到索引

- 下一篇
- 数据库的分库分表
评论列表
-
- 如意的机器猫
- 太详细了,已收藏,感谢大佬的这篇技术文章,我会继续支持!
- 2023-04-12 20:43:51
-
- 现代的招牌
- 这篇博文真是及时雨啊,细节满满,真优秀,码起来,关注作者了!希望作者能多写数据库相关的文章。
- 2023-02-27 02:04:10
-
- 无奈的小懒猪
- 真优秀,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢up主分享博文!
- 2023-02-24 16:24:59
查看更多
最新文章
-
- 数据库 · MySQL | 3小时前 |
- MySQL中文界面设置方法详解
- 157浏览 收藏
-
- 数据库 · MySQL | 13小时前 |
- MySQL无法启动?8个排查方法全解析
- 174浏览 收藏
-
- 数据库 · MySQL | 14小时前 |
- 主键与唯一键区别,如何选主键?
- 166浏览 收藏
-
- 数据库 · MySQL | 17小时前 |
- MySQL多表连接优化技巧与实战策略
- 221浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL排序优化与性能提升技巧
- 153浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL中WHERE与HAVING的区别详解
- 340浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL排序优化与性能提升技巧
- 368浏览 收藏
-
- 数据库 · MySQL | 2天前 |
- MySQL连接池配置与优化方法
- 297浏览 收藏
-
- 数据库 · MySQL | 2天前 |
- MySQLGROUPBY使用技巧与常见问题
- 306浏览 收藏
-
- 数据库 · MySQL | 2天前 |
- MySQL缓存优化技巧分享
- 392浏览 收藏
-
- 数据库 · MySQL | 2天前 |
- MySQL安装到D盘教程及路径设置详解
- 279浏览 收藏
查看更多
课程推荐
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 511次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 498次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
查看更多
AI推荐
-
- 千音漫语
- 千音漫语,北京熠声科技倾力打造的智能声音创作助手,提供AI配音、音视频翻译、语音识别、声音克隆等强大功能,助力有声书制作、视频创作、教育培训等领域,官网:https://qianyin123.com
- 99次使用
-
- MiniWork
- MiniWork是一款智能高效的AI工具平台,专为提升工作与学习效率而设计。整合文本处理、图像生成、营销策划及运营管理等多元AI工具,提供精准智能解决方案,让复杂工作简单高效。
- 90次使用
-
- NoCode
- NoCode (nocode.cn)是领先的无代码开发平台,通过拖放、AI对话等简单操作,助您快速创建各类应用、网站与管理系统。无需编程知识,轻松实现个人生活、商业经营、企业管理多场景需求,大幅降低开发门槛,高效低成本。
- 110次使用
-
- 达医智影
- 达医智影,阿里巴巴达摩院医疗AI创新力作。全球率先利用平扫CT实现“一扫多筛”,仅一次CT扫描即可高效识别多种癌症、急症及慢病,为疾病早期发现提供智能、精准的AI影像早筛解决方案。
- 101次使用
-
- 智慧芽Eureka
- 智慧芽Eureka,专为技术创新打造的AI Agent平台。深度理解专利、研发、生物医药、材料、科创等复杂场景,通过专家级AI Agent精准执行任务,智能化工作流解放70%生产力,让您专注核心创新。
- 101次使用
查看更多
相关文章
-
- golang MySQL实现对数据库表存储获取操作示例
- 2022-12-22 499浏览
-
- 搞一个自娱自乐的博客(二) 架构搭建
- 2023-02-16 244浏览
-
- B-Tree、B+Tree以及B-link Tree
- 2023-01-19 235浏览
-
- mysql面试题
- 2023-01-17 157浏览
-
- MySQL数据表简单查询
- 2023-01-10 101浏览