Ⅰ SQL語句:怎樣顯示表裡不存在的數據
那變數表總可以建吧
declare @taba TABLE([tabid] [varchar(20)] NOT NULL)
insert @taba values('1111111111111')
insert @taba values('333333333333')
....
select * from @taba where tabid not in (select id from AAA)
沒有個存儲的地方是輸出不了身份證號的,所以必須有臨時表或者變數表
要不也可以這樣
select id from AAA where id in ('1111111111111','333333333333','43434343434',.....)
選出已經在AAA表中存在而且在這對號碼中已存在的號碼,再到EXCEL中利用公式刪除相應的就行了
Ⅱ sql資料庫連接不上 提示資料庫不可用或者資料庫不存在
1、點擊桌面上的「開始」圖標。
Ⅲ 關於sql查詢b表中存在,a表中不存在的數據
這實際上是求非交集(差集)問題,sql語句求差集相對於求交集的辦法要少得多。
求差集方法中,使用not in關鍵字進行篩選在邏輯上最容易理解,很多人都會想到利用到它,數據量不大時還行,但是它有個重大缺陷,那就是在碰到大數據表的情況下其運行效率極低,有沒有可被利用的索引效率都一樣極差。我曾在利用大數據表的測試中,發現not in 語句常常要花費數小時才能返回結果,最誇張的例子耗時竟然超過一天!在返回結果前數據查詢會處在"假死"狀態,讓人感覺是返回了空集似的,其實不是那樣的,只是資料庫引擎尚未完成運算而已。
在有可被利用的索引情況下,我們可以利用非存在not exists子句來篩選出兩表之間的差集,其運行效率是非常高的。以題主的語句為例可改寫如下:
原來使用not in篩選差集,大數據表效率極差:
SELECT ipdz FROM ipdz_b WHERE ipdz not in(select ipdz_d from zj_b);
而使用not exists篩選差集,大數據表有索引可利用時返回結果酒快多了:
select b.ipdz from ipdz_b b where not exists(
select 1 from zj_b a where a.ipdz_d=b.ipdz);
請留意不要踩not exists的坑!盡管它在有可被利用的索引時運行效率極高,但是如果沒可利用的索引它會跟not in一樣在遇到大數據表時, 運行運行效率也很糟!
在沒有索引可被利用的情況下,建議利用左(右)聯接出現的null值來求出差集,但是需要留意並小心處理因兩表連接所導致的記錄行變多問題。
下面是以題主的表結構為例的sql語句寫法,其返回結果集的速度還是很不錯的:
left join 篩選差集:
select b.ipdz from ipdz_b b left join zj_b a on
a.ipdz_d=b.ipdz where a.ipdz_d is null;
這里假設a表的ipdz_d是唯一的,如果非唯一需調整如下
select b.ipdz from ipdz_b b left join (
select distinct ipzd_d from zj_b) a on
a.ipdz_d=b.ipdz where a.ipdz_d is null;
總結:
小數據量not in隨便用,此方法邏輯簡單,語句易於編寫;
大數據量在有可利用的索引情況下,建議首選 not exists(因為效率最高);
大數據量時,有沒有可被利用的索引not in都要避免使用。而not exists 在沒索引可利用時也應避免使用,此時建議使用左left join或右連接返回差集會有比較好的表現。
後兩種方法在邏輯上不太好理解,還要處理因連接導致的記錄行變多問題,語句編寫相對麻煩。
Ⅳ 如何判斷SQL中某個資料庫是否存在
在SQL Server資料庫編程時,抄常常需襲要判斷一個資料庫是否已經存在,如果不存在則創建此資料庫。常用的方法有以下三種:
1. select * From master.dbo.sysdatabases where name='test_db'
如果不存在查詢結果,則說明name所表示的資料庫不存在
2. object_id('test_db')
如果無法獲取對象ID(null),則說明此對象不存在;常用
if object_id('test_db') is null
或者
if (select object_id('test_db')) is null
3. db_id('test_db')
如果不能獲取資料庫ID,則說明name所表示的資料庫不存在;實際上此種方法也是在sysdatabases中查找,並返回資料庫的ID;常用
if db_id('test_db') is null
或者
if (select db_id('test_db')) is null
Ⅳ 在SQL2008資料庫中 判斷如果資料庫存在就刪除 如果不存在就創建 語法是什麼
use master
go
if exists(select * from sysdatabases where name='test')
drop database test
go
create database test
go
use test
create table Table1 (大名,varchar(20),年齡 int,地址 varchar(50))
insert into table1 values('王朝',20,'江蘇鹽城')
insert into table1 values('馬漢',20,'江蘇泰州')
go
Ⅵ SQL資料庫中刪除一個表在另一個表中不存在的記錄
1. 採用not exists 執行速度快delete from T_AD where not exists (select 1 from T_AD_PLAY where T_AD.N_CODE =T_AD_PLAY.N_CODE ) 2. 採用專not in 執行速度慢屬Delete From T_AD Where N_AD Not In(Select N_AD From T_AD_PLAY)
Ⅶ 如何徹底刪除sql中的資料庫
停止資料庫的 運行狀態
進入資料庫的安裝文件路徑
找到被強行注入的資料庫名稱表明的兩個數據文件
直接刪除即可。
Ⅷ SQL資料庫刪除指定目錄下文件不存在的記錄的語句
你用的什麼語言呢?我給你一個ASP的,
PICPATH=RS("SMT_pic")
Set fso = Server.CreateObject("Scripting.FileSystemObject")
if fso.FileExists(server.MapPath("&PICPATH&")) then
fso.DeleteFile(server.MapPath("&PICPATH&"))
CONN.EXECUTE("delete from SMT_pic where SMT_pic='"&PICPATH&"'")
Response.Write("成功刪除文件:" & server.MapPath("&PICPATH&"))
end if
set fso=nothing
Ⅸ sql2000資料庫不存在或者拒絕訪問
第1步,依次單擊「開始」→「所有程序」→Microsoft SQL Server→「伺服器網路實用工具」,打開「SQL Server網路實用工具」對話框。從該對話框中可以看到伺服器啟用了哪些協議,一般而言應該啟用命名管道及TCP/IP,如圖2008120213所示。
圖2008120213 SQL Server網路實用工具
2
第2步,在「啟用的協議」列表框中選中TCP/IP選項並單擊「屬性」按鈕,打開hanjiangit-TCP/IP對話框。在該對話框中檢查SQL Server服務默認埠的設置,默認會使用1433埠。如果選取「隱藏伺服器」復選框,則客戶端將無法通過枚舉伺服器來看到這台SQL Server伺服器,從而起到保護作用。如果檢查沒有問題單擊「確定」按鈕,如圖2008120214所示。
圖2008120214 檢查TCP/IP屬性
3
第3步,檢查完伺服器端的網路配置,接著要到客戶端檢查客戶端的網路配置。在安裝了SQL Server客戶端的計算機中依次單擊「開始/所有程序/Microsoft SQL Server/客戶端網路實用工具」,打開「SQL Server客戶端網路實用工具」對話框。在該對話框中可以看到客戶端啟用了哪些協議,一般而言同樣需要啟用命名管道(Named Pipes)及TCP/IP,如圖2008120215所示。
圖2008120215 SQL Server客戶端網路實用工具
4
第4步,在「按順序啟用協議」列表中單擊選中TCP/IP選項,並單擊「屬性」按鈕。在打開的TCP/IP對話框中可以檢查客戶端默認連接埠的設置,該埠必須與伺服器一致。如果沒有問題單擊「確定」按鈕,如圖2008120216所示。
圖2008120216 檢查客戶端使用的埠
5
第5步,在「SQL Server客戶端網路實用工具」對話框中單擊「別名」選項卡,可以為伺服器配置別名。伺服器的別名是用於連接的名稱,連接參數中的伺服器是真正的伺服器名稱,兩者可以相同或不同。例如可以使用SQL Server來代替真正的伺服器名稱hanjiangit,並使用網路庫「Named Pipes(命名管道)」。確認伺服器別名沒有問題,單擊「確定」按鈕,如圖2008120217所示。
圖2008120217 配置SQL Server
6
通過對以上參數進行檢查並配置,基本可以排除本例所提到的故障。
END
注意事項
除了上述原因及解決方法,用戶還可以從以下幾個方面進行檢查:
1.檢查網路物理連接
使用Ping命令測試伺服器IP地址或伺服器名稱,如果Ping伺服器IP地址時失敗,說明物理連接有問題,這時要檢查硬體設備(如網卡、交換機、路由器等)。還有一種可能是由於客戶端和伺服器之間安裝有防火牆軟體,防火牆可能會屏蔽對 Ping、Telnet 等請求的響應。在檢查連接問題時建議先把防火牆軟體暫時關閉,或者打開所有被封閉的埠。
如果Ping伺服器IP地址成功而Ping伺服器名稱失敗,則說明名字解析有問題。有時SQL伺服器跟客戶端不屬於同一個網段,這時可能會無法直接使用伺服器名稱來標識該伺服器。不過藉助HOSTS文件也能進行名字解析。用「記事本」程序打開HOSTS文件(該文件一般位於%SystemRoot%\system32\drivers\etc中),添加一條IP地址與伺服器名稱的對應記錄(如10.115.223.188 hanjiangit)。
2.用Telnet命令檢查SQL Server伺服器工作狀態。
執行命令「Telnet 伺服器IP地址:1433」,如果命令執行成功則可以看到屏幕一閃之後游標在左上角不停閃動,這說明 SQL Server伺服器工作正常,並且正在監聽1433埠的TCP/IP連接;如果命令返回「無法打開連接」的錯誤信息,則說明伺服器沒有啟動SQL Server服務,也可能伺服器未使用 TCP/IP,或者伺服器沒有在SQL Server的默認埠1433上監聽。
3.在SQL Server伺服器上檢查伺服器端的網路配置。
一般需要檢查是否啟用了命名管道、是否啟用了TCP/IP燈方面。