标签: sql

什么是最常见的SQL反模式?

我们所有使用关系数据库的人都已经学习(或正在学习)SQL是不同的.引出期望的结果,并且有效地进行,涉及一个繁琐的过程,其部分特征是学习不熟悉的范例,并发现我们最熟悉的一些编程模式在这里不起作用.您见过(或自己承诺)的常见反模式有哪些?

sql anti-patterns

226
推荐指数
28
解决办法
7万
查看次数

ON [PRIMARY]是什么意思?

我正在创建一个SQL安装脚本,我正在使用别人的脚本作为示例.这是脚本的一个例子:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[be_Categories](
    [CategoryID] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT [DF_be_Categories_CategoryID]  DEFAULT (newid()),
    [CategoryName] [nvarchar](50) NULL,
    [Description] [nvarchar](200) NULL,
    [ParentID] [uniqueidentifier] NULL,
 CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED 
(
    [CategoryID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

有谁知道ON [PRIMARY]命令有什么作用?

sql database sql-server database-design

226
推荐指数
4
解决办法
10万
查看次数

使用电子邮件地址作为主键?

与自动递增数字相比,电子邮件地址是主要的不良候选人吗?

我们的Web应用程序需要电子邮件地址在系统中是唯一的.所以,我想过用电子邮件地址作为主键.但是我的同事建议字符串比较比整数比较慢.

是不是使用电子邮件作为主键的正当理由?

我们正在使用PostgreSQL.

sql database postgresql database-design

225
推荐指数
10
解决办法
3万
查看次数

MySQL,最好插入NULL还是空字符串?

我在一个有很多不同领域的网站上有一个表格.某些字段是可选字段,而某些字段是必填字段.在我的数据库中,我有一个包含所有这些值的表,是否更好的做法是将NULL值或空字符串插入到用户未放置任何数据的DB列中?

mysql sql sql-null

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

如何解释数据库中数字的精度和比例?

我在数据库中指定了以下列:decimal(5,2)

怎么解释这个?

根据SQL Server Management Studio中查看的列上的属性,我可以看到它表示:十进制(数字精度,数字刻度).

精确度和规模在实际意义上是什么意思?

很容易将其解释为带有5位数和2位小数位的十进制数...即12345.12

PS我已经能够从同事那里确定正确的答案,但很难在网上找到答案.因此,我想在stackoverflow上记录问题和答案,以备将来参考.

sql database precision decimal scale

224
推荐指数
3
解决办法
26万
查看次数

如果只在sql server中存在外键约束,我该怎么办?

我可以使用以下代码删除表,但不知道如何使用约束执行相同的操作:

IF EXISTS(SELECT 1 FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'TableName') AND type = (N'U')) DROP TABLE TableName
go 
Run Code Online (Sandbox Code Playgroud)

我还使用此代码添加约束:

ALTER TABLE [dbo].[TableName] 
  WITH CHECK ADD CONSTRAINT [FK_TableName_TableName2] FOREIGN KEY([FK_Name])
    REFERENCES [dbo].[TableName2] ([ID])
go
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005

223
推荐指数
6
解决办法
25万
查看次数

读取提交和可重复读取之间的区别

我认为上述隔离级别非常相似.有人可以用一些很好的例子来描述主要区别是什么?

sql sql-server isolation-level

223
推荐指数
6
解决办法
11万
查看次数

在v4真正意味着什么之前,MongoDB不符合ACID标准?

我不是数据库专家,也没有正式的计算机科学背景,所以请耐心等待.我想知道如果你使用v4之前的旧版MongoDB,可能会发生现实世界的负面情况,这些版本不符合ACID标准.这适用于任何ACID不合规数据库.

我知道MongoDB可以执行Atomic Operations,但它们不支持"传统锁定和复杂事务",主要是出于性能原因.我也理解数据库事务的重要性,以及数据库何时用于银行的示例,并且您正在更新所有需要同步的多个记录,您希望事务恢复到初始状态(如果有)停电所以信贷等于购买等

但是当我开始讨论MongoDB时,我们这些不了解数据库实际实现方式的技术细节的人开始抛出以下语句:

MongoDB比MySQL和Postgres更快,但是有一个很小的机会,比如百万分之一,它"无法正确保存".

"无法正确保存"部分指的是这样一种理解:如果在您写入MongoDB的那一刻就出现断电,那么就有机会获得特定记录(比如你在跟踪具有10个属性的文档中的综合浏览量)每个),其中一个文件只保存了5个属性...这意味着随着时间的推移,你的网页浏览计数器将"略微"关闭.你永远不会知道多少,你知道他们将是99.999%正确,但不是100%.这是因为,除非您特意将其作为mongodb原子操作,否则操作不能保证是原子操作.

所以我的问题是,对于何时以及为什么MongoDB可能无法"正确保存"的正确解释是什么?ACID的哪些部分不满足,在什么情况下,以及您如何知道0.001%的数据何时关闭?不能以某种方式解决这个问题吗?如果没有,这似乎意味着您不应该users在MongoDB中存储像表这样的内容,因为记录可能无法保存.但话说回来,1/1,000,000用户可能只需要"再次尝试注册",不是吗?

我只是在寻找一个列表,列出了何时/为什么会出现像AIOD不合规数据库(例如MongoDB)的负面情况,理想情况下是否有标准的解决方法(比如运行后台作业来清理数据,或者只使用SQL等等) .

sql database acid mongodb nosql

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

错误代码:2013.查询期间与MySQL服务器的连接丢失

我得到了错误代码:2013.当我尝试使用MySQL Workbench向表添加索引时,在查询错误期间丢失了与MySQL服务器的连接.我还注意到每当我运行长查询时它就会出现.

有没有增加超时值?

mysql sql database mysql-workbench

222
推荐指数
15
解决办法
43万
查看次数

Rails原始SQL示例

如何将此代码转换为原始sql并在rails中使用?因为当我在heroku中部署此代码时,会出现请求超时错误.我认为如果我使用原始sql,这将更快.

@payments = PaymentDetail.joins(:project).order('payment_details.created_at desc')
@payment_errors = PaymentError.joins(:project).order('payment_errors.created_at desc')

@all_payments = (@payments + @payment_errors)
Run Code Online (Sandbox Code Playgroud)

sql ruby-on-rails

222
推荐指数
5
解决办法
22万
查看次数