zoukankan      html  css  js  c++  java
  • ●SQL高级查询

    等值连接查询

      用where子句指定连接条件

      例:查询“张旭“教师任课的学生成绩

      select score.* from score,course,teacher

      where score.cno=course.cno

      and course.tno=teacher.tno

      and tname='张旭'

      在from子句中用join指定连接条件

      例:查询“张旭“教师任课的学生成绩。

      select score.* from score

      join course on score.cno=course.cno

      join teacher on course.tno=teacher.tno

      where tname='张旭'

    自连接查询

      连接不仅可以在表之间进行,也可以使一个表同其自身进行连接,这种连接称为自连接。

      例:查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。

      select sno,sname,sbirthday from student

      where YEAR(sbirthday)=

      (

      select YEAR(sbirthday) from student

      where sno=108

      )

    内部连接

      连接的结果是从两个或两个以上的表的组合中挑选出符合连接条件的数据,如果数据无法满足连接条件则将其丢弃。

    外部连接

      参与连接的表有主从之分,以主表的每行数据去匹配从表的数据列,符合连接条件的数据将直接返回到结果集中。对那些不符合连接条件的列,将被填上NULL 值后再返回到结果集中。

      外部连接分为左外部连接(left)、右外部连接(right)、全连接(fall)。主表在左边则称为左外部连接;主表在右边则称为右外部连接。

      select * from Info

      left join nation on Info.nation=nation.code    --以左边为主表全部显示

    复合条件连接查询

      在WHERE 子句中使用多个连接条件的查询,称为复合条件连接查询。

    合并查询

      合并查询就是使用UNION 操作符,将来自不同查询的数据组合起来,形成一个具有综合信息的查询结果。

      注意:

        UNION 操作会自动将重复的数据行剔除。

        参加合并查询的各子查询的使用的表结构应该相同。

        各子查询中的数据数目和对应的数据类型都必须相同。

      例:查询所有教师和同学的name、sex和birthday.

      select sname,ssex,sbirthday from student

      union

      select tname,tsex,tbirthday from teacher

    使用UNION前后的区别

    嵌套查询

      在一个SELECT 语句的WHERE 子句或HAVING 子句中嵌套另一个SELECT 语句的查询,称为嵌套查询又称子查询。子查询效率比join连接效率高。

        无关子查询。外查询和内查询之间没有任何逻辑上的联系。

        相关子查询。外查询和内查询彼此依赖。无关子查询效率比相关子查询效率高。

    SELECT <目标表达式1>[,… ]

    FROM <表或视图名1>

    WHERE [表达式]

      (SELECT <目标表达式2>[,…] FROM <表或视图名2>)

    [GROUP BY <分组条件>

    HAVING [<表达式>比较运算符]

      (SELECT <目标表达式2>[,… ] FROM <表或视图名2> ])

      分页查询

        select top 5 * from Info where code not in (select top 10 code from Info)

    当记录中有null时,条件要写成(列名 is null),不能写为(列名=null)

  • 相关阅读:
    CF633C Spy Syndrome 2 trie树
    luogu 3998 [SHOI2013]发微博 map
    阿里云ECS新增端口
    阿里云运行docker容器报错
    no matches for kind "ReplicaSet" in version "extensions/v1beta1"
    k8s中flannel:镜像下载不了
    k8s删除节点后再重新添加进去(踩坑)
    如何在IntelliJ Idea中同时启动不同端口
    SpringBoot整合Elastic-job(详细)
    K8S容器探针
  • 原文地址:https://www.cnblogs.com/phantom-k/p/3961818.html
Copyright © 2011-2022 走看看