硬删除不多解释
有后悔药可以恢复数据。但是同时带来弊端。导致 查数据时 慢 尤其是一些特殊场景下。
目前 软删除的做法
第2种 方式 其实是最差的。因为 可以为null 导致 查询效率大打折扣。更重要的情况 会导致 全表扫描 如果数据量偏大千万不要贪图方便就是这要搞了,这类导致查询的性能瓶颈我在2个项目都有遇到过。
有网友提供说 加复合索引 (id, deleted_at) 应该也可以没有测试过性能能提高多少。如果你用过也可以告知一下我。让我长长姿势O(∩_∩)O哈哈~
>
如果您只是需要删除部分数据,可使用G3的数据清理功能。
如果 你是要写个什么软件的话,建议还是先写个数据库类,包括数据库连接,数据库一系列 *** 作方法都写好,然后直接用就是了,你这样,每涉及到一次数据库,就要重新写连接,和 *** 作,太麻烦了。
下面是实现对数据库 *** 作的类,仅供参考。
class DBhelper
{
string sqlconn;
SqlConnection conn;
public DBhelper()
{
sqlconn = SystemConfigurationConfigurationManagerAppSettings["sqlconn"];
conn = new SqlConnection(sqlconn);
}
public DBhelper(string sqlconn)
{
thissqlconn = sqlconn;
conn = new SqlConnection(sqlconn);
}
//检查数据库是否打开
public void CheakOpen()
{
if (connState != SystemDataConnectionStateOpen)
{
connOpen();
}
}
//检查数据库是否关闭
public void CheakClose()
{
if (connState != SystemDataConnectionStateClosed)
{
connClose();
}
}
//执行sql命令
public bool ExcuteNonQuery(string sql)
{
bool flag = false;
try
{
CheakOpen();
SqlCommand cmd = new SqlCommand(sql, conn);
cmdExecuteNonQuery();
flag = true;
}
catch (Exception)
{
flag = false;
}
CheakClose();
return flag;
}
public int ExcuteScaler(string sql)
{
int value=-1;
try
{
CheakOpen();
SqlCommand cmd = new SqlCommand(sql, conn);
value=intParse(cmdExecuteScalar()ToString());
return value;
}
catch (Exception)
{
value = -1;
}
CheakClose();
return value;
}
public SqlDataReader ExcuteReader(string sql)
{
CheakOpen();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader sdr = cmdExecuteReader();
return sdr;
}
public DataSet GetDataSet(string sql,string tableName)
{
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
sdaFill(ds,tableName);
return ds;
}
}
}
作为对Ayende文章的回应,UdiDahan强烈建议完全避免数据删除。所谓软删除主张在表中增加一个IsDeleted列以保持数据完整。如果某一行设置了IsDeleted标志列,那么这一行就被认为是已删除的。Ayende觉得这种方法“简单、容易理解、容易实现、容易
使用查询从数据库中删除一条或多条记录
了解如何使用查询删除数据
可以使用两类查询来删除 Access 数据库中的数据。具体使用哪种查询取决于要执行的删除的类型。
如果需要删除一个或多个表中的记录的个别字段,您可以使用更新查询将现有值更改为空值(即不包含数据)或零长度字符串(中间不包含空格的一对双引号)。
您需要使用更新查询来删除个别字段中的数据,因为在默认情况下,删除查询仅删除整行。使用更新查询“删除”数据的过程包含以下主要步骤:创建一个选择查询并确保该查询仅返回您要删除的数据。然后将此查询转换为更新查询,并使用 NULL 值或零长度字符串作为更新值,再运行查询以更新现有数据。
如果需要删除整条记录(行),您可以使用删除查询。
默认情况下,删除查询将删除每个字段中的所有数据,包括唯一标识记录的键值。运行该查询时,它始终会从表中删除整个行。此过程包括以下主要步骤:创建一个选择查询并确保该查询返回您要删除的记录,然后将此查询转换为删除查询,并运行该查询以删除数据。
进行 *** 作时,请记住:如果要删除的记录位于一对多关系的“一”端,必须先更改关系的属性,然后才能运行查询,本文后面的准备删除相关数据一节介绍了如何执行此任务。您还必须进行其他一些更改才能执行删除 *** 作,因为默认情况下,Access 禁止删除一对多关系的“一”端中的数据。
如果需要了解有关一对多关系的详细信息,请参阅文章数据库设计基础和创建、编辑或删除关系。
此外,还请记住:更新或删除部分或整条记录后,将不能撤消更改,因此,运行删除查询之前,应始终先备份数据。有关详细信息,请参阅本文后面的备份数据库。
以下各节中的步骤介绍了如何创建更新查询以删除单个字段中的数据;以及如何创建删除查询以删除整条记录。
注释 通常,只有当需要快速更改或删除大量数据时,才使用更新查询和删除查询。如果只需要删除少量记录(便于手动删除的任何数量),您可以在数据表视图中打开表,选择要删除的字段或行,然后按 Delete。
有关删除数据的其他方法的详细信息,请参阅从数据库中删除一条或多条记录一文。
数据库中删除记录的 *** 作
要使ASP应用程序能够删除数据库表中的现有记录,一般要完成四个步骤,也就是说删除页中必须具有四个构造块:
①一个用于从数据库表格中检索记录的过滤记录集(创建记录集);
②一个要删除记录数据的只读显示;
③一个将删除命令发送给服务器的“提交”按钮;
④一个更新数据库表的“删除记录”服务器行为,即对删除了记录的数据库表进行刷新。
删除页一次只能包含一个记录编辑服务器行为。不能在删除页中同时还使用“插入记录”或“更新记录”的服务器行为。
打开“删除记录”对话框(如下图所示),可以通过Dreamweaver8的“插入”菜单来 *** 作,也可以通过Dreamweaver8的“服务器行为”面板 *** 作。 *** 作步骤类似于数据库中添加、更新记录的 *** 作。
此对话框用于将服务器行为添加到包含HTM表单的页,以便当用户单击表单上的“提交”按钮时可以在数据库表中删除记录。对话框的设置步骤:
1、在“连接”下拉列表菜单中,选择一个到数据库的连接。如果您需要定义连接,则单击“定义”按钮。
2、在“从表格中删除”下拉列表菜单中,选择包含要删除的记录的数据库表。
3、在“选取记录自”下拉列表菜单中,指定一个包含要删除的记录集。
4、在“唯一键列”下拉列表菜单中,选择一个键列(通常是记录ID列)来标识数据库表中的记录。如果该值是一个数字,则选择“数字”选项。键列通常只接受数值,但有时候也接受文本值。
5、在“提交此表单以删除”d出菜单中,指定具有将删除命令发送到服务器的“提交”按钮的HTML表单。
6、在“删除后,转到”框中,输入在从数据库表中删除记录后打开的页或单击“浏览”按钮浏览到该文件。
7、单击“确定”。
参考:Dreamweaver8帮助
[二00六年八月十四日上午]
以上就是关于mysql软删除和硬删除全部的内容,包括:mysql软删除和硬删除、请问捷顺收费软件SQL数据库纪录怎样删除、visual studio2017使用c#删除SQL数据库里的一行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)