當前位置:首頁 » 編程語言 » sql語句not

sql語句not

發布時間: 2022-06-29 10:35:43

㈠ 請教sql語句中not like的用法

標准SQL中用like進行模糊查詢,有兩個通配符:%百分號代表任意個字元,_下劃線代表一個字元。

1、like'Mc%' 將搜索以字母 Mc 開頭的所有字元串。

2、like'%inger' 將搜索以字母 inger 結尾的所有字元串。

3、like'%en%' 將搜索在任何位置包含字母 en 的所有字元串。

SQL LIKE 操作符語法

『_':下劃線,表示1個任意字元;如 ... where name like '_am',表示僅第一位任意,並以'am'結尾,結果如"Tam","Mam","Pam"等。

'%』: 百分號,表示任意個任意字元;如 ... where name like 『%am',表示前面可以有任意位,只要以'am'結尾,結果如"abcam",「bcdefgham","qwertyuiopam","am"等等。

以上內容參考:網路-SQL LIKE

㈡ sql 語句「不包含」怎麼寫

sql語句中不包含就是not in。

如test表中數據如下:

㈢ 關於sql語句 (not exists)

not exits{ 是信息系 not exits(參加項目) }
為什麼是 信息系參加項目的
-- 不存在(是信息系 不存在(參加項目))
選出 不是信息系裡且不參加項目的人
選出 除過信息系裡參加項目的人和其他系的什麼什麼

㈣ 【急】SQL語句中否定的用法

簡單的說就是「符號+符號」「單詞+單詞」
比如,你要不屬於,也就是not in,你不可能寫! in.
再比如不等於,不可能寫not =,肯定是!=或者<>.
大概就是這個意思,用字母表達的時候就用not,用符號表達的時候,一般不用not

㈤ sql 語句 not in 問題 在線等

select
distinct
ss.singerpic
from
songlist
s
join
singerlist
ss
on
s.singerid
=ss.singerid
where
s.rtsp=1
not
in
(select
dic
from
a)
朋友,sql語法不是那樣的。

㈥ 關於SQL語句not in不執行

子查詢和主查詢的
條件
不一致。也就是說子查詢里查詢出來的結果可能和主查詢的第一個結果並不一樣。仔細看看你的
語句
,主查詢里有tj=2,而子查詢里卻是全部記錄。例如在下面這個情況下,你就得不到你想要的結果:
id
name
tj
0
a
1
1
b
1
2
c
2
3
d
2
你的主查詢返回的是id為2和3的兩條記錄,但子查詢卻返回了所有記錄,因此id為2的這條記錄(在主查詢中是第有條)並不能被篩選掉。

㈦ SQL語句中exists和not exists的用法,講得通俗易懂些。

exists : 強調的是是否返回結果集,不要求知道返回什麼, 比如:
select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要
exists引導的子句有結果集返回,那麼exists這個條件就算成立了,大家注意返回的欄位始終為1,如果改成「select 2 from grade where ...」,那麼返回的欄位就是2,這個數字沒有意義。所以exists子句不在乎返回什麼,而是在乎是不是有結果集返回。

而 exists 與 in 最大的區別在於 in引導的子句只能返回一個欄位,比如:
select name from student where sex = 'm' and mark in (select 1,2,3 from grade where ...)
,in子句返回了三個欄位,這是不正確的,exists子句是允許的,但in只允許有一個欄位返回,在1,2,3中隨便去了兩個欄位即可。

而not exists 和not in 分別是exists 和 in 的 對立面。
exists (sql 返回結果集為真)
not exists (sql 不返回結果集為真)
下面詳細描述not exists的過程:
如下:
表A
ID NAME
1 A1
2 A2
3 A3

表B
ID AID NAME
1 1 B1
2 2 B2
3 2 B3

表A和表B是1對多的關系 A.ID => B.AID

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID=B.AID)
執行結果為
1 A1
2 A2
原因可以按照如下分析
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
--->SELECT * FROM B WHERE B.AID=1有值返回真所以有數據

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2)
--->SELECT * FROM B WHERE B.AID=2有值返回真所以有數據

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3)
--->SELECT * FROM B WHERE B.AID=3無值返回真所以沒有數據

NOT EXISTS 就是反過來
SELECT ID,NAME FROM A WHERENOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)
執行結果為
3 A3
===========================================================================
EXISTS = IN,意思相同不過語法上有點點區別,好像使用IN效率要差點,應該是不會執行索引的原因
SELECT ID,NAME FROM A WHEREID IN (SELECT AID FROM B)

NOT EXISTS = NOT IN ,意思相同不過語法上有點點區別
SELECT ID,NAME FROM A WHEREIDNOT IN (SELECT AID FROM B)

有時候我們會遇到要選出某一列不重復,某一列作為選擇條件,其他列正常輸出的情況.
如下面的表table:
Id Name Class Count Date
1 蘋果 水果 10 2011-7-1
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 白菜 蔬菜 12 2011-7-1
2 青菜 蔬菜 19 2011-7-2
如果想要得到下面的結果:(Id唯一,Date選最近的一次)
1 香蕉 水果 15 2011-7-3
2 青菜 蔬菜 19 2011-7-2
正確的SQL語句是:
SELECT Id, Name, Class, Count, Date
FROM table t
WHERE (NOT EXISTS
(SELECT Id, Name, Class, Count, Date FROM table
WHERE Id = t.Id AND Date > t.Date))
如果用distinct,得不到這個結果, 因為distinct是作用與所有列的
SELECT DISTINCT Id, Name, Class, Count, Date FROM table
結果是表table的所有不同列都顯示出來,如下所示:
1 蘋果 水果 10 2011-7-1
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 白菜 蔬菜 12 2011-7-1
2 青菜 蔬菜 19 2011-7-2
如果用Group by也得不到需要的結果,因為Group by 要和聚合函數共同使用,所以對於Name,Class和Count列要麼使用Group by,要麼使用聚合函數. 如果寫成
SELECT Id, Name, Class, Count, MAX(Date)
FROM table
GROUP BY Id, Name, Class, Count
得到的結果是
1 蘋果 水果 10 2011-7-1
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 白菜 蔬菜 12 2011-7-1
2 青菜 蔬菜 19 2011-7-2
如果寫成
SELECT Id, MAX(Name), MAX(Class), MAX(Count), MAX(Date)
FROM table
GROUP BY Id
得到的結果是:
1 香蕉 水果 20 2011-7-3
2 青菜 蔬菜 19 2011-7-2
如果用in有時候也得不到結果,(有的時候可以得到,如果Date都不相同(沒有重復數據),或者是下面得到的Max(Date)只有一個值)
SELECT DISTINCT Id, Name, Class, Count, Date FROM table
WHERE (Date IN
(SELECT MAX(Date)
FROM table
GROUP BY Id))
得到的結果是:(因為MAX(Date)有兩個值2011-7-2,2011-7-3)
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 青菜 蔬菜 19 2011-7-2
注意in只允許有一個欄位返回
有一種方法可以實現:
SELECT Id, Name, Class, COUNT, Date
FROM table1 t
WHERE (Date =
(SELECT MAX(Date)
FROM table1
WHERE Id = t .Id))

㈧ sql語句報錯notsettime

是你mysql升級到5.7而引起的默認值不兼容的問題。
看看你的欄位名是什麼,我的是時間欄位,類型是datetime。想到可能是類型的默認值被限制了,查看sql_mode。果然:NO_ZERO_IN_DATE,NO_ZERO_DATE這兩個參數限制時間不能為0。
SQL數據定義功能:能夠定義資料庫的三級模式結構,即外模式、全局模式和內模式結構。在SQL中,外模式又叫做視圖(View),全局模式簡稱模式(Schema),內模式由系統根據資料庫模式自動實現,一般無需用戶過問。SQL數據操縱功能:包括對基本表和視圖的數據插入、刪除和修改,特別是具有很強的數據查詢功能。SQL的數據控制功能:主要是對用戶的訪問許可權加以控制,以保證系統的安全性。

㈨ plsql查詢語句中的not in什麼意思

查詢不在這個范圍類的數據。

例如:select * from student where classID notin (1,4,5)查出的就是classID不在1,4,5這個范圍內的數據。

不建議用not in這個關鍵詞來做查詢,理由:

1、效率低,2、在使用中容易出現問題,或查詢結果有誤

PL/SQL Developer是一個集成開發環境,專門開發面向Oracle資料庫的應用。PL/SQL也是一種程序語言,叫做過程化SQL語言(Proceral Language/SQL)。PL/SQL是Oracle資料庫對SQL語句的擴展。

在普通SQL語句的使用上增加了編程語言的特點,所以PL/SQL把數據操作和查詢語句組織在PL/SQL代碼的過程性單元中,通過邏輯判斷、循環等操作實現復雜的功能或者計算。MySQL 不支持 PL/SQL ,但支持Navicat Premium。

(9)sql語句not擴展閱讀:

plsql特性:

1、PL/SQL完善器

該完善器允許您通過用戶定義的規則對SQL和PL/SQL代碼進行規范化處理。在編譯、保存、打開一個文件時,代碼將自動被規范化。該特性提高了您編碼的生產力,改善了PL/SQL代碼的可讀性,促進了大規模工作團隊的協作。

2、SQL 窗口

該窗口允許您輸入任何SQL語句,並以柵格形式對結果進行觀察和編輯,支持按範例查詢模式,以便在某個結果集合中查找特定記錄。另外,還含有歷史緩存,您可以輕松調用先前執行過的SQL語句。該SQL編輯器提供了同PL/SQL編輯器相同的強大特性。

3、命令窗口

使用PL/SQL Developer的命令窗口能夠開發並運行SQL腳本。該窗口具有同SQL*Plus相同的感觀,另外還增加了一個內置的帶語法加強特性的腳本編輯器。這樣,您就可以開發自己的腳本,無需編輯腳本/保存腳本/轉換為SQL*Plus/運行腳本過程,也不用離開PL/SQL Developer集成開發環境。

參考資料來源:網路-plsql

熱點內容
linux下ntp伺服器搭建 發布:2024-09-08 08:26:46 瀏覽:742
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:171
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:778
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:101
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:209
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811
銀行支付密碼器怎麼用 發布:2024-09-08 06:39:52 瀏覽:513
蘋果手機清理瀏覽器緩存怎麼清理緩存 發布:2024-09-08 06:31:32 瀏覽:554