MySQL 语言参考(3)
来源:MYSQL.CN 发布时间:2007-11-21 20:37:00
6.1.3 名字的大小写敏感性
在 MySQL 中,数据库和表对就于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的。一个特例是 Mac OS X,当缺省的 HFS+ 文件系统使用时。然而 Mac OS X 还支持 UFS 卷,那些在 Mac OS X 是大小写敏感的就如他们在任一 Unix 上一样。
注意:尽管在 Windows 中数据库与表名是忽略大小写的,你不应该在同一个查询中使用不同的大小写来引用一个给定的数据库和表。下面的查询将不能工作,因为它以 my_table 和 MY_TABLE 引用一个表:
mysql> Select * FROM my_table WHERE MY_TABLE.col=1;
列名与列的别名在所有的情况下均是忽略大小写的。
表的别名是区分大小写的。下面的查询将不能工作,因为它用 a 和 A 引用别名:
mysql> Select col_name FROM tbl_name AS a -> WHERE a.col_name = 1 Or A.col_name = 2;
如果记忆数据库和表名的字母大小写有困难,建议采用一个一致一约定,例如总是以小写字母创建数据库和表。
避免这个问题的另一个办法就是以 -O lower_case_table_names=1 参数启动 mysqld。缺省地在 Windows 中这个选项为 1 ,在 Unix 中为 0。
如果 lower_case_table_names 为 1 ,MySQL 将在存储与查找时将所有的表名转换为小写字线。(从 MySQL 4.0.2 开始,这个选项同样适用于数据库名。) 注意,当你更改这个选项时,你必须在启动 mysqld 前首先将老的表名转换为小写字母。
如果将 MyISAM 从 Windows 移动到一个 Unix 磁盘中,在某些情况下你可能需要使用 “mysql_fix_extensions” 工具来修正指定数据库目录下的文件扩展名(小写字母 “.frm”,大写字母 “.MYI” 和 “.MYD”)。“mysql_fix_extensions” 存放在 “scripts” 子目录下。
6.1.4 用户变量
MySQL 支持连接特定(connection-specific)的用户变量,用 @variablename 句法表示。一个变量名可以由当前字符集中包含的文字与数字字符以及 、 和 组成。缺少的字符集为 ISO-8859-1 Latin1;这可以通过改变 mysqld 的--default-character-set 的选项来改变。
变量不必被初始化。缺省地,他们的值为 NULL 并可以存储一个整数、实数或字符串值。当连接线程退出时,这个线程的所有变量将会自动地被释放。
你可以通过 SET 句法来设置一个变量:
SET @variable= { integer expression | real expression |
string expression }[,@variable= ...].
在语句中除了 SET 之外还可以直接为一个变量赋值。然而在这各情况下,赋值操作符为 := 而不是 =,因为 = 在非 SET 语句中是用于比较的:
mysql> Select @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;+----------------------+------+------+------+| @t1:=(@t2:=1)+@t3:=4 | @t1 | @t2 | @t3 |+----------------------+------+------+------+| 5 | 5 | 1 | 4 |+----------------------+------+------+------+
用户变量可以用于表达式所允许的任何地方。注意,这在数字必须明确指定的语境中并不适用,例如,在 SELECT 的 LIMIT 子句中或一个 LOAD DATA 语句的 IGNORE number LINES 的子句中。
注意:在一个 SELECT 语句中,各个表达式只有在它被送到客户端时才能被求值。这就意味着,在 HAVING、GROUP BY 或 ORDER BY 子句中,你不能使用一个包含在 SELECT 部份所设置变量的表达式。例如:下面的语句将不会按预期的运作:
mysql> Select (@aa:=id) AS a, (@aa+3) AS b FROM table_name
HAVING b=5;
原因是因为 @aa 不会是当前行的值,而是前一个符合条件的行的 id 值。
规则就是在同一语句中决不赋值 和 使用同一个变量。
猜你喜欢
- 目录01 — Pytest核心功能02 — 创建测试项目03 — 编写测试用例04 — 执行测试用例05 — 数据与脚本分离06 — 参数化
- 示例from optparse import OptionParser[...]def main():
- python logging 重复写日志问题用Python的logging模块记录日志时,遇到了重复记录日志的问题,第一条记录写一次,第二条
- PyCharm就是Python语言开发中一个很受欢迎的IDE,界面类似于visual studio,android studio,集成的功能
- 我就废话不多说了,大家还是直接看代码吧!import requestsimport jsonraw = {}headers中添加上conte
- 一、XML产生的背景 XML同HTML一样,都来自Standard Generalized Markup Language, 即标准通用标记
- 本文实例讲述了JavaScript简单获取页面图片原始尺寸的方法。分享给大家供大家参考,具体如下:这里通过Image()对象获取原始宽高这种
- 导航标签彼此互斥、完全穷尽。导航标签其实就是一种文字表达形式,我们用标签来代表网站上的各种分类信息。比如“联系我们”这个标签,代表的内容通
- 最近,接手的项目里,提供的数据文件格式简直让人看不下去,使用pandas打不开
- 00 小编的问题小编向我们反馈,从微信里复制出来的图片,会被微信屏蔽,无法显示我们后天采用的是百度编辑器,而且已经做了远程图片本地化,于是检
- 计算机键盘每天用得太多了,以致于我们无视它的存在(盲打),当然也很少有人去问这样一个问题——为什么键盘字母的排列方式是QWERTY而不是AB
- 这是一个很长的故事,嫌长的直接看最后的结论事情经过上周接了个需求,写了个小工具给客户,他要求打包成exe文件,这当然不是什么难事。因为除了写
- GetRepeatTimes(TheChar,TheString) 得到一个字符串在另一个字符串当中出现几次的函数(新)如:response
- 前两篇文章对NumPy数组做了基本的介绍,本篇文章对NumPy数组进行较深入的探讨。首先介绍自定义类型的数组,接着数组的组合,最后介绍数组复
- 条形码和二维码#引入所需要的基本包from reportlab.pdfgen import canvasfrom reportlab.gra
- 如果要得到返回值,需要用Command的方法。 首先说明,返回值有两种。一种是在存储过程中直接return一个值,就象C和VB的函数返回值那
- 环境:Python3.7依赖库:import datetimeimport randomimport requestsimport hash
- 数据准备数据集(JetRail高铁的乘客数量)下载.假设要解决一个时序问题:根据过往两年的数据(2012 年 8 月至 2014 年 8月)
- 原型扩展:>> String.prototype :String对象原型扩展 --------------
- 以下测试用于去除任何字符串中连线的分隔符 --去除字符串中连续的分隔符 declare @str nvarchar(200) declare