sql sever 查询语句

Posted liuzhaojun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql sever 查询语句相关的知识,希望对你有一定的参考价值。

参考https://blog.csdn.net/dacainiao007/article/details/8129637
子查询:嵌套在其他查询中的查询称之。
子查询又称内部,而包含子查询的语句称之外部查询(又称主查询)。
所有的子查询可以分为两类,即相关子查询和非相关子查询
1. 非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。
2. 相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。
故非相关子查询比相关子查询效率高

.子查询和连接查询的最重要区别是:
  子查询不需要两个表有关联字段,而连接查询必须有字段关联(所谓的主外键关系)



查询被t1和t3老师教了的课程的课程名//相关子查询 select cn from c where cno in(select cno from tc where tno=t1 and cno in(select cno from tc where tno=t3)) 查询选了c1课程的学生姓名//相关子查询 select sn from s where sno in (select sno from sc where cno=c1 and sc.sno=s.sno) 查询不学数据库的学生学号//相关子查询+连接子查询 select sno from s where sno not in (select sno from sc,c where cn=数据库 and sc.cno=c.cno ) 查询赵亦选的课程名 select cn from c where cno in (select cno from sc where sno in (select sno from s where sn=赵亦))//子查询 select cn from c where 赵亦 in (select sn from s,sc where s.sno=sc.sno and c.cno=cno) //连接子查询+相关子查询 select cn from c where 赵亦 in (select sn from s where sno in (select sno from sc where cno=c.cno)) //相关子查询 查询被所以学生选修了课程的课程号,课程名 使用exists select cno ,cn from c where not exists (select * from s where not exists (select * from sc where sno=s.sno and c.cno=cno)) 查询被t1,t3和t4老师教了的课程的课程名 使用exists 思路:该课程没有一个老师没教 select cn from c where not exists (select * from (select * from t where tno in (t1,t3,t4)) x
where not exists (select * from tc where tno=x.tno and cno=c.cno))

 

以上是关于sql sever 查询语句的主要内容,如果未能解决你的问题,请参考以下文章

sql sever怎么查看之前的建表语句

SQL SEVER数据库重建索引的方法

MySQL中为啥不能在select语句中使用into将查询结果存入新表,但是SQL sever可以

SQL Sever将SQL Sever中的一个数据表的数据导出为insert语句

2017-03-12SQL Sever 子查询聚合函数

2017-03-12SQL Sever 子查询聚合函数