sql中from
A. sql語句中,加上FROM和不加有什麼區別
沒有任何區別,加上FROM更規一些。
delete from Sheet1 where sheet1.to_mobile in (select to_mobile from Sheet2)
與
delete Sheet1 where sheet1.to_mobile in (select to_mobile from Sheet2)
以及
delete from Sheet1
和
delete Sheet1
都是相同的。
可以在企業管理器中運行一下,如果不加入FROM,系統會自動加上的。
(1)sql中from擴展閱讀:
數據修改是添加、刪除或更改信息的意思。
使用 INSERT、DELETE 和UPDATE之類的 Transact-SQL 語句在資料庫中添加、刪除或更改信息的操作。 在SQL語句中,INSERT、DELETE 和 UPDATE操作的對象是資料庫表中的數據,也被稱作數據操縱語言(DML)。
INSERT 語句語法:INSERT INTO 表名 (列名1,列名2...)VALUES (值1,值2...)
DELETE語句語法:DELETE FROM 表名 WHERE 選出符合要求的記錄
UPDATE語句語法:UPDATE 表名 SET 列名=值1 WHERE 選出符合要求的記錄
B. sql為什麼from
給你舉個例子吧,假如你有個表叫T,然後裡面有ID,Name,Age,
select * from T where Age='18';
這句話的意思就是從T表裡找到Age為18歲的所有記錄。
這樣你就明白了吧
from的意思就是你要操作的數據來自哪個表,
from T,TC 就是從T和TC兩個表進行操作
C. sql from語句
from後面一般加的是資料庫的名字
意思是你這條sql語句是要在這個資料庫中檢索的。
即「從....中尋找符合...條件的數據」
D. sql中 from 的問題
select s.phone_no
from( select q.phone_no as phone_no ,sum(k.call_times) aas totalr
From VWVW_MID_PAR_USER_DAY q inner join pmid_09.vw_mid_bll_tot_voc_day k on q.phone_no=k.phone_no
Where deal_date <='2008-11-30'
and q.region_code='09'
and q.city_code='12'
and q.VIRTL_USER_CODE='0'
and q.USER_STAT_CODE<'a'
Group by 1) as s
where s.totalr>0
E. 在SQL語言查詢語句中,from實現哪種關系代數
簡單點的就是from後面跟表名,復雜點的就是from(select。。。。。),括弧里的是創建另一個臨時表、或是視圖什麼的。
F. sql 中from 用法
select *(這里指表裡的欄位,*代表所有欄位) from table(table是表名,就是你從哪張表裡讀取數據)
整個sql句就是select * from table
就是從table這張表取出所有欄位的值
也可以在table後面加上條件語句where
比如
select * from table where id=『01』
指從table表裡找出所有欄位id=01的數據的所有欄位的值
G. SQL中能不能通過from接一個查詢結果
可以的
需要注意的是:
sql 查詢出來的結果都是一張表格的 而from就是從某張表格查詢
例子
select b.* from (select a.* from table a where a.name='xm')temp left join table b on temp.id = b.id;
將a表中name=xm'的所有記錄查詢出來 作為結果temp(temp也是一張表)
然後連接b表根據欄位id來連接
H. 第四十五章 SQL命令 FROM(一)
一個SELECT子句,指定要查詢的一個或多個表。
FROM 子句指定在 SELECT 語句中查詢數據的一個或多個表(或視圖或子查詢)。
如果沒有查詢表數據,則 FROM 子句是可選的,如下所述。
多個表被指定為逗號分隔的列表,或者由其他 JOIN 語法分隔的列表。
可以為每個表名提供一個別名。
在 SELECT 語句中為多個表指定欄位名時使用表名別名。
如果 FROM 子句中指定了兩個(或更多)表,可以通過指定 tablename 來指明需要哪個表的欄位。
SELECT SELECT -item 子句中每個欄位的欄位名。
由於表名通常是長名稱,因此短表名別名在此上下文中很有用( t-alias.fieldname )。
下面的示例展示了表名別名的使用:
AS關鍵字可以省略。
它是為了兼容性和清晰度而提供的。
table-ref 名稱可以是限定的( schema.tablename )或非限定的( tablename )。
非限定表名(或視圖名)的模式名使用模式搜索路徑或系統范圍的默認模式名提供:
當在 FROM 子句中指定多個表名時, SQL將對這些表執行連接操作。
執行的連接類型由每對表名之間的連接關鍵字短語或符號指定。
當兩個表名用逗號分隔時,將執行交叉連接。
執行連接的順序是由SQL查詢優化器自動確定的,而不是基於查詢中列出的表的順序。
如果需要,可以通過指定查詢優化選項來控制執行連接的順序。
以下三個 SELECT 語句顯示了兩個單獨表的行數,以及指定兩個表的 SELECT 的行數。後者產生一個更大的表,即笛卡爾乘積,其中第一個表中的每一行都與第二個表中的每一行相匹配,這一操作稱為交叉聯接( Cross Join )。
從 Sample.Company、Sample.Vendor 中選擇計數( * )
在大多數情況下,交叉連接的大量數據復制是不可取的,而某些其他類型的連接更可取。
如果在 SELECT 語句中指定 WHERE 子句,則執行交叉聯接,然後 WHERE 子句謂詞確定結果集。這等效於使用 ON 子句執行內聯接。因此,以下兩個示例返回相同的結果:
默認情況下, SQL查詢優化器使用復雜而靈活的演算法來優化涉及聯接操作和/或多個索引的復雜查詢的性能。在大多數情況下,這些默認值可提供最佳性能。但是,在極少數情況下,可能希望向查詢優化器提供「提示」,指定查詢優化的一個或多個方面。因此, SQL在 FROM 子句中提供了 OPTIMIZE-OPTION 關鍵字。可以按任意順序指定多個優化關鍵字,並以空格分隔。
可以在簡單的 SELECT 語句、 CREATE VIEW DEFINITION SELECT 語句或 FROM 子句的子查詢 SELECT 語句中使用 OPTIMIZE-OPTION FROM 子句關鍵字。
此可選關鍵字指定提供任何好處的所有索引都用於查詢聯接順序中的第一個表。只有在定義了多個索引時才應使用此關鍵字。優化器的默認設置是只使用優化器認為最有益的那些索引。默認情況下,這包括所有有效的相等索引和其他類型的選定索引。 %ALLINDEX 使用所有類型的所有可能有益的索引。測試所有索引的開銷較大,但在某些情況下,它可能會提供比默認優化更好的性能。當使用多個范圍條件索引和低效相等條件索引時,此選項特別有用。在這些情況下,查詢優化器可能無法獲得准確的索引選擇性。 %ALLINDEX 可以與 %IGNOREINDEX 一起使用,以包括/排除特定索引。通常, %ALLINDEX 不應與 TOP 子句查詢一起使用。
可以將 %STARTTABLE 與 %ALLINDEX 配合使用,以指定 %ALLINDEX 應用於哪個表。
可以使用 %NOINDEX 條件級別提示為特定條件的 %ALLINDEX 指定異常。
%NOINDEX 提示放置在不應該使用索引的每個查詢選擇條件的前面。
例如, WHERE %NOINDEX hiredate < ? 。
這在絕大多數數據沒有被排除的情況下最常用。
對於小於( < )或大於( > )條件,使用%NOINDEX條件級別提示通常是有益的。
對於相等條件,使用 %NOINDEX 條件級提示沒有任何好處。
對於連接條件, ON 子句連接支持 %NOINDEX 。
此可選關鍵字指定查詢優化器應開始使用指定的表名執行聯接。 tablename 為稍後在聯接序列中指定的表命名。其餘表的聯接順序留給查詢優化器。此提示在功能上與 %STARTTABLE 相同,但為提供了以任意順序指定聯接表序列的靈活性。
tablename 必須是簡單標識符,可以是表別名,也可以是非限定表名。不能使用限定表名( schema.table )。如果查詢指定了表別名,則必須將該表別名用作表名。例如:
%FIRSTTABLE 和 %STARTTABLE 都允許指定用於聯接操作的初始表。 %INORDER 允許指定用於聯接操作的所有表的順序。這三個關鍵詞是相互排斥的;只指定一個和一個。如果不使用這些關鍵字,查詢優化器將按照其認為最佳的順序對表執行聯接,而不管這些表的列出順序如何。
不能使用 %FIRSTTABLE 或 %STARTTABLE 從左外部聯接的右側(或右外部聯接的左側)開始聯接順序。嘗試這樣做會導致 SQLCODE-34 錯誤:「優化器無法找到可用的聯接順序」。
此可選關鍵字指定編譯器優化器檢查所有可選聯接序列以最大化訪問性能。例如,在創建存儲過程時,增加的編譯時間可能值得提供更優化的訪問。默認優化是,當 FROM 子句中有許多表時,不檢查不太可能的連接序列。 %FULL 將覆蓋此默認行為。
當 FROM 子句包含使用箭頭語法訪問的表時,可以同時指定 %INORDER 和 %FULL 關鍵字,這些表的順序不受約束。
此可選關鍵字指定查詢優化器忽略指定的索引或索引列表。(為了向後兼容,支持不推薦使用的同義詞 %IGNOREINDICES 。)
在此關鍵字後面指定一個或多個索引名。多個索引名必須用逗號分隔。可以使用以下格式之一指定索引名:
方案名和表名是可選的。如果省略,則使用當前默認架構和指定為 from table-ref 的表名。星號( * )通配符指定指定表的所有索引名。可以按任意順序指定索引名稱。 SQL不會驗證指定的索引名(或它們的模式名和表名);不存在或重復的索引名將被忽略。
通過使用此優化約束,可以使查詢優化器不使用對特定查詢不是最佳的索引。通過指定除一個索引名之外的所有索引名,實際上可以強制查詢優化器使用剩餘的索引。
還可以通過在條件前面加上 %noindex 關鍵字來忽略特定條件表達式的特定索引。
此可選關鍵字指定查詢優化器按照表在 FROM 子句中列出的順序執行聯接。這最大限度地減少了編譯時間。子查詢的扁平化和索引使用不受影響。
%INORDER 不能與交叉聯接或右外部聯接一起使用。如果指定的表順序與外部聯接的要求不一致,則會生成 SQLCODE-34 錯誤:「Optimizer找不到可用的聯接順序。」為避免這種情況,建議在與外部聯接一起使用 %INORDER 時,僅與ANSI樣式的左外部聯接或完全外部聯接一起使用。
視圖和表子查詢按照它們在 FROM 子句中指定的順序進行處理。
將此關鍵字與 %FIRSTTABLE 和 %STARTTABLE 進行比較,這兩個關鍵字都只指定初始連接表,而不指定完整的連接順序。
不能同時使用 %INORDER 和 %PARALLEL 優化;如果同時指定了這兩個優化,則忽略 %PARALLEL 。
此可選關鍵字在量化的子查詢(返回布爾值的子查詢)的 FROM 子句中指定。它指定編譯器優化器應抑制子查詢展平。此優化選項禁用「扁平化」(默認),它通過將子查詢有效地集成子查詢到查詢中來優化包含量化的子查詢的查詢:將子查詢的表添加到查詢的 FROM 子句中,並將子查詢中的條件轉換為查詢的 WHERE 子句中的聯接或限制。
以下是使用 %NOFLATTEN 的量化子查詢的示例:
%INORDER 和 %STARTTABLE 優化隱式指定 %NOFLATTEN 。
此可選關鍵字在子查詢的 FROM 子句中指定。它指定編譯器優化器應該禁止子查詢到視圖的轉換。此優化選項通過將子查詢作為內聯視圖添加到查詢的 FROM 子句來禁用對包含子查詢的查詢的優化;子查詢與查詢欄位的比較將作為聯接移動到查詢的 WHERE 子句。
此可選關鍵字在流式子查詢的 FROM 子句中指定-返回行的結果集的子查詢,即封閉查詢的 FROM 子句中的子查詢。它指定編譯器優化器應該禁止將子查詢(或視圖)合並到包含查詢中。
在下面的示例中,查詢優化器通常會通過對子查詢執行 Sample.Person 的笛卡爾乘積聯接來「減少」該查詢。 %NOREDUCE 優化選項可防止出現這種情況。 IRIS改為在 GNAME 上構建臨時索引,並在此臨時索引上執行聯接:
此可選關鍵字在量化的子查詢(返回布爾值的子查詢)的 FROM 子句中指定。它指定編譯器優化器應禁止集值子查詢優化( SVSO )。
在大多數情況下,集值子查詢優化可以提高 [NOT] EXISTS 和 [NOT] In 子查詢的性能,特別是對於只有一個可分離關聯條件的子查詢。
它通過用滿足條件的數據值填充臨時索引來實現這一點。
IRIS不是重復執行子查詢,而是在臨時索引中查找這些值。
例如, SVSO 優化了 NOT EXISTS (SELECT P.num FROM Procts P WHERE S.num=P.num AND P.color='Pink') ,創建臨時索引。
SVSO 優化了 ALL 或 ANY 關鍵字與相對操作符( > , >= , < ,或 <= )和子查詢的子查詢,如 … WHERE S.num > ALL (SELECT P.num…)
它通過將子查詢表達式 sqbExpr (在本例中為 P.num )替換為 MIN(sqbExpr) 或 MAX(sqbExpr) 來實現這一點。
當 sqbExpr 上有索引時,它支持快速計算。
%INORDER 和 %STARTTABLE 優化不禁止集值子查詢優化。
當使用帶有 ORDER BY 子句的 TOP 子句時指定此可選關鍵字。
默認情況下, TOP 和 ORDER By 優化到第一行的最快時間。
相反,指定 %NOTOPOPT (沒有 TOP 優化)將優化查詢,以最快地檢索完整的結果集。
此可選關鍵字在查詢或子查詢的 FROM 子句中指定。
它禁用為多個 OR 條件和針對 UNION 查詢表達式的子查詢提供的自動優化。
這些自動優化將多個 OR 條件轉換為 UNION 子查詢,或將 UNION 子查詢轉換為 OR 條件。
這些 UNION/OR 轉換允許 EXISTS 和其他低級謂詞遷移到頂級條件,以便IRIS查詢優化器索引使用它們。
這些默認轉換在大多數情況下都是可取的。
然而,在某些情況下,這些 UNION/OR 轉換會帶來很大的開銷負擔。
%NOUNIONOROPT 對與此 FROM 子句關聯的 WHERE 子句中的所有條件禁用這些自動 UNION/OR 轉換。
因此,在一個復雜的查詢中,可以對一個子查詢禁用這些自動UNION/OR優化,同時在其他子查詢中允許它們。
UNION %PARALLEL 關鍵字禁用自動 UNION-to- or 優化。
%INORDER 和 %STARTTABLE 優化抑制了 OR-to-UNION 優化。
%INORDER 和 %STARTTABLE 優化不抑制 UNION-to-OR 優化。
I. SQL中SELECT中的FROM子句可否帶另外一個SELECT
可以
SQL中SELECT嵌套
SELECT語句
是很常見的
SQL語句
,嵌套SELECT語句也叫
子查詢
,一個SELECT
語句的查詢結果能夠作為另一個語句的輸入值。子查詢不但能夠出現在Where子句中,也能夠出現在from子句中,作為一個
臨時表
使用,也能夠出現在select
list中,作為一個欄位值來返回。
例1:select子查詢出現在Where子句中
select
ename,deptno,sal
from
emp
where
deptno=(select
deptno
from
dept
where
loc='NEW
YORK');
例2:select子查詢出現在from子句中
SELECT
ename,job,sal,rownum
FROM
(SELECT
ename,job,sal
FROM
EMP
ORDER
BY
sal);
例3:select子查詢出現在select
list中,作為一個欄位值來返回
SELECT
ename,job,sal
FROM
EMP
WHERE
deptno
in
(
SELECT
deptno
FROM
dept
WHERE
dname
LIKE
'A%');
(9)sql中from擴展閱讀
在select子句里能支持直接嵌套一個select子查詢,但是該select子查詢返回的
結果集
必須是單行,返回多
行時
會提示ORA-01427:
single-row
subquery
returns
more
than
one
row(ORA-01427:
單行子查詢返回多個行
):
select
(
SELECT
id
from
data_
dictionary
where
id=1)
From
v_photosum_attach
;
select
(
SELECT
id
from
data_dictionary
where
id=lock_purpost)
From
v_photosum_attach
;
注釋:lock_purpost是表v_photosum_attach里的一列的列名。
參考資料來源:
搜狗網路
-子查詢
J. SQL中能不能通過from接一個查詢結果
可以的x0dx0a需要注意的是:x0dx0asql 查詢出來的結果都是一張表格的 而from就是從某張表格查詢x0dx0a例子x0dx0aselect b.* from (select a.* from table a where a.name='xm')temp left join table b on temp.id = b.id;x0dx0a將a表中name=xm'的所有記錄查詢出來 作為結果temp(temp也是一張表)x0dx0a然後連接b表根據欄位id來連接