问题标签 [database-agnostic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 插入 ... 值( SELECT ... FROM ... )
我正在尝试INSERT INTO
使用来自另一个表的输入来创建一个表。尽管这对于许多数据库引擎来说是完全可行的,但我似乎总是很难记住当时SQL
引擎(MySQL、Oracle、SQL Server、Informix和DB2)的正确语法。
是否有来自 SQL 标准(例如SQL-92 )的灵丹妙药语法允许我插入值而不必担心底层数据库?
sql - 对任何数据库运行 SQL 脚本的好工具是什么?
目前,我有一个自定义工具,可以从我们的数据模型生成 vanilla-SQL(仅使用标准 SQL),为我们的新数据库设置数据库模式和初始数据,并进行版本补丁等......这部分都很好和花花公子现在。
然而,针对所有不同的数据库(不同的供应商)运行这些 SQL 脚本很痛苦,所以不久前我写了一个快速的小 PHP 脚本来为我做这件事,但我想知道是否有更好的解决方案来解决这个问题?
谢谢
database - 您如何编写独立于数据库的应用程序?
我的老板要求我只编写 ANSI SQL 以使其独立于数据库。但我了解到这并不容易,因为没有完全兼容 ANSI SQL 的数据库。SQL 代码很少能在不修改的情况下在数据库系统之间移植。
我看到人们用不同的方式使他们的程序数据库独立。例如:
- 将 SQL 语句外部化为资源文件。
- 编写许多提供程序类来支持不同的数据库。
- 只写简单的 SQL,远离高级函数/连接。
您是否总是编写“任何数据库就绪”的代码?还是仅在需要时才这样做?如果是,你是如何实现的?
sql - 为什么这种外键是可能的?
为什么 SQL 标准接受这个?有哪些好处?
如果有这些表:
您可以插入它而不会出错:
注1:这来自这个答案。
注意2:这可以避免,在两列上都设置不为空。
备注:我不是问避免,我感兴趣的是哪些是好处。
参考:
Oracle 文档: 关系模型允许外键的值与引用的主键或唯一键值匹配,或者为空。如果复合外键的任何列为空,则该键的非空部分不必匹配父键的任何对应部分。
SQL Server 文档:外键约束可以包含空值;但是,如果复合 FOREIGN KEY 约束的任何列包含空值,则会跳过对构成 FOREIGN KEY 约束的所有值的验证。
views - When to use database views and when not?
This question is about database views, not materialized-views.
Pros:
- Query simplification.
- Avoid repeat the same joins on multiples queries.
- Avoid magic numbers.
Cons:
- Hiding real queries (may be you are repeating joins).
What else?
sql - 代表 NCAA 篮球支架的最佳模式
代表 NCAA 男篮支架的最佳数据库模式是什么?如果您不熟悉,这里是一个链接:http: //www.cbssports.com/collegebasketball/mayhem/brackets/viewable_men
我可以看到几种不同的方法可以对这些数据进行建模,使用单个表、许多表、硬编码列、有些动态的方法等。您需要一种方法来对每个团队所在的种子和位置以及每个团队进行建模游戏和每个的结果(可能还有得分)。您还需要一种方法来代表谁在比赛的哪个阶段扮演谁。
本着疯狂三月的精神,我认为这是一个好问题。这里有一些明显的答案,这个问题的主要目标是查看您可以回答它的所有不同方式。哪种方式最好可能取决于您使用的语言或您使用它的准确程度,但请尽量保持答案与数据库无关、语言无关和相当高的水平。如果有人对如何更好地表达这个问题或更好地定义它有任何建议,请在评论中告诉我。
constraints - 在数据库中强制执行表间约束的最佳方法
我正在寻找检查表间约束的最佳方法,这是外键向前迈出的一步。例如,检查日期子记录值是否在两个父行列的范围日期之间。例如:
我看到两种方法:
- 如本文(或其他 RDBMS 上的其他等效项)所示,在提交时创建物化视图。
- 使用存储过程和触发器。
还有其他方法吗?哪个是最好的选择?
更新:这个问题的动机不是“对数据库或应用程序施加约束”。我认为这是一个令人厌烦的问题,任何人都按照她喜欢的方式行事。而且,对于批评者,我很抱歉,我正在开发对数据库的限制。从这里开始,问题是“哪个是管理数据库表间约束的最佳选择?”。我在问题标题上添加了“内部数据库”。
更新 2:有人添加了“ oracle ”标签。当然物化视图是 oracle 工具,但我对任何选项都感兴趣,无论它是在 oracle 还是其他 RDBMS 上。
python - 更改现有 Django 项目的时区
像个白痴一样,当我第一次构建一个收集日期时间数据的应用程序时,我完全忽略了时区设置。
那时这不是问题,因为我所做的只是“时间以来”的风格比较和排序。现在我需要做完整的报告来显示实际的日期时间,当然,它们都存储在 America/Chicago(可笑的 Django 默认值)。
所以是的。我有一个中型数据库,里面全是这些不正确的日期。我想更改settings.TIME_ZONE
为,'UTC'
但这对我现有的数据没有帮助。
将所有模型数据整体转换的最佳(阅读:最简单、最快)的方法是什么?
(所有数据都是过去两个月内的数据,所以还好没有夏令时转换)
这个项目目前在 SQLite 上,但我在 PostgreSQL 上有另一个项目,有一个类似的问题,我可能想在 DST 开始之前做同样的事情......所以理想情况下是一个与 DB 无关的答案。
mysql - 可以有一个与数据库无关的 SQL 查询来获取前 N 行吗?
我们希望能够使用 SQL 查询选择前 N 行。目标数据库可以是 Oracle 或 MySQL。有没有一种优雅的方法?(不用说,我们在这里处理已排序的数据。)
sql - 为什么这个查询只返回非空子表的结果?
这是我们正在运行的查询的简化版本,我们需要在主父表中查找子行匹配的所有行。当子表之一为空时,以下查询不返回任何结果。
主表有两个子表:
child2 中没有行,当它为空时,以下查询不返回任何行:
如果将一行添加到 child2,即使它与 WHERE 子句不匹配,SELECT 也会返回主表中的行。
我已经在 Derby 和 SQLite 上对此进行了测试,所以这看起来与数据库通用。
为什么会这样?
我能做些什么来修复它?
我可以更改为 UNION 单独的 SELECT,但这更冗长,而且,我们正在动态生成 SQL,我宁愿不必更改我们的代码。
另一个解决方法是向数据库添加一个愚蠢的行,但这很混乱。
PS 主表是资产管理系统中的一个会话表,记录客户查找的资产。有不同类型的查找,每种类型都有一个单独的子表,此外还有一个属性子表,用于可以搜索的会话的键/值对。