sql語句not in 和not exist各自的用法和區別
in 和 exists也是很好區別的.
in 是一個集合運算符.
a in {a,c,d,s,d。.}
這個運算中,前面是一個元素,后面是一個集合,集合中的元素類型是和前面的元素一樣的.
而exists是一個存在判斷,如果后面的查詢中有結果,則exists為真,否則為假.
in 運算用在語句中,它后面帶的select 一定是選一個字段,而不是select *.
比如說你要判斷某班是否存在一個名為"小明"的學生,你可以用in 運算:
"小明" in (select sname from student)
這樣(select sname from student) 返回的是一個全班姓名的集合,in用于判斷"小明"是否為此集合中的一個數據;
同時,你也可以用exists語句:
exists (select * from student where sname="小明")
請教sql語句中not like的用法
標準SQL中用like進行模糊查詢,有兩個通配符:%百分號代表任意個字符,_下劃線代表一個字符。
例如查詢姓名中包含“曉”的人,where子句可以寫成:where name like '%曉%'
姓名由兩個字構成,并且第二個字是“紅”,可以寫成:where name like '_紅'
如果對like進行否定,前面加上not即可
查詢姓名中不包含“曉”的人:where name not like '%曉%'
姓名由兩個字構成,第二個字不是“紅”:where name not like '_紅'
怎么用用sql語句中的not exists來寫語句
使用 NOT EXISTS 的子查詢
NOT EXISTS 與 EXISTS 的工作方式類似,只是如果子查詢不返回行,那么使用 NOT EXISTS 的 WHERE 子句會得到令人滿意的結果。
例如,要查找不出版商業書籍的出版商的名稱:
USE pubs
SELECT pub_name
FROM publishers
WHERE NOT EXISTS
(SELECT *
FROM titles
WHERE pub_id = *_id
AND type = 'business')
下面是結果集:
pub_name
----------------------------------------
Binnet & Hardley
Five Lakes Publishing
Ramona Publishers
GGG&G
Scootney Books
Lucerne Publishing
(6 row(s) affected)
下面的查詢查找已經不銷售的書的名稱。
USE pubs
SELECT title
FROM titles
WHERE NOT EXISTS
(SELECT title_id
FROM sales
WHERE title_id = *_id)
下面是結果集:
title
----------------------------------
The Psychology of Computer Cooking
Net Etiquette
(2 row(s)