T-SQL-子查询

T-SQL-子查询

子查询用于与其他SQL Server查询一起使用,并嵌入WHERE子句。子查询用于返回数据,作为限制检索数据的条件在主问题中使用。

子查询与运算符=、<、>、>=、<=、IN和BETWEEN等配合使用的SELECT、INSERT、UPDATE和DELETE语句。

子查询遵循几个规则-

  • 子查询用括号括起来。
  • 子查询包括FROM子句和SELECT子句。
  • 也可以在子查询中使用可选的GROUP BY、WHERE和HAVING子句。
  • 计算和FOR BROWSE子句不包括在子查询中。
  • 当包含TOP术语时,我们包括ORDER BY子句。
  • 我们将子查询扩展到32个。

SELECT语句中的子查询:

语法:

子查询与SELECT语句一起使用。

以下是语法。

SELECT column_name [, column_name] 
FROM   table1 [, table2] 
WHERE column_name OPERATOR 
   (SELECT column_name [, column_name] 
   FROM table1 [, table2] 
   [WHERE]) 

示例:

查看EMPLOYEES表:

ID NAME AGE ADDRESS SALARY
1 Hamilton 23 Australia 34000
2 Warner 34 England 22000
3 Martin 28 China 25000
4 Twinkle 30 Turkey 50000
5 Tinu 32 Nepal 45000
6 Michal 31 Bhutan 20000
7 Harper 20 Bangladesh 15000

我们使用SELECT语句的帮助来应用子查询。

SELECT *  FROM EMPLOYEES
   WHERE ID IN (SELECT ID FROM CUSTOMER WHERE SALARY > 45000)

输出:

ID NAME AGE ADDRESS SALARY
1 Hamilton 23 Australia 34000
4 Twinkle 30 Turkey 50000
5 Tinu 32 Nepal 45000

使用INSERT语句的子查询

子查询可以与INSERT语句一起使用。子查询的选定数据可以修改字符、数字或日期函数。

语法:

INSERT语句的语法如下:

INSERT INTO table_name [ (column1 [, column2 ]) ] 
   SELECT [ *|column1 [ column2 ] 
   FROM table1 [table2 ] 
 [ WHERE VALUE OPERATOR ]

示例:

该语法用于将完整的EMPLOYEES表复制到EMPLOYEES_BKP中。

INSERT INTO EMPLOYEES_BKP 
SELECT * FROM EMPLOYEES  
WHERE ID IN (SELECT ID FROM EMPLOYEES)

使用UPDATE语句的子查询

在更新语句中使用子查询进行连接。当我们在UPDATE语句中使用子查询时,单个或多个列。

语法:

以下是基本语法。

UPDATE table 
SET column_name = new_value 
[ WHERE OPERATOR [ VALUE ] 
   (SELECT COLUMN_NAME 
   FROM TABLE_NAME) 
   [ WHERE) ] 

示例:

以下命令将AGE> = 31.EMPLOYEESSALARY更新为0.25倍。

UPDATE EMPLOYEES 
   SET SALARY = SALARY * 0.35 
   WHERE AGE IN (SELECT AGE FROM EMPLOYEES_BKP WHERE AGE >= 31 )

表中给出两行:

ID NAME AGE ADDRESS SALARY
1 Hamilton 23 Australia 34000
2 Warner 34 England 22000
3 Martin 28 China 25000
4 Twinkle 30 Turkey 50000
5 Tinu 32 Nepal 45000
6 Michal 31 Bhutan 20000
7 Harper 20 Bangladesh 15000

使用DELETE语句的子查询:

可以将子查询与DELETE语句一起使用,还可以生成其他上面的注释。

语法:

其语法是。

DELETE FROM TABLE_NAME 
[WHERE OPERATOR [VALUE]  (SELECT COLUMN_NAME   FROM TABLE_NAME) 
 [ WHERE) ] 

示例:

该查询删除AGE大于或等于31岁的EMPLOYEES表的记录。

DELETE FROM EMPLOYEES 
   WHERE AGE IN (SELECT AGE FROM EMPLOYEES_BKP WHERE AGE >=31)

它有两行,EMPLOYEES表将具有以下记录。

ID NAME AGE ADDRESS SALARY
1 Hamilton 23 Australia 34000
3 Martin 28 China 25000
4 Twinkle 30 Turkey 50000
7 Harper 20 Bangladesh 15000

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程