当前位置: 首页 > 面试题库 >

为什么在SQL表名称中通常使用下划线而不是驼峰式大小写

商骞仕
2023-03-14
问题内容

在我已经看到的所有应用程序/示例中(例如wordpress)。列表名称使用下划线而不是驼峰式大小写。我想知道是否存在一些技术上的不兼容性问题,或者这是一个约定?它取决于系统平台(Linux
/
Windows)还是sql方言(Mysql,postgreSQL,DB2,Oracle等)。例如,在下表中,我使用过骆驼保护套,但还没有任何问题/警告!如果我应该/必须重构我的表,为什么要/必须这样做?

SQL是否对表/列名称不区分大小写?那方言呢?

CREATE TABLE `testuser` (
  `id` bigint(20) NOT NULL,
  `user_type` varchar(8) NOT NULL,
  `username` varchar(30) DEFAULT NULL,
  `password` varchar(128) DEFAULT NULL,
  `regDate` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

问题答案:

一些背景信息:

(ANSI)SQL标准要求未引用的标识符以大写形式存储在系统目录中,并且未引用的标识符不区分大小写。

根据标准下面的非引用的标识符引用相同的对象(例如,表):
FOOBARfoobarFooBar和所有将被存储为FOOBAR系统目录中)。

下面 引用 标识符文献3个不同的对象:"FOOBAR""foobar""FooBar"

几乎所有的DBMS至少都符合未引用标识符 不区分大小写的要求 。据我所知,除了MySQL和SQL
Server之外,两者都可以配置为区分大小写,即使对于未加引号的标识符也是如此。我不确定SQL
Server的默认行为是什么(正如Damien在他的评论中指出的那样,这取决于用于SQL Server的排序规则)。

MySQL更加令人困惑,因为它的行为取决于几种配置设置,存储引擎和文件系统的组合。我知道的所有其他DBMS在所有平台和安装中的行为都是一致的。

PostgreSQL遵循区分大小写的原则,但它会将所有内容折叠为小写。

因此,考虑到这些规则,我 认为 使用下划线的“传统”命名约定源于对象名称以大写形式存储的事实。获得“可读”名称的唯一方法是用下划线分隔名称的重要部分。

由于SQL
Server保留大小写(类似于Windows下的NTFS的工作方式),因此它甚至更加不符合标准,因此它不会将名称折叠成任何东西。因此,当名称存储在系统目录中时,它不会更改名称的大小写(但默认情况下,它不区分大小写)。因此,与在Oracle环境中相比,您会发现使用CamelCase在Microsoft环境中工作的人员更多。



 类似资料:
  • 问题内容: 在我公司,我们有两种针对Java和sql的样式指南。在Java中,我有一个名为的字段,当我编写sql时,我想为其命名。当我突出显示该短语时,是否有键盘快捷键可以从一个切换到另一个?还是可以做到这一点的插件? 当我问,我也不妨问,如果有办法把到。从Java到clojure风格。 问题答案: 我使用一个名为String Manipulation 的插件,该插件具有您正在寻找的功能(以及更多

  • 本文向大家介绍写一个方法把下划线命名转成大驼峰命名相关面试题,主要包含被问及写一个方法把下划线命名转成大驼峰命名时的应答技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍你们团队中css的class命名采用的是什么方式呢?下划线还是横线还是驼峰?相关面试题,主要包含被问及你们团队中css的class命名采用的是什么方式呢?下划线还是横线还是驼峰?时的应答技巧和注意事项,需要的朋友参考一下 形式 不用驼峰和,因为这两样都需要 shift 辅助输入, 驼峰越多,按下shift 键的次数就越多。

  • 问题内容: 我定义了以下实体: 尽管有表注释,我仍然收到。如何防止将诸如EmailTemplate之类的实体类转换为email_template表名? 编辑: 我正在使用Spring Boot:启动JPA。在我的build.gradle文件中 问题答案: Spring默认使用带下划线的驼峰案例名称分割。尝试在中设置。

  • 本文向大家介绍java中驼峰与下划线的写法互转,包括了java中驼峰与下划线的写法互转的使用技巧和注意事项,需要的朋友参考一下 前言 在实际项目开发中,会碰到这样的问题,数据库表结构设计好了,可实体类还没相应地弄出来。实体类的属性命名方法一般是驼峰法,而数据库中的表字段命名方法用的是下划线法。如果表的字段非常多,我们根据设计好的数据库字段再手动敲写一遍驼峰法的属性,这有点费时了。如何迅速地把数据库

  • 问题内容: 可以解释一下在Python中使用对象名称前加下划线的含义吗?另外,说明单首和双首下划线之间的区别。无论所讨论的对象是变量,函数,方法等,该含义是否保持不变? 问题答案: 单下划线 类中带有下划线的名称仅是为了向其他程序员表明该属性或方法旨在私有。但是,名称本身并没有做任何特别的事情。 引用PEP-8: :“内部使用”指标较弱。例如,不导入名称以下划线开头的对象。 双下划线(名称改写)