『壹』 sql server中, 什麼是子查詢.!
子查詢是指將一條SQL Sever語句嵌入到另一條SQL Sever語句中。資料庫引擎將子查詢做為虛表執行查詢操作。子查詢可做為連接語句中的一個表,可做為選擇語句中的一個值,也可以是SQL Sever查詢子句,還可以是SQL Sever查詢子句的字句,與數據操作語句混合在一起。 子查詢的執行依賴於嵌套查詢。查詢樹從最里層開始,一層一層向外執行。高層的嵌套查詢可以訪問低層嵌套查詢的結果。
有兩種子查詢類型:標准和相關。標准子查詢執行一次,結果反饋給父查詢。相關子查詢每行執行一次,由父查詢找回。
舉一個簡單的例子:要找出「工程部」中工資超過該部門平均工資的員工的員工編號和姓名:
Select 員工編號,姓名
FROM 員工庫
Where WORKDEPT = '工程部'
AND SALARY > (Select AVG(工資)
FROM 員工庫
Where WORKDEPT = '工程部')
看懂沒有?
『貳』 sql子查詢
從s_emp表查詢出的結果集有first_name,title兩列數據,條件是title等於查詢select title
from s_emp
where last_name='Smith'結果集的數據,並且last_name欄位轉換為大寫字母形式等於SMITH.
--any:用標量值與單列集中的值進行比較。
--upper:大小寫轉換。
--and:邏輯或且非中的且。
『叄』 SQL查詢種類數
selectcount(商品種類)as種類數from你的表groupby商品種類
『肆』 sql server 的各種子查詢方法有哪些
有:1.單行單列子查詢;2.多行單列子查詢;3.單行多列子查詢;4.多行多列子查詢;5.相關子查詢;6.在form子查詢中使用子查詢;7.在ddl中使用自查詢;8.使用with字句的子查詢。還有介紹本書,《Oracle 10g 資料庫基礎教程》的第300頁到302頁
『伍』 SQL語言中,子查詢的條件依賴父查詢,這類查詢稱為:
這種查詢稱為 嵌套查詢
1 .指在一個外層查詢中包含有另一個內層查詢。其中外層查詢稱為主查詢,內層查詢稱為子查詢。
2 .SQL允許多層嵌套,由內而外地進行分析,子查詢的結果作為主查詢的查詢條件
『陸』 sql 子查詢有哪些何時用子查詢 子查詢的語法是怎麼樣
我就幫你直接翻譯了,和你的英文一一對應,你看好
查 *(所有數據) 從 users(表名) 當 levers_id (列值) = (查 levers_id (列值) 從 levers (表名) 當 levers_id(列名) = 1)
請加分吧
『柒』 SQL查詢語句中,什麼叫子查詢
嵌套SELECT語句也叫子查詢,一個
SELECT
語句的查詢結果能夠作為另一個語句的輸入值。子查詢不但能夠出現在Where子句中,也能夠出現在from子句中,作為一個臨時表使用,也能夠出現在select
list中,作為一個欄位值來返回。
1、單行子查詢
:單行子查詢是指子查詢的返回結果只有一行數據。當主查詢語句的條件語句中引用子查詢結果時可用單行比較符號(=,
>,
<,
>=,
<=,
<>)來進行比較。
例:
select
ename,deptno,sal
from
emp
where
deptno=(select
deptno
from
dept
where
loc='NEW
YORK');
2、多行子查詢:多行子查詢即是子查詢的返回結果是多行數據。當主查詢語句的條件語句中引用子查詢結果時必須用多行比較符號(IN,ALL,ANY)來進行比較。其中,IN的含義是匹配子查詢結果中的任一個值即可("IN"
操作符,能夠測試某個值是否在一個列表中),ALL則必須要符合子查詢的所有值才可,ANY要符合子查詢結果的任何一個值即可。而且須注意ALL
和ANY
操作符不能單獨使用,而只能與單行比較符(=、>、<
、>=
、<=
、<>)結合使用。
例:
1).多行子查詢使用IN操作符號例子:查詢選修了老師名叫Rona(假設唯一)的學生名字
sql>
select
stName
『捌』 SQL相關子查詢和嵌套子查詢的區別
子查詢:
使用子查詢的原則
1.一個子查詢必須放在圓括弧中。
2.將子查詢放在比較條件的右邊以增加可讀性。
子查詢不包含 ORDER BY 子句。對一個 SELECT 語句只能用一個 ORDER BY 子句,
並且如果指定了它就必須放在主 SELECT 語句的最後。
ORDER BY 子句可以使用,並且在進行 Top-N 分析時是必須的。
3.在子查詢中可以使用兩種比較條件:單行運算符和多行運算符。
子查詢的類型
單行子查詢:從內 SELECT 語句只返回一行的查詢
多行子查詢:從內 SELECT 語句返回多行的查詢
單行子查詢
單行子查詢是從內查詢返回一行的查詢。在該子查詢類型中用一個單行操作符。幻燈片中列出了單行操作符。
例
顯示那些 job ID 與雇員 141 相同的雇員。
SELECT last_name, job_id
FROM employees
WHERE job_id =
(SELECT job_id
FROM employees
WHERE employee_id = 141);
SELECT last_name, job_id, salary
FROM employees
WHERE job_id =
(SELECT job_id
FROM employees
WHERE employee_id = 141)
AND salary >
(SELECT salary
FROM employees
WHERE employee_id = 143);
顯示 job ID 與雇員 141 相同,並且薪水 高於雇員 143 的那些雇員。
註:外和內查詢可以從不同的表中取得數據。
SELECT last_name, job_id, salary
FROM employees
WHERE salary =
(SELECT MIN(salary)
FROM employees);
求所有人誰的工資最小。
SELECT department_id, MIN(salary)
FROM employees
GROUP BY department_id
HAVING MIN(salary) >
(SELECT MIN(salary)
FROM employees
WHERE department_id = 50);
求每個部門的最小工資,但是要高於50號部門的工資。
SELECT employee_id, last_name
FROM employees
WHERE salary =
(SELECT MIN(salary)
FROM employees
GROUP BY department_id);
問題出現在:單行子查詢返回了多個查詢值;
應改為:
SELECT employee_id, last_name
FROM employees
WHERE salary in
(SELECT MIN(salary)
FROM employees
GROUP BY department_id);
SELECT last_name, job_id
FROM employees
WHERE job_id =
(SELECT job_id
FROM employees
WHERE last_name = 'Haas');
如果子查詢返回的是零值,不會對主程序造成影響;
如果子查詢返回的是空值,那麼會影響主程序的返回值;
SELECT employee_id,
last_name
FROM employees
WHERE employee_id NOT IN
(SELECT manager_id
FROM employees)
SELECT employee_id,
last_name
FROM employees
WHERE employee_id NOT IN
(SELECT manager_id
FROM employees
WHERE manager_id IS NOT NULL)
放在select下的子查詢的返回值必須是一個具體值,
from後面也可以加子查詢;
having後面也可以加子查詢;
order by後面也可以;
多列子查詢適應於:成對比較;非成對比較。
SELECT employee_id, manager_id, department_id
FROM employees
WHERE (manager_id, department_id) IN
(SELECT manager_id, department_id
FROM employees
WHERE employee_id IN (178,174))
AND employee_id NOT IN (178,174);
輸出:176 149 80
只有要查詢的東西和你子查詢返回的東西一一對應上了,你的查詢才能成功。
如果有一個 對應不上那麼你的查詢不會成功。
非成對的子查詢:
SELECT employee_id, manager_id, department_id
FROM employees
WHERE manager_id IN (SELECT manager_id
FROM employees
WHERE employee_id IN (174,141))
AND department_id IN (SELECT department_id
FROM employees
WHERE employee_id IN (174,141))
AND employee_id NOT IN(174,141);
輸出:144 124 50
143 124 50
142 124 50
176 149 80
上面兩個程序就是成對子查詢和非成對子查詢兩者之間的區別。
如果我想去顯示員工信息,要求:員工的工資高於本部門的平均工資。
SELECT a.last_name,
a.salary,
a.department_id
FROM employees a
WHERE a.salary >
(SELECT AVG(salary)
FROM employees b
WHERE b.department_id = a.department_id);
in line view(內聯視圖)
SELECT a.last_name, a.salary,
a.department_id, b.salavg
FROM employees a, (SELECT department_id,
AVG(salary) salavg
FROM employees
GROUP BY department_id) b
WHERE a.department_id = b.department_id
AND a.salary > b.salavg;
『玖』 資料庫種的SQL查詢主要包括哪四種查詢方式
聯合查詢,傳遞查詢,數據定義查詢和子查詢