如果表格中存在錯誤或重複的數據,比較簡單、快捷的方法就是選定該數據,然後將其刪除。進行數據刪除時分為兩種:常用數據刪除的方法和偽列數據刪除的方法。
基本介紹
- 中文名:數據刪除
- 外文名:Data deletion
- 對象:表中錯誤或重複的數據
- 簡單問題:直接使用DELETE語句
- 複雜問題:先分割再使用DELETE語句
- 套用學科:資料庫原理
常用數據刪除方法
偽列數據刪除方法
偽列ROWID
CREATE TABLE student
(
NUM VARCHAR2(10) NOT NULL,
NAME VARCHAR2(10) NOT NULL,
MAJOR VARCHAR2(10) NULL,
BIRTHDAY DATE NULL,
PRIMARY KEY(NUM)
)
SELETE ROWID FROM student
ROWID
AAAOBSAAEAAAmwQAAA
AAAOBSAAEAAAmwQAAB
AAAOBSAAEAAAmwQAAC
... ... ...
AAAOBSAAEAAAmwQAAR
DELETE student WHERE ROWID IN('AAAOBSAAEAAAmwQAAA','AAAOBSAAEAAAmwQAAB',...
)
MFC ADO獲取記錄集
CString selstr="select * from tempstudent where birthday=to_date('1991-07-17','yyyy-mm-dd')";
Adoconn.GetRecordSet(selstr);
int Count = Adoconn.GetRecordCount();
CString name;
for(int j=0;j<Count;j++)
{
Adoconn.GetCollect("name",name);
Adoconn.m_pRecordset->MoveNext();
}
數據刪除的實現
提取偽列集合
根據偽列值刪除數據
int len=0,k;
CString rowid,rowidSet="",Deletesql;
CString selstr="select rowid from student";
Adoconn.GetRecordSet(selstr);
int Count=Adoconn.GetRecordCount();
while(Count>0)
{
k=Count>10?10:Count; //ROWID集合數不超過10個
for(int j=0;j<k;j++)
{
Adoconn.GetCollect("rowid",rowid);
rowidSet +="'"+","; //構造ROWID集合字元串
Adoconn.m_pRecordset->MoveNext();
}
len=rowidSet.Getlength()-1;
Deletesql="DELETE tempstudent WHERE rowid IN"; //構造動態SQL字元串
Deletesql+="("+rowidSet.Left(len)+")";
Adoconn.ExecuteSQl(Deletesql);
Count-=10;
rowidSet="";
}
Adoconn.Close; //關閉記錄