标签: sql

如何在数据库中表示继承?

我正在考虑如何在SQL Server数据库中表示复杂的结构.

考虑一个需要存储一系列对象细节的应用程序,这些对象共享一些属性,但有许多其他属性不常见.例如,商业保险计划可能包括同一保单内的责任,汽车,财产和赔偿保险.

在C#等中实现它是微不足道的,因为您可以创建一个带有Sections集合的Policy,其中Section是根据各种类型的封面所需继承的.但是,关系数据库似乎不容易这样做.

我可以看到有两个主要选择:

  1. 为所有可能的变体创建一个Policy表,然后是一个Sections表,其中包含所需的所有字段,其中大部分都是null.

  2. 创建一个Policy表和许多Section表,每个表对应一种封面.

这两种替代方案似乎都不令人满意,特别是因为必须在所有Sections中编写查询,这将涉及大量连接或大量空检查.

这种情况的最佳做法是什么?

sql database inheritance database-design class-table-inheritance

209
推荐指数
5
解决办法
9万
查看次数

SELECT*FROM X WHERE使用Dapper ORM标识IN(...)

当IN子句的值列表来自业务逻辑时,使用Dapper ORM使用IN子句编写查询的最佳方法是什么?例如,假设我有一个查询:

SELECT * 
  FROM SomeTable 
 WHERE id IN (commaSeparatedListOfIDs)
Run Code Online (Sandbox Code Playgroud)

commaSeparatedListOfIDs是从业务逻辑传入的,它可以是任何类型的IEnumerable(of Integer).在这种情况下,我将如何构造查询?我是否必须做到目前为止我一直在做的事情,这基本上是字符串连接,还是有一些我不知道的高级参数映射技术?

.net sql dapper

209
推荐指数
7
解决办法
9万
查看次数

用于在MySQL数据库中存储货币值的最佳数据类型

货币值的最佳SQL数据类型是什么?我正在使用MySQL,但更喜欢数据库独立类型.

mysql sql sqldatatypes

208
推荐指数
8
解决办法
18万
查看次数

有人可以版权SQL查询吗?

我在一个学区工作.每年我们都必须从学生管理系统中导出学生名单,然后将其发送给处理我们在线考试的公司.

所以要做这个出口,我们必须雇用一个知道我们学生管理系统内部运作的人.他编写了一个sql(Adaptive Sybase SQL Anywhere)查询,将学生导出到我们需要的csv文件中.这是在我开始为区工作之前,所以有一段时间我认为这是一个实际的应用程序,直到我自己进行导出的时候.

每年他都会向我们收取500美元的费用来更新这个查询,以便为当年的学生出口.所以当我发现它只是一个查询(.bat文件和.sql文件)时,我的想法是"我可以自己更新".我所要做的就是改变查询中的年份(例如2009年到2010年).

查询(.sql文件)本身在顶部有这个注释:

// This code was writtend by [the guy]
// and is the property of [his company]...Copyright 2005,2006,2008,2009
// This code MAY NOT BE USED without the expressed written consent of 
// [his company].
Run Code Online (Sandbox Code Playgroud)

(是的,它确实说"写".)

所以现在我的老板担心我们侵犯了版权.那家伙会发现我自己更新了查询,因为我们今年没有让他更新它并采取法律行动.

回到主题的问题:他真的可以对此查询进行版权保护吗?如果是这样,我们自己修改了侵犯版权的行为吗?在我看来,单个查询不是程序代码.它更像是命令行命令.但我不知道它在法律上是什么.

sql

208
推荐指数
18
解决办法
1万
查看次数

可以使用外键的表列为NULL吗?

我有一个表有几个ID列到其他表.

我希望外键只有在我放入数据时才能强制完整性.如果我稍后进行更新以填充该列,那么它还应该检查约束.

(这可能是数据库服务器依赖的,我使用MySQL和InnoDB表类型)

我相信这是一个合理的期望,但如果我错了,请纠正我.

mysql sql database foreign-keys

208
推荐指数
4
解决办法
20万
查看次数

如何使用新的PostgreSQL JSON数据类型中的字段进行查询?

我正在为PostgreSQL 9.2中的新JSON函数寻找一些文档和/或示例.

具体来说,给定一系列JSON记录:

[
  {name: "Toby", occupation: "Software Engineer"},
  {name: "Zaphod", occupation: "Galactic President"}
]
Run Code Online (Sandbox Code Playgroud)

如何编写SQL以按名称查找记录?

在vanilla SQL中:

SELECT * from json_data WHERE "name" = "Toby"
Run Code Online (Sandbox Code Playgroud)

官方开发手册非常稀少:

更新我

我已经汇总了详细介绍PostgreSQL 9.2目前可能实现的内容.使用一些自定义函数,可以执行以下操作:

SELECT id, json_string(data,'name') FROM things
WHERE json_string(data,'name') LIKE 'G%';
Run Code Online (Sandbox Code Playgroud)

更新II

我现在已将我的JSON函数移动到他们自己的项目中:

PostSQL - 一组用于将PostgreSQL和PL/v8转换为完全令人敬畏的JSON文档存储的函数

sql postgresql json postgresql-9.2 postgresql-9.3

208
推荐指数
3
解决办法
18万
查看次数

从多个表中选择count(*)

如何选择count(*),从两个不同的表(叫他们tab1tab2),其结果为:

Count_1   Count_2
123       456
Run Code Online (Sandbox Code Playgroud)

我试过这个:

select count(*) Count_1 from schema.tab1 union all select count(*) Count_2 from schema.tab2
Run Code Online (Sandbox Code Playgroud)

但我只有:

Count_1
123
456
Run Code Online (Sandbox Code Playgroud)

sql oracle count

207
推荐指数
14
解决办法
36万
查看次数

SQL区分大小写的字符串比较

如何比较字符串,以便只有在每个字符串的情况相同时才进行比较.例如:

Select * from a_table where attribute = 'k'
Run Code Online (Sandbox Code Playgroud)

...将返回属性为"K"的行.我不想要这种行为.

sql sql-server

207
推荐指数
5
解决办法
18万
查看次数

为什么Oracle 9i将空字符串视为NULL?

我知道它确实考虑过'' NULL,但这并没有太多告诉我为什么会这样.据我所知,SQL规范''与NULL- 不一样- 一个是有效数据,另一个是缺少相同的信息.

随意推测,但请说明是否是这种情况.如果甲骨文的任何人都能评论它,那就太棒了!

sql string oracle null

206
推荐指数
4
解决办法
7万
查看次数

206
推荐指数
5
解决办法
15万
查看次数