SQL |子查询

在SQL中,子查询可以简单地定义为另一个查询中的查询。换句话说,我们可以说子查询是嵌入到另一个SQL查询的WHERE子句中的查询。

null

子查询的重要规则:

  • 可以将子查询放在多个SQL子句中: 哪里 条款 从句,从句。 子查询可以与SELECT、UPDATE、INSERT、DELETE语句以及表达式运算符一起使用。它可以是相等运算符或比较运算符,例如=、>、=、<=和Like运算符。
  • 子查询是另一个查询中的查询。外部查询称为 主查询 内部查询称为 子查询 .
  • 子查询通常首先执行,其输出用于完成主查询或外部查询的查询条件。
  • 子查询必须用括号括起来。
  • 子查询位于比较运算符的右侧。
  • 订购人 命令 不能 可以在子查询中使用。 群比 命令可用于执行与按命令排序相同的功能。
  • 对单行子查询使用单行运算符。对多行子查询使用多行运算符。

语法: 子查询没有任何通用语法。但是,子查询在SELECT语句中使用最频繁,如下所示:

SELECT column_name
FROM table_name
WHERE column_name expression operator 
    ( SELECT COLUMN_NAME  from TABLE_NAME   WHERE ... );

样本表 :

数据库

名字 滚不 地方 电话号码
内存 101 钦奈 9988775566
拉杰 102 哥印拜陀 8877665544
萨西 103 马杜赖 7766553344
拉维 104 塞勒姆 8989898989
苏马提 105 坎奇普兰 8989856868

大学生

名称 滚不 部分
拉维 104 A.
苏马提 105 B
拉杰 102 A.

示例查询

:

  • 从数据库表中显示学生的姓名、位置、电话号码,该表的分区为A
    Select NAME, LOCATION, PHONE_NUMBER from DATABASE 
    WHERE ROLL_NO IN
    (SELECT ROLL_NO from STUDENT where SECTION=’A’); 
    

    说明: 第一个子查询执行“SELECT ROLL_NO from STUDENT where SECTION=’A’”从节为’A’的STUDENT表返回ROLL_NO。然后外部查询执行它,并从数据库表中返回从内部子查询返回卷号的学生的姓名、位置、电话号码。 输出:

    名称 滚不 地方 电话号码
    拉维 104 塞勒姆 8989898989
    拉杰 102 哥印拜陀 8877665544
  • 插入查询示例:

    表1:学生1

    名称 滚不 地方 电话号码
    内存 101 钦奈 9988773344
    拉朱 102 哥印拜陀 9090909090
    拉维 103 塞勒姆 8989898989

    表2:学生2

    名称 滚不 地点 电话号码
    拉杰 111 钦奈 8787878787
    112 孟买 6565656565
    斯里兰卡 113 哥印拜陀 7878787878

    要将Student2插入Student1表,请执行以下操作:

    INSERT INTO Student1  SELECT * FROM Student2;
    

    输出:

    名称 滚不 地方 电话号码
    内存 101 钦奈 9988773344
    拉朱 102 哥印拜陀 9090909090
    拉维 103 塞勒姆 8989898989
    拉杰 111 钦奈 8787878787
    112 孟买 6565656565
    斯里兰卡 113 哥印拜陀 7878787878
  • 从Student2表中删除rollno与Student1表中相同且位置为chennai的学生
    DELETE FROM Student2 
    WHERE ROLL_NO IN ( SELECT ROLL_NO 
                       FROM Student1 
                       WHERE LOCATION = ’chennai’);
    

    输出:

    1 row delete successfully.
    

    显示学生2表格:

    名称 滚不 地方 电话号码
    112 孟买 6565656565
    斯里兰卡 113 哥印拜陀 7878787878
  • 将学生姓名更新为Student2表中的极客,其位置和Student1表中的Raju、Ravi相同
    UPDATE Student2 
    SET NAME=’geeks’ 
    WHERE LOCATION IN ( SELECT LOCATION 
                        FROM Student1 
                        WHERE NAME IN (‘Raju’,’Ravi’));
    

    输出:

    1 row updated successfully.
    

    显示学生2表格:

    名称 滚不 地方 电话号码
    112 孟买 6565656565
    极客 113 哥印拜陀 7878787878

本文由 兰贾尼拉维 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享