vfp命令和sql語句有什麼區別

2021-03-25 11:09:08 字數 3677 閱讀 1290

1樓:匿名使用者

vfp對錶操作有自己的命令.

vfp還支援sql語句,相對於vfp自己的命令,更加簡潔快速. 不過就是對新手比較難.

有時vfp自己的命令要好多行才能搞定, sql語句一句搞定.

2樓:匿名使用者

vfp的命令 和 sql語句 是完全不同的兩套操縱資料庫的系統。

(1)vfp的程式 和 sql語句幾乎可以實現相同的功能。如此可以看出,sql的功能更強。

(2)sql語句是結構化的,vfp的語句是非結構化的。

(3)原本研發的xbase資料庫系統就是處理小型資料庫的,開始並不支援sql,只是後來才加入的。

3樓:懷躍折冬卉

1】一般來說,sql是指結構化查詢語言,它在所有資料庫管理系統中都可以用,那麼在vfp這個資料庫管理系統中也能用。

2】你可能說的是另乙個資料庫管理系統sqlserver,那麼它與vfp的區別是:

sqlserver是真正的中大型資料庫,vfp是桌面資料庫,使用方便、易學,但實際上犧牲了真正資料庫的一些功能,如安全性;此外,vfp既是資料庫又是程式語言(開發工具)。

sql語句中「in」和「exist」有什麼區別?

4樓:手機使用者

本文主要分析了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中select幾種命令的區別

5樓:匿名使用者

1.select 0        啟用未使用的序號最小的工作區作為當前

回工答作區

2.select(0)     返回當前工作區的編號3.select 1        啟用第1個工作區作為當前工作區4.select          單獨使用將出錯

6樓:匿名使用者

select 0

這是選取最小的空工作區作為當前工作區. 一般接下來的**是用use開啟一專個表,以防在已開啟表的工作屬開啟另乙個表而關閉前乙個表.

select(0)

錯誤select 1

選取1號工作區作為當前工作區

select錯誤

if語句和switch有什麼不同

if和來switch都是條件判斷語句,在效果源上是沒有什麼差別的,而不同,我們可以從效率上來講 舉乙個很簡單的例子 if a b else 如果將這個例子放在switch 語句中,也並不是不能實現,但是實現起來可能會比較麻煩一些,因為在switch語句中 case中要求的是常量,一般是不能進行邏輯判...

Godness和Goodness有什麼區別

godness是神仙,一般感嘆的時候用,類似於,我的佛祖啊 my godness goodness可以理解為好的東西,good ness,金山翻譯作仁慈 goodness 仁慈,善良 god 上帝 god本身的就是名詞了,哪有godness 這個說法?說 神的話直接說god就可以了.goodness...

sql裡面查詢時用is和用有什麼區別

is 指的是符合一copy種性質 如所選修的課是空,說明課的屬性是空 假如學號sno與課程號 o及成績grade的關係是sc sno,o,grade 那麼這個條件應該是這麼表達的 o is null 指的是數值上的等價 如課程的成績是0 那麼這個條件應該是這麼表達 grade 0 sql 中 is ...