6.1 Identifier Syntax
定义符肯能被unquoted或者quoted,如果unquoted,一个定义符必须遵循如下的规则:
1.一个定义可能包含所有的字母字符,——和$
2. 一个定义肯能是任何合法字符,even a digit。然而,他最好避免歧义。
3.一个定义符不能完全有数字组成
对于引用的定义:
1.一般,任何字符可以被包含在一个引用定义符。一个定义符不能包含一个0或者255数值值的字节和表的名字不能包好‘.’,'/',或者‘\’
2. 一个引用可能有所有的数字组成
6.2 大小写注意
1对于数据库和表的定义符,大小写取决于操作系统和服务器的文件系统,和取决于设置lower_case_table_names系统变量。
2 对于列,索引,被存储的路径和触发器的定义符是大小写敏感的
3.列的别名不是大小写敏感的
6.3 使用qualified names
就是列和表的定义符被写使用‘.’分隔符。例如Country表值word数据库可能被引用world.Country,如果默认的数据库存在时,下面的等同:
select * from country;
select * from world.Country;
对于列的名字肯能被qualified,使用Country.Name.
一个更进一步的列的是可能因为一个表的名字肯能是使用database名字。所以,另外的方式引用Namelie是world.Country.Name 如果word是默认数据库,接下的语句时等同。
select name from country;
select country.name from country;
select world.country.name from world.county;
一个触发器可以附带到一个表上,一个触发器的定义符应该有table_name.trigger_name
6.4 Using Reserved Words as Indentifiers
反转单词是特别的。例如,功能名字不能用作定义符例如表或列明,如果你试图这样做了将产生一个错误。
create table t (order int not null unique, d date not null);
产生错误。
为了使用reserved(预留)单词作为数据库,表,列或者索引的定义符,将有一个或两个运行引用样式,取决于服务器SQL模式。默认,引用预留的单词在backtick(‘’)。
create table t('order' int not null unique, d date not null);
ok
如果ansi-quotes采用了
create table t("order" int not null unique, d date not null);
ok
为了使用预留关键字作为别名,引用它作为但引用号或者双引号或者backticks。