mysql+sql+子查询语句_SQL子查询
子查詢或內部查詢或嵌套查詢在另一個SQL查詢的查詢和嵌入式WHERE子句中。
子查詢用于返回將被用于在主查詢作為條件的數據,以進一步限制要檢索的數據。
子查詢可以在SELECT,INSERT,UPDATE使用,而且隨著運算符如DELETE語句 =, , >=, <=, IN, BETWEEN 等.
這里有一些規則,子查詢必須遵循:
子查詢必須被圓括號括起來。
子查詢只能在有一列的SELECT子句中,除非多個列中的子查詢,以比較其選定列主查詢。
ORDER BY不能在子查詢中使用,主查詢可以使用ORDER BY。GROUP BY可以用來在子查詢中如ORDER BY執行相同的功能。
返回多于一個行子查詢只能用于具有多個值運算符,如IN操作。
SELECT列表中不能包含到值計算到任何引用 BLOB, ARRAY, CLOB, 或NCLOB.
子查詢不能立即封閉在一組函數。
BETWEEN 操作符不能與子查詢使用;然而,操作符BETWEEN可以在子查詢中使用。
子查詢SELECT語句:
子查詢最頻繁使用的SELECT語句。其基本語法如下:
SELECT column_name[,column_name]FROM table1[,table2]WHERE column_name OPERATOR(SELECT column_name[,column_name]FROM table1[,table2][WHERE])
例子:
考慮CUSTOMERS表具有以下記錄:
+----+----------+-----+-----------+----------+|ID|NAME|AGE|ADDRESS|SALARY|+----+----------+-----+-----------+----------+|1|Ramesh|35|Ahmedabad|2000.00||2|Khilan|25|Delhi|1500.00||3|kaushik|23|Kota|2000.00||4|Chaitali|25|Mumbai|6500.00||5|Hardik|27|Bhopal|8500.00||6|Komal|22|MP|4500.00||7|Muffy|24|Indore|10000.00|+----+----------+-----+-----------+----------+
現在,讓我們檢查下使用子查詢SELECT語句:
SQL>SELECT*FROM CUSTOMERS
WHERE ID IN(SELECT ID
FROM CUSTOMERS
WHERE SALARY>4500);
這將產生以下結果:
+----+----------+-----+---------+----------+|ID|NAME|AGE|ADDRESS|SALARY|+----+----------+-----+---------+----------+|4|Chaitali|25|Mumbai|6500.00||5|Hardik|27|Bhopal|8500.00||7|Muffy|24|Indore|10000.00|+----+----------+-----+---------+----------+
子查詢的INSERT語句:
子查詢,也可以使用INSERT語句。INSERT語句使用從子查詢返回的數據插入到另一個表中。在子查詢中的所選擇的數據可以與任何類型的字符,日期或數字函數進行修改。
其基本語法如下:
INSERT INTO table_name[(column1[,column2])]SELECT[*|column1[,column2]FROM table1[,table2][WHERE VALUE OPERATOR]
示例:
考慮CUSTOMERS_BKP表的結構相似于CUSTOMERS表??紤]CUSTOMERS_BKP表的結構相似于CUSTOMERS表。
SQL>INSERT INTO CUSTOMERS_BKP
SELECT*FROM CUSTOMERS
WHERE ID IN(SELECT ID
FROM CUSTOMERS);
子查詢的UPDATE語句:
子查詢可以與UPDATE語句一起使用。單個或多個表中的列可以使用帶有UPDATE語句子查詢時被更新。
其基本語法如下:
UPDATE table
SET column_name=new_value[WHERE OPERATOR[VALUE](SELECT COLUMN_NAME
FROM TABLE_NAME)[WHERE)]
示例:
假設,我們的CUSTOMERS_BKP表是CUSTOMERS表的備份。
下面的例子是在CUSTOMERS表更新0.25倍薪水,其年齡大于或等于27所有的客戶:
SQL>UPDATE CUSTOMERS
SET SALARY=SALARY*0.25WHERE AGE IN(SELECT AGE FROM CUSTOMERS_BKP
WHERE AGE>=27);
這將影響到兩行,最后CUSTOMERS表將有以下記錄:
+----+----------+-----+-----------+----------+|ID|NAME|AGE|ADDRESS|SALARY|+----+----------+-----+-----------+----------+|1|Ramesh|35|Ahmedabad|125.00||2|Khilan|25|Delhi|1500.00||3|kaushik|23|Kota|2000.00||4|Chaitali|25|Mumbai|6500.00||5|Hardik|27|Bhopal|2125.00||6|Komal|22|MP|4500.00||7|Muffy|24|Indore|10000.00|+----+----------+-----+-----------+----------+
子查詢的DELETE語句:
子查詢可配合使用像上述的任何其他語句DELETE語句。
其基本語法如下:
DELETE FROM TABLE_NAME[WHERE OPERATOR[VALUE](SELECT COLUMN_NAME
FROM TABLE_NAME)[WHERE)]
示例:
假設,我們的CUSTOMERS_BKP表是CUSTOMERS表的備份。
下面的示例將刪除CUSTOMERS表記錄其年齡大于或等于27所有的客戶:
SQL>DELETE FROM CUSTOMERS
WHERE AGE IN(SELECT AGE FROM CUSTOMERS_BKP
WHERE AGE>27);
這將影響到兩行,最后CUSTOMERS表將有以下記錄:
+----+----------+-----+---------+----------+|ID|NAME|AGE|ADDRESS|SALARY|+----+----------+-----+---------+----------+|2|Khilan|25|Delhi|1500.00||3|kaushik|23|Kota|2000.00||4|Chaitali|25|Mumbai|6500.00||6|Komal|22|MP|4500.00||7|Muffy|24|Indore|10000.00|+----+----------+-----+---------+----------+
¥ 我要打賞
糾錯/補充
收藏
上一篇:
加QQ群啦,易百教程官方技術學習群
注意:建議每個人選自己的技術方向加群,同一個QQ最多限加 3 個群。
總結
以上是生活随笔為你收集整理的mysql+sql+子查询语句_SQL子查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java struts json_str
- 下一篇: java httpclient put_