7. ALL運算子
ALL運算子將值與另一個值集中的所有值進行比較。ALL運算子必須以比較運算子開頭,后跟子查詢。
以下是ALL運算子的語法:
comparison_operator ALL (subquery)
以下示例查找薪水大于部門ID為8中所有員工工資的員工資訊:
SELECT
first_name, last_name, salary
FROM
employees
WHERE
salary >= ALL (SELECT
salary
FROM
employees
WHERE
department_id = 8)
ORDER BY salary DESC;
執行上面查詢陳述句,得到以下結果 -
+------------+-----------+--------+
| first_name | last_name | salary |
+------------+-----------+--------+
| Steven | Lee | 24000 |
| Neena | Wong | 17000 |
| Lex | Liang | 17000 |
| John | Liu | 14000 |
+------------+-----------+--------+
4 rows in set
8. ANY運算子
ANY運算子根據條件將值與集合中的任何值進行比較,如下所示:
comparison_operator ANY(subquery)
與ALL運算子類似,ANY運算子必須以比較運算子開頭,后跟子查詢。
例如,以下陳述句查找薪水大于每個部門平均薪水的所有員工:
SELECT
first_name, last_name, salary
FROM
employees
WHERE
salary > ANY(SELECT
AVG(salary)
FROM
employees
GROUP BY department_id)
ORDER BY first_name , last_name;
執行上面查詢陳述句,得到以下結果 -
+------------+-----------+--------+
| first_name | last_name | salary |
+------------+-----------+--------+
| Alexander | Lee | 9000 |
| Avg | Su | 11000 |
| Bruce | Wong | 6000 |
| Charles | Yang | 6200 |
| Daniel | Chen | 9000 |
... ...
| Shelley | Wu | 12000 |
| Steven | Lee | 24000 |
| Susan | Zhou | 6500 |
| Valli | Chen | 4800 |
| William | Wu | 8300 |
+------------+-----------+--------+
32 rows in set
請注意,SOME是ANY的別名,因此,可以互換使用它們。
9. EXISTS運算子
EXISTS運算子測驗子查詢是否包含任何行:
EXISTS (subquery)
如果子查詢回傳一行或多行,則EXISTS的結果為true; 否則結果是false。
例如,以下陳述句查找所有具有受撫養人的員工資訊:
SELECT
first_name, last_name
FROM
employees e
WHERE
EXISTS( SELECT
1
FROM
dependents d
WHERE
d.employee_id = e.employee_id);
執行上面查詢陳述句,得到以下結果 -
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| Steven | Lee |
| Neena | Wong |
| Lex | Liang |
| Alexander | Lee |
| Bruce | Wong |
| David | Liang |
| Valli | Chen |
| Diana | Chen |
... ...
| Shelley | Wu |
| William | Wu |
+------------+-----------+
30 rows in set
通過上面的學習,現在,您應該
uj5u.com熱心網友回復:
2. SQL TRUNCATE TABLE與DELETE邏輯上,TRUNCATE TABLE陳述句和不帶WHERE子句的DELETE陳述句提供了從表中洗掉所有資料的相同效果。 但是,它們確實存在一些差別:
使用DELETE陳述句時,資料庫系統會記錄操作。 通過一些努力,可以回滾已洗掉的資料。 但是,當使用TRUNCATE TABLE陳述句時,除非在尚未提交的事務中使用它,否則無法回滾。
要從外鍵約束參考的表中洗掉資料,不能使用TRUNCATE TABLE陳述句。 在這種情況下,必須使用DELETE陳述句。
如果表具有與之關聯的觸發器,則TRUNCATE TABLE陳述句不會觸發delete觸發器。
執行TRUNCATE TABLE陳述句后,某些資料庫系統會將自動增量列(或標識,序列等)的值重置為其起始值。 DELETE陳述句不是這種情況。
帶有WHERE子句的DELETE陳述句從表中洗掉部分資料,而TRUNCATE TABLE陳述句始終從表中洗掉所有資料。
uj5u.com熱心網友回復:
多謝樓主分享,加油!
uj5u.com熱心網友回復:
謝謝分享, 基礎知識建議寫到博客。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/134804.html
標籤:基礎類
上一篇:新人報道
