OR是SQL的關(guān)鍵字,所以不管是SQL SERVER,還是oracle,都是用OR來表示或的
成都創(chuàng)新互聯(lián)成立于2013年,先為德欽等服務(wù)建站,德欽等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為德欽企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
不是你寫錯了,而是你后面的那個or xx is null應(yīng)該是你table里面有超多這樣的紀錄,所以就出現(xiàn)了很多條,可以通過括號來改變and or的次序
譬如
select * from [表名] where name = 'xx' and (password is null or xx is null )
and就是與的意思,所有條件都必須成立,
or就是或的意思,只要其中一個條件成立就行。
and優(yōu)先級大于or。
加括號則優(yōu)先執(zhí)行or,后執(zhí)行and;不加括號,會先執(zhí)行and,再執(zhí)行or,所以查詢結(jié)果不同。舉例:
數(shù)據(jù)庫存在數(shù)據(jù):
Thomas Carter
William?Carter
Thomas?King
執(zhí)行:SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'
結(jié)果為:
Thomas?Carter
William?Carter
執(zhí)行:SELECT * FROM Persons WHERE FirstName='Thomas' OR FirstName='William'
AND LastName='Carter'
結(jié)果為:
Thomas?Carter
William?Carter
Thomas?King
擴展資料:
ORACLE數(shù)據(jù)庫特點:
1、完整的數(shù)據(jù)管理功能:
(1)數(shù)據(jù)的大量性
(2)數(shù)據(jù)的保存的持久性
(3)數(shù)據(jù)的共享性
(4)數(shù)據(jù)的可靠性
2、完備關(guān)系的產(chǎn)品:
(1)信息準(zhǔn)則---關(guān)系型DBMS的所有信息都應(yīng)在邏輯上用一種方法,即表中的值顯式地表示;
(2)保證訪問的準(zhǔn)則
(3)視圖更新準(zhǔn)則---只要形成視圖的表中的數(shù)據(jù)變化了,相應(yīng)的視圖中的數(shù)據(jù)同時變化
(4)數(shù)據(jù)物理性和邏輯性獨立準(zhǔn)則
3、分布式處理功能:ORACLE數(shù)據(jù)庫自第5版起就提供了分布式處理能力,到第7版就有比較完善的分布式數(shù)據(jù)庫功能了,一個ORACLE分布式數(shù)據(jù)庫由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的關(guān)系型產(chǎn)品構(gòu)成。
4、用ORACLE能輕松的實現(xiàn)數(shù)據(jù)倉庫的操作。
參考資料:百度百科-Oracle數(shù)據(jù)庫
要優(yōu)化or查詢,只要你知道一點:
sql or查詢是左截斷的,也就是指要or符合條件,就不再走后面的or checking了
明白了這個,唯一的優(yōu)化方案就是
把越能命中的or語句放到最前面,增加前面減少后面的or 邏輯判斷