SQL区分大小写吗?我用过MySQL和SQL Server,它们似乎都是不区分大小写的。情况总是这样吗?标准是否定义了区分大小写?
当前回答
我发现这篇博文很有帮助(我不是作者)。总结(请阅读):
带分隔符的标识符区分大小写("table_name" != "table_name"),而不带引号的标识符则不区分大小写,并且转换为大写(table_name => table_name)。
他发现DB2、Oracle和Interbase/Firebird是100%兼容的:
PostgreSQL……每个不带引号的标识符都要小写,而不是大写。MySQL……依赖于文件系统。SQLite和SQL Server…表和字段名的大小写在创建时被保留,但在创建后将完全忽略。
其他回答
SQL关键字是不区分大小写的(SELECT, FROM, WHERE等),但它们通常都是大写的。但是,在某些设置中,表名和列名是区分大小写的。
MySQL有一个配置选项来启用/禁用它。通常区分大小写的表和列名是Linux MySQL的默认值,不区分大小写曾经是Windows的默认值,但现在安装程序在安装过程中询问这一点。对于SQL Server,它是数据库排序规则设置的函数。
这里是关于名称区分大小写的MySQL页面
下面是MSDN中关于SQL Server排序规则的文章
我不认为SQL Server是区分大小写的,至少默认情况下不是。
当我通过SQL Server Management Studio手动查询时,我总是搞砸情况,它很高兴地接受它:
select cOL1, col2 FrOM taBLeName WheRE ...
这不是严格的SQL语言,但在SQL Server中,如果您的数据库排序是区分大小写的,那么所有表名都是区分大小写的。
在SQL Server中,这是一个选项。打开它太糟糕了。
我不确定MySQL。
标识符和保留词不应该区分大小写,尽管许多标识符遵循一个约定,即保留词使用大写,标识符使用驼峰大小写。
参见SQL-92第5.2节
推荐文章
- 如何在Ruby On Rails中使用NuoDB手动执行SQL命令
- 查询JSON类型内的数组元素
- 确定记录是否存在的最快方法
- MySQL区分大小写查询
- 获得PostgreSQL数据库中当前连接数的正确查询
- 在SQL选择语句Order By 1的目的是什么?
- 我如何循环通过一组记录在SQL Server?
- 如何从命令行通过mysql运行一个查询?
- 外键约束可能导致循环或多条级联路径?
- 使用LIMIT/OFFSET运行查询,还可以获得总行数
- 当恢复sql时,psql无效命令\N
- 货币应该使用哪种数据类型?
- 如何选择每一行的列值不是独特的
- 如何改变字符集(和排序)在整个数据库?
- mySQL:: insert到表,数据从另一个表?