Mysql:语法:标志符、关键字
backticks"`"字符括起的字符序列称之为 标志符。
- 如果ansi_quotes模式打开,可以使用双引号"""括起的字符序列表示标志符
- 标志符可以使用的字符可以是任意字符,当然还是只使用[0-9a-zA-Z_$]这些非特殊字符的好,而且推荐不要以数字或美元开头——大多数系统都是这样子的
- 另外标志符如果是关键字(通常等于 保留字)必须括起来
- 严重推荐标志符不要是"{m}e[n]"这种可能和科学计数法相混淆的形式!
- 标志符不能含有ascii的nul(0x00)、\、/、.、nul、prn 等os中不允许的字符
标志符最大字符长度为64
标志符的限定:
- [db_name.][tb_name.]col_name --mysql的标准
- [.]tb_name --兼容odbc的限定
标志符的大小写敏感性:他是依赖于os的:windows上不区分,linux上区分
- database、table、trigger、alias 是依赖os的。但在同一个语句中,必须完全相同
- column、index、procedure、funcion、envent总是不区分的
- lower_case_table_names:
- 0:区分大小。存、找、比较。对于myisam存储引擎可能在某些大小不敏感的os上引起index使用问题
- 1:小写。存、找、比较。 --推荐
- 2:区分大小写进行os存储;按小写查找、比较。但是innodb存储引擎类的表却与"1"的行为相同
对于函数名称的解析规则:一句话(好的编程风格:不是和系统已有的东西重名!!!)
- 通常函数分为:native内建、udf函数、stored functions。
- 对于native函数有缺省的解析规则,但和ignore_space服务器的配置有关
- 通常规则:如果内建函数后面是否具有express上下文,是则作为函数调用,否则就认为是标志符,适用于大多数函数。
- 特殊规则:看函数名后是否仅仅跟着”(“,是作为函数调用,否作为标志符使用。这些函数可以通过sql_functions()查看
ignore_space:
- disabled:只要是sql_functions()里列出的函数——将忽略上面的“缺省规则”,只要后面紧跟着”(“就认为是函数调用,可能会造成非表达式环境出错
- enabled:(默认) 只要是sql_functions()里列出的函数,必须是显示的括起函数名作为标志符
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)