1. sql server如何徹底刪除登錄用戶
下面的示例從當前資料庫虛搜刪除用戶 test
EXEC sp_dropuser 'test'沖譽則
下面的示例從 SQL Server 中刪除登錄 test。
EXEC sp_droplogin 'test'散棚
或者直接執行
drop user test
drop login test
2. sql如何用語句 刪除一個登錄用戶
delete from user where user_name = :user_name
3. pplsql刪除用戶刪不了z怎麼批量刪進程
plsql刪除⼤量數據_oracle快速刪除⼤批量數據⽅法(全部刪除,條件刪除,刪除⼤量重。。。
全部刪除
如果是刪除某個表的所有數據,並且不需要回滾,使⽤ TRUNCATE 就ok了。
SQL> truncate table table_name;
條件刪除
如果刪除數據有條件,如 delete from tablename where col1 = 'lucy';這時除了加索引外, 你可以刪除時加NO LOGGING選項,不寫⽇志加快刪除速度
引⽤某⼈的⼀句話「⼏千萬條記錄的表都不分區,明顯有問題嘛。Oracle的技術⽀持⼯程師建議,2,000,000條以上記錄的表,應該考慮分區,你完全可以按照時間為維度來建表,每個⽉的數據存放在⼀個分區表中,以後要刪除⼀個⽉的數據,直接truncate table即可,不記錄⽇志,速度很快。」
刪除⼤量重復記錄
《轉》做項⽬的時候,⼀位同事導數據的時候,不⼩⼼把⼀個表中的數據全都搞重了,也就是說,這個表⾥所有的記錄都有⼀條重復的。這個表的數據是千萬級的,⽽且是⽣產系統。也就是說,不能把所有的記錄都刪除,⽽且必須快速的把重復記錄刪掉。
對此,總結了⼀下刪除重復記錄的⽅法,以及每種⽅法的優缺點。
為了陳訴⽅便,假設表名為Tbl,表中有三列col1,col2,col3,其中col1,col2是主鍵,並且,col1,col2上加了索引。
1、通過創建臨時表
可以把數據先導⼊到⼀個臨時表中,然後刪除原表的數據,再把數據導回原表,SQL語句如下:
creat table tbl_tmp (select distinct* from tbl);
truncate table tbl; //清空表記錄i
nsert into tbl select * from tbl_tmp;//將臨時表中的數據插回來。
這種⽅法可以實現需求,但是很明顯,對於⼀個千萬級記錄的表,這種⽅法很慢,在⽣產系統中,這會給系統帶來很⼤的開銷,不可⾏。
2、利⽤rowid
在oracle中,每⼀條記錄都有⼀個rowid,rowid在整個資料庫中是唯⼀的,rowid確定了每條記錄是oracle中的哪⼀個數據⽂件、塊、⾏上。在重復的記錄中,可能所有列的內容都相同,但rowid不會相同。SQL語句如下:
delete from tbl where rowid in (select a.rowid
from tbl a, tbl b
where a.rowid>b.rowid and a.col1=b.col1 and a.col2 = b.col2)
如果已經知道每條記錄只有⼀條重復的,這個sql語句適⽤。但是如果每條記錄的重復記錄有N條,這個N是未知的,就要考慮適⽤下⾯這種⽅法了。
3、利⽤max或min函數
這⾥也要使⽤rowid,與上⾯不同的是結合max或min函數來實現。SQL語句如下
delete from tbl a
where rowid not in (
select max(b.rowid)
from tbl b
where a.col1=b.col1 and a.col2 = b.col2); //這⾥max使⽤min也可以
或者⽤下⾯的語句
delete from tbl awhere rowid
select max(b.rowid)
from tbl b
where a.col1=b.col1 and a.col2 = b.col2); //這⾥如果把max換成min的話,前⾯的where⼦句中需要把""
跟上⾯的⽅法思路基本是⼀樣的,不過使⽤了group by,減少了顯性的⽐較條件,提⾼效率。SQL語句如下:
deletefrom tbl where rowid not in (
select max(rowid)
from tbl tgroup by t.col1, t.col2);
delete from tbl where (col1, col2) in (
select col1,col2
from tblgroup bycol1,col2havingcount(*) >1) and rowidnotin(selectnin(rowid)fromtblgroup bycol1,
col2havingcount(*) >1) ----
還有⼀種⽅法,對於表中有重復記錄的記錄⽐較少的,並且有索引的情況,⽐較適⽤。假定col1,col2上有索引,並且tbl表中有重復記錄的記錄⽐較少,SQL語句如下4、利⽤group by,提⾼效率
¥
5
網路文庫VIP限時優惠現在開通,立享6億+VIP內容
立即獲取
plsql刪除大量數據_oracle快速刪除大批量數據方法(全部刪除,條件刪除,刪除大量重。。。
plsql刪除⼤量數據_oracle快速刪除⼤批量數據⽅法(全部刪除,條件刪除,刪除⼤量重。。。
全部刪除
如果是刪除某個表的所有數據,並且不需要回滾,使⽤ TRUNCATE 就ok了。
SQL> truncate table table_name;
條件刪除
如果刪除數據有條件,如 delete from tablename where col1 = 'lucy';這時除了加索引外, 你可以刪除時加NO LOGGING選項,不寫⽇志加快刪除速度
第 1 頁
引⽤某⼈的⼀句話「⼏千萬條記錄的表都不分區,明顯有問題嘛。Oracle的技術⽀持⼯程師建議,2,000,000條以上記錄的表,應該考慮分區,你完全可以按照時間為維度來建表,每個⽉的數據存放在⼀個分區表中,以後要刪除⼀個⽉的數據,直接truncate table即可,不記錄⽇志,速度很快。」
刪除⼤量重復記錄
《轉》做項⽬的時候,⼀位同事導數據的時候,不⼩⼼把⼀個表中的數據全都搞重了,也就是說,這個表⾥所有的記錄都有⼀條重復的。這個表的數據是千萬級的,⽽且是⽣產系統。也就是說,不能把所有的記錄都刪除,⽽且必須快速的把重復記錄刪掉。
第 2 頁
對此,總結了⼀下刪除重復記錄的⽅法,以及每種⽅法的優缺點。
為了陳訴⽅便,假設表名為Tbl,表中有三列col1,col2,col3,其中col1,col2是主鍵,並且,col1,col2上加了索引。
1、通過創建臨時表
可以把數據先導⼊到⼀個臨時表中,然後刪除原表的數據,再把數據導回原表,SQL語句如下:
creat table tbl_tmp (select distinct* from tbl);
truncate table tbl; //清空表記錄i
第 3 頁
nsert into tbl select * from tbl_tmp;//將臨時表中的數據插回來。
這種⽅法可以實現需求,但是很明顯,對於⼀個千萬級記錄的表,這種⽅法很慢,在⽣產系統中,這會給系統帶來很⼤的開銷,不可⾏。
2、利⽤rowid
在oracle中,每⼀條記錄都有⼀個rowid,rowid在整個資料庫中是唯⼀的,rowid確定了每條記錄是oracle中的哪⼀個數據⽂件、塊、⾏上。在重復的記錄中,可能所有列的內容都相同,但rowid不會相同。SQL語句如下:
第 4 頁
delete from tbl where rowid in (select a.rowid
from tbl a, tbl b
where a.rowid>b.rowid and a.col1=b.col1 and a.col2 = b.col2)
如果已經知道每條記錄只有⼀條重復的,這個sql語句適⽤。但是如果每條記錄的重復記錄有N條,這個N是未知的,就要考慮適⽤下⾯這種⽅法了。
3、利⽤max或min函數
這⾥也要使⽤rowid,與上⾯不同的是結合max或min函數來實現。SQL語句如下
第 5 頁
delete from tbl a
where rowid not in (
select max(b.rowid)
from tbl b
where a.col1=b.col1 and a.col2 = b.col2); //這⾥max使⽤min也可以
或者⽤下⾯的語句
delete from tbl awhere rowid
select max(b.rowid)
from tbl b
第 6 頁
where a.col1=b.col1 and a.col2 = b.col2); //這⾥如果把max換成min的話,前⾯的where⼦句中需要把""
跟上⾯的⽅法思路基本是⼀樣的,不過使⽤了group by,減少了顯性的⽐較條件,提⾼效率。SQL語句如下:
deletefrom tbl where rowid not in (
select max(rowid)
from tbl tgroup by t.col1, t.col2);
delete from tbl where (col1, col2) in (
select col1,col2
第 7 頁
from tblgroup bycol1,col2havingcount(*) >1) and rowidnotin(selectnin(rowid)fromtblgroup bycol1,
col2havingcount(*) >1) ----
還有⼀種⽅法,對於表中有重復記錄的記錄⽐較少的,並且有索引的情況,⽐較適⽤。假定col1,col2上有索引,並且tbl表中有重復記錄的記錄⽐較少,SQL語句如下4、利⽤group by,提⾼效率
4. sql 批量刪除語句 怎麼寫
DELETE FROM TestTable WHERE 【刪除條件】
DELETE FROM TestTable WHERE ID IN (1, 3, 54, 68) 適用於用戶在界面上不連續的選擇多項進行刪除時
5. SQL2005刪除用戶的語句
例如:
delete from studentInfo where stuid = 2
6. SQLServer中刪除約束和用戶
在資料庫建旁碼立過程中 由於表是你新建的 根本沒有必埋啟拿要查詢
創建用戶 abc 密碼是1234 的查詢如下
if exists(select * from sysloginswhere loginnname='abc')
exec sp_droplogin'abc' --調用 存儲過程sp_droplogin 刪除用戶 abc
go
exec sp_addlogin 'abc','1234' --調用 存儲過程sp_addlogin 創建用戶 abc
go
授彎搭權那個語句select 和SElect沒什麼去別 在sql中世不區分大小寫的 所以不能寫倆個 什麼書還有這錯誤呢 建議電腦書盡量買點正版的 免得誤認
7. SQL Server 刪除登陸用戶的怎麼寫的
sp_droplogin
刪除
Microsoft®
SQL
Server™
登錄,以阻止使用該登錄名訪問
SQL
Server。
語法
sp_droplogin
[
@loginame
=
]
'login'
參數
[@loginame
=]
'login'
將被刪除的登錄。login
的數據類型為
sysname,沒有默認值。login
必須已經存在於
SQL
Server
中。
返回代碼值
0(成功)或
1(失敗)
8. 關於SQL刪除語句TRUNCATE和DELETE
簡單說:TRUNCATE 刪除數據表的結構 DELETE 刪除數據表的數據 結構還在 如為欄位設置了標識列 identity(1,1)TRUNCATE 刪除數據後 再添加數據 就從1開始自增DELETE 刪除數據後 再添加數據 原來的使用的就不能再用了 也就是不是從1開始了 因為原來的佔用了
9. SqlDeveloper怎麼查詢刪除用戶的SQL語句
問題都不清楚,如果是刪除資料庫用戶,需要用drop語句;如果是刪除user表的用戶,使用delete語句。
drop xxx from 資料庫名;
delete table where 條件=要刪除的用戶;
10. 怎樣用sql語句刪除一用戶
deletefrom[表]where[用戶ID]='****'
採用以上語句,如果有提示外鍵約束,請先把其它表中的數據刪除掉!