復習ocp考題的時候有道關於and和or的題目,拿出來看一下and和or的區別:
Choose two
Examine the description of the BOOKS_TRANSACTIONS table
Name Null? Type
----------------------------------------------------------------------------------------------
THANSACTION_ID NOT NULL VARCHAR2(6)
TRANSACTION_TYPE VARCHAR2(3)
BORROWED_DATE DATE
BOOK_ID VARCHAR2(6)
MEMBER_ID VARCHAR2(6)
Examine this partial SQL statement:
SELECT * FROM books_transctions;
Which two WHERE conditions give the same result?
A) WHERE borrowed_date = SYSDATE AND (transaction_type= 'RM' OR member_id IN ('A101','A102'));
B) WHERE borrowed_date = SYSDATE AND transaction_type= 'RM' OR member_id IN ('A101','A102');
C) WHERE borrowed_date = SYSDATE AND (transaction_type= 'RM' AND member_id='A101' OR member_id = 'A102'));
D) WHERE (borrowed_date = SYSDATE AND transaction_type= 'RM' ) OR member_id IN ('A101','A102');
E) WHERE borrowed_date = SYSDATE AND (transaction_type= 'RM' AND ( member_id= 'A101' OR member_id = 'A102' ) );
Correct Answer: BD
那么,and和or有什么區別呢 ?
1.and表示交
2.or表示並
3.and的優先級比or高
然后我們來看下上面這個題目:(誰能一眼看出答案?)
A:表示 orrowed_date = SYSDATE and transaction_type= 'RM' 交集於 orrowed_date = SYSDATE and member_id IN ('A101','A102')
B:表示WHERE borrowed_date = SYSDATE AND transaction_type= 'RM' 交集於 member_id IN ('A101','A102');
C:表示WHERE borrowed_date = SYSDATE AND transaction_type= 'RM' AND member_id='A101' 交集於 WHERE borrowed_date = SYSDATE and member_id = 'A102'
D:這個就很明顯了,前面有個括號
表示(borrowed_date = SYSDATE AND transaction_type= 'RM' )交集於 member_id IN ('A101','A102');
E:表示在member_id= 'A101' 交集於 member_id = 'A102'的結果集里面找到 borrowed_date = SYSDATE AND transaction_type= 'RM'
也就是 WHERE borrowed_date = SYSDATE AND transaction_type= 'RM' and member_id= 'A101' 交集於 WHERE borrowed_date = SYSDATE AND transaction_type= 'RM' and member_id= 'A102'