为什么sql表名中通常使用下划线而不是驼峰式大小写[关闭]

2024-04-28

在我已经见过的所有应用程序/示例中(例如,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 标准要求非带引号的标识符以全部大写形式存储在系统目录中,并且非带引号的标识符不区分大小写。

根据标准,以下未加引号的标识符引用同一对象(例如表):FOOBAR, foobar, FooBar(并且所有内容都将存储为FOOBAR在系统目录中)。

下列quoted标识符引用 3 个不同的对象:"FOOBAR", "foobar", "FooBar".

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

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

PostgreSQL 遵守大小写,但将所有内容折叠为小写。

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

SQL Server 甚至更加非标准,因为它保留大小写(类似于 Windows 下 NTFS 的工作方式),因此它不会将名称折叠为任何内容。因此,当名称存储在系统目录中时,它不会更改名称的大小写(但默认情况下不区分大小写)。出于这个原因,您会发现在 Microsoft 环境中工作的人们使用 CamelCase 的频率比例如在 Microsoft 环境中工作的人更频繁。在 Oracle 环境中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么sql表名中通常使用下划线而不是驼峰式大小写[关闭] 的相关文章

  • 在调用存储过程 Sql Server 2008 时使用嵌套存储过程结果

    是否可以在另一个存储过程中使用一个存储过程的结果 I e CREATE PROCEDURE dbo Proc1 ID INT mfgID INT DealerID INT AS BEGIN DECLARE Proc1Result UserD
  • 如何将数据插入 Microsoft Access 数据库?

    我正在尝试将数据插入 Microsoft Access 数据库 我将数据插入到 Access 数据库中 但只有第一次和第二次显示我插入的数据 当我重建应用程序时 我插入的数据消失了 我不知道他们去了哪里并且没有出现 我使用 C 和 NET
  • 如何从 Databricks Delta 表中删除列?

    我最近开始发现 Databricks 并遇到了需要删除增量表的特定列的情况 当我使用 PostgreSQL 时 它就像 ALTER TABLE main metrics table DROP COLUMN metric 1 我正在浏览 Da
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • oracle日期序列?

    我有一个 oracle 数据库 我需要一个包含 2 年所有日期的表 例如来自01 01 2011 to 01 01 2013 首先我想到了一个序列 但显然唯一支持的类型是数字 所以现在我正在寻找一种有效的方法来做到这一点 欢呼骗局 如果您想
  • 如何终止正在运行的 SELECT 语句

    如何通过终止会话来停止正在运行的 SELECT 语句 该命令不断根据 SELECT 语句向我提供输出 我想在其间停止它 As you keep getting pages of results I m assuming you starte
  • BULK INSERT 中格式附近的语法不正确?

    我试图找出为什么我使用的 BULK INSERT 命令无法识别命令中使用的 FORMAT 和 FIELDQUOTE 选项 BULK INSERT dbo tblM2016 RAW Current Import File FROM x tms
  • 导致聚集索引扫描的日期参数

    我有以下查询 DECLARE StartDate DATE 2017 09 22 DECLARE EndDate DATE 2017 09 23 SELECT a col1 a col2 b col1 b col2 b col3 a col
  • PIVOT 运算符中指定的列名“FirstName”与 PIVOT 参数中的现有列名冲突

    当我尝试替换时收到以下错误消息null to zero PIVOT 运算符中指定的列名 jan 与 PIVOT 参数中的现有列名称 查询如下 select from select isnull jan 0 isnull feb 0 sum
  • 产品和变体 - 设计数据库的最佳方法

    描述 商店可以有产品 鞋子 T 恤等 每个产品可以有许多变体 每个变体可以有不同的价格和库存 例如T 恤有不同的颜色和尺寸 颜色 蓝色 尺寸 L 价格 10 美元 库存 5 颜色 蓝色 尺寸 XL 价格 10 美元 库存 10 颜色 白色
  • 如何比较表中最后一个和倒数第二个条目的值?

    我在 Oracle 中有一个名为quotes 的表 其中包含两列 date 和value 我想比较表中最后一个条目和倒数第二个条目的值 在此示例中 我想获取日期13 1 和 11 1在一行中以及每个日期的值之间的差异 10 5 5 报价表
  • 规范“毒”方式真的值得吗? (3NF)

    我正处于数据库设计的早期阶段 所以还没有最终的结果 并且我正在为具有可选标签的线程使用 TOXI 3表设计 但我忍不住觉得加入是并不是真的必要 也许我只需要依赖我的简单标签列posts我可以在其中存储类似 varchar 的表
  • 获取 Postgres 数据库中每个表的行数

    获取数据库中所有表的行数的最有效方法是什么 我正在使用 Postgres 数据库 结果示例 table name row count some table 1 234 foobar 5 678 another table 32 如果您想要特
  • PHP 中的 SQL 语句与 phpmyadmin 中的 SQL 语句的行为不同

    I have form store sql INSERT INTO myodyssey myaccount id email username password VALUES NULL email unixmiah formtest woo
  • 将 copyfromrecordset 写入范围

    我有以下 vba 它从单元格 C10 开始读取 MCO 直到其为空 并将从 SQL 数据库获取机器数量 解密和升级机器数量 这工作正常 但我在获取相应行中的数据时遇到问题 目前它总是将数据写入 D10 因为我已经对其进行了硬编码 但我不确定
  • 如何使用 SQL Server 查询对“版本号”列进行排序

    我想知道我们当中的 SQL 天才是否可以向我伸出援助之手 我有一个专栏VersionNo在表中Versions包含 版本号 值 例如 VersionNo 1 2 3 1 1 10 3 1 1 4 7 2 etc 我正在寻找对此进行排序 但不
  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个
  • Oracle 查询向上或向下舍入到最近的 15 分钟间隔

    08 SEP 20 08 55 05 08 SEP 20 15 36 13 下面的查询对于 15 36 13 可以正常工作 因为它四舍五入到 15 30 但 8 55 05 向下舍入到 08 45 而它应该四舍五入到 09 00 selec
  • 为什么 Clojure MySQL 查询结果中出现“M”

    我有一个返回一行的 Clojure 查询 下面是返回行 映射 的部分打印输出 employer percent 0 00M premium 621 44M 这两列在mysql表中分别是decimal 5 2 和decimal 7 2 为什么
  • 列的 SQL MAX(包括其主键)

    Short 从下面的 sql select 中 我获取了 cart id 和该购物车中最高价值商品的值 SELECT CartItems cart id MAX ItemValues value FROM CartItems INNER J

随机推荐

  • 如何在.NET 中解压使用 Lempel-Ziv Haruyasu 算法压缩的字节?

    如何在 NET 中解压缩这些 LZH 格式之一 提示 我更愿意使用已经实现的功能 而不是尽可能实现 我所处的情况是服务器向我发送了一个 XML 文档 该文档有一些 Base64 编码的压缩数据 从 XML 中获取字节后 我盲目地尝试了Def
  • 使用 Selenium 的 CSS 模块?

    我正在使用 React Redux 和 CSS 模块开发一个 Web 应用程序 对于我正在使用的单元测试身份对象代理 https github com keyanzhang identity obj proxy模拟我的 CSS 导入 然而
  • 为什么C++中的内置堆栈接口没有clear()函数?

    在进一步使用它之前 我必须清空堆栈 我确实明白可以这样做 while mystack empty mystack pop 没有这个功能有什么具体原因吗 或者只是第一次制作时没有人感受到它的要求而被排除在外 另外 Java 中的堆栈接口确实有
  • 如何复制 tf.keras.models.Model 子类?

    我需要复制 keras 模型 但我无法知道可以做什么 除非该模型is not a tf keras models Model 子类 Note 使用copy deepcopy 将在没有任何错误的情况下工作 但是每当使用副本时都会导致另一个错误
  • ASP.NET MVC:如何在返回状态代码 404 的同时提供内容? [复制]

    这个问题在这里已经有答案了 可能的重复 如何配置 IIS 以使用自定义内容提供 404 响应 https stackoverflow com questions 2551959 how to configure iis to serve m
  • Horizo​​ntalScrollView 中带有 RecyclerView 的 2D 列表

    我正在尝试构建一个视图 允许用户水平和垂直滚动类似 Excel 的结构 我最初的想法是将 RecyclerView 带有 LinearManager 放入 Horizo ntalScrollView 中 但这似乎不起作用 这是我的代码
  • 动画 UIButton 上的用户交互

    我正在尝试在 Xcode 4 2 中制作一个针对 iPhone 的小应用程序 我想要的是一个UIButton使屏幕向下动画 当你按下它时 你将它的 alpha 设置为 0 我找到了一种方法UIView能够处理用户交互的类 并得出以下代码 U
  • MongooseServerSelectionError:连接到副本集时连接 ECONNREFUSED ::1:27017

    我刚刚将 mongoose 和 MongoDB 升级到最新版本并转换了mongod实例到副本集 用于测试的单个节点 但现在当节点应用程序连接到它时 我得到MongooseServerSelectionError connect ECONNR
  • Jetty 在 JNDI 上下文中绑定数据源

    我想以编程方式将 DataSource 对象绑定到 eclipse jetty 的 JNDI 上下文 我需要用于测试目的 这是我现在的一段代码 server new Server SERVER PORT webAppContext new
  • 从适用于 Android 的 Facebook SDK 将内容添加到 Facebook feed 对话框

    在我的 Android 应用程序中 我希望用户在他们的墙上 共享 我的应用程序 因此我希望他们在他们的墙上发布预定义的内容状态 如何自定义墙状态 我想添加我的应用程序图标和一些耀斑文本 下载 Facebook SDK 并将其导入到您的项目中
  • Kotlin 的不同类型的 reduce() 函数

    我正在查看数组扩展函数并发现reduce one inline fun
  • 跨不同的 viewController 使用相同的 UIWebView

    TL DR 我需要实现一个在多个 ViewController 之间共享的单例 UIWebVIew 这个问题包含了我迄今为止的所有方法 应用程序委托 property strong nonatomic UIWebView singleWeb
  • 使用 Google Analytics iOS SDK 进行应用内购买跟踪

    我想使用 Google Analytics SDK for iOS v2 跟踪应用内购买 如其中所示电子商务追踪 https developers google com analytics devguides collection ios
  • 如何使用 PHP 制作 pdf 文件

    如何用 PHP 制作 PDF 文件 我想要制作的是学生名单 所以我想查询数据库 获取信息 并在用户单击 生成学生列表 时将其以 PDF 形式提供给用户 你有两个不错的选择 首先是用于操作 pdf 的标准 php 库 https www ph
  • C#等待串口数据

    我试图通过 C 应用程序从指纹扫描仪获取数据 但在指纹发送之前 我的整个代码都会执行 我尝试使用延迟功能System Threading Thread Sleep 1000 因此它可以在下一步执行之前获取数据 但这一切似乎都是徒劳的 任何人
  • CSS 中的边框图像 svg(颜色)样式?

    是否可以从CSS样式填充自定义边框图像 我应该使用哪个属性 E g border image source url assets images dots new svg border color red doesn t work fill
  • 动态创建多个上传文件

    我想知道是否有人知道动态创建上传表单的最佳方法 这就是我想要实现的目标 下面显示的代码允许一次上传 我想要一个按钮 按下该按钮后 应添加另一种形式用于文件上传 因此 如果我想上传 假设有 7 个文件 我想按按钮 7 次来创建这些上传表单 每
  • 我无法在 docker 中安装 opencv-contrib-python

    我尝试安装opencv contrib python但我无法让它在 docker 上工作 它说找不到满足 opencv contrib python 要求的版本 I tried pip install opencv contrib pyth
  • C# 从视频文件的一部分中提取帧

    使用 AForge ffmpeg 包装器 您可以使用 VideoFileReader 类从视频中提取帧并将其保存为位图 请参阅以下示例 提取 avi 文件的帧 https stackoverflow com questions 178256
  • 为什么sql表名中通常使用下划线而不是驼峰式大小写[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi