1樓:匿名使用者
select * from sc where grad is null grad是null,
select * from sc where grad = "" grad是""空字串
你要理解null與""的區別.
null 是沒有的意思 不占用記憶體空間
""是空的字串 它是乙個字串,不過裡面沒有內容
2樓:匿名使用者
我給你舉個例子吧,比如插入資料到表tbl,tbl有2個字段id,name。
insert into tbl( id ,name ) values( 1, '' )
insert into tbl( id ) values( 1 )至於區別是怎麼回事我也說不清楚,不過這個時候就要用到這個區別。
3樓:虹玖天
is null用於查詢語句,=''用於更新語句
4樓:匿名使用者
select * from sc where grad is null 就是說查詢 sc 表中 grad列中不為空的選項
select * from sc where grad = "" 就是查詢sc表中 grad列中為空的選項
sql語句中「in」和「exist」有什麼區別?
5樓:手機使用者
本文主要分析了in和exists的區別與執行效率的問題:
in可以分為三類:
1、形如select * from t1 where f1 in ( 'a ', 'b '),應該和以下兩種比較效率。
select * from t1 where f1= 'a ' or f1= 'b '
或者 select * from t1 where f1 = 'a ' union all select * from t1 f1= 'b '
你可能指的不是這一類,這裡不做討論。
2、形如
select * from t1 where f1 in (select f1 from t2 where t2.fx= 'x '),
其中子查詢的where裡的條件不受外層查詢的影響,這類查詢一般情況下,自動優化會轉成exist語句,也就是效率和exist一樣。
3、形如
select * from t1 where f1 in (select f1 from t2 where t2.fx=t1.fx),
其中子查詢的where裡的條件受外層查詢的影響,這類查詢的效率要看相關條件涉及的字段的索引情況和資料量多少,一般認為效率不如exists。
除了第一類in語句都是可以轉化成exists 語句的,一般程式設計習慣應該是用exists而不用in.
a,b兩個表,
(1)當只顯示乙個表的資料如a,關係條件只乙個如id時,使用in更快:
select * from a where id in (select id from b)
(2)當只顯示乙個表的資料如a,關係條件不只乙個如id,col1時,使用in就不方便了,可以使用exists:
select * from awhere exists (select 1 from b where id = a.id and col1 = a.col1)
(3)當只顯示兩個表的資料時,使用in,exists都不合適,要使用連線:
select * from a left join b on id = a.id
所以使用何種方式,要根據要求來定。
這是一般情況下做的測試:
測試結果:
set statistics io on select * from sysobjects where exists (select 1 from syscolumns where id=syscolumns.id) select * from sysobjects where id in (select id from syscolumns ) set statistics io off (47 行受影響)
表 'syscolpars '。掃瞄計數 1,邏輯讀取 3 次,物理讀取 0 次,預讀 2 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
表 'sysschobjs '。掃瞄計數 1,邏輯讀取 3 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
(1 行受影響)
(44 行受影響)
表 'syscolpars '。掃瞄計數 47,邏輯讀取 97 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
表 'sysschobjs '。掃瞄計數 1,邏輯讀取 3 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
(1 行受影響)
set statistics io on select * from syscolumns where exists (select 1 from sysobjects where id=syscolumns.id) select * from syscolumns where id in (select id from sysobjects ) set statistics io off
(419 行受影響)
表 'syscolpars '。掃瞄計數 1,邏輯讀取 10 次,物理讀取 0 次,預讀 15 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
表 'sysschobjs '。掃瞄計數 1,邏輯讀取 3 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
(1 行受影響)
(419 行受影響)
表 'syscolpars '。掃瞄計數 1,邏輯讀取 10 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
表 'sysschobjs '。掃瞄計數 1,邏輯讀取 3 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
(1 行受影響)
測試結果(總體來講exists比in的效率高):
效率:條件因素的索引是非常關鍵的
把syscolumns 作為條件:syscolumns 資料大於sysobjects
用in掃瞄計數 47,邏輯讀取 97 次,
用exists
掃瞄計數 1,邏輯讀取 3 次
把sysobjects作為條件:sysobjects的資料少於syscolumns
exists比in多預讀 15 次
vfp命令和sql語句有什麼區別 20
6樓:匿名使用者
vfp對錶操作有自己的命令.
vfp還支援sql語句,相對於vfp自己的命令,更加簡潔快速. 不過就是對新手比較難.
有時vfp自己的命令要好多行才能搞定, sql語句一句搞定.
7樓:匿名使用者
vfp的命令 和 sql語句 是完全不同的兩套操縱資料庫的系統。
(1)vfp的程式 和 sql語句幾乎可以實現相同的功能。如此可以看出,sql的功能更強。
(2)sql語句是結構化的,vfp的語句是非結構化的。
(3)原本研發的xbase資料庫系統就是處理小型資料庫的,開始並不支援sql,只是後來才加入的。
8樓:懷躍折冬卉
1】一般來說,sql是指結構化查詢語言,它在所有資料庫管理系統中都可以用,那麼在vfp這個資料庫管理系統中也能用。
2】你可能說的是另乙個資料庫管理系統sqlserver,那麼它與vfp的區別是:
sqlserver是真正的中大型資料庫,vfp是桌面資料庫,使用方便、易學,但實際上犧牲了真正資料庫的一些功能,如安全性;此外,vfp既是資料庫又是程式語言(開發工具)。
select語句問題
可以。不過要看是在什麼情況下。如果在b s下,你可以用asp,jsp等生成js時可以用select讀出資料,然後生成變數,當然不能超出變數的定義規範。參考這個,修改乙個語句 select top 100 percent dbo.syscolumns.name as 欄位名稱 from dbo.sys...
資料庫SQL查詢語句的編寫,SQL中多條件同時查詢語句怎麼寫?
select max id from 表 where num 100 查最大id select from 表 where id select max id from 表 where num 100 and num 100 查id最大並且num為100的那條資料 sql select 語句 selec...
SQL語句中Sql是什麼意思,SQL語句中AS是什麼意思?
是且的意思,這句話的意思是 從article表中選擇所有列,這些列滿足type id為data type sql的值。data type sql是乙個表示式。不過。感覺怪怪的。你用的是oracle的sql 語句set define sql select from empwhere empno emp...