博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 学习 SQL 语句 ( 三 )
阅读量:6595 次
发布时间:2019-06-24

本文共 2539 字,大约阅读时间需要 8 分钟。

我们接着上一篇继续学习哦

子查询

基于集合的子查询

通过INNOTIN 来指明集合

// 查询跟李勇在一个系的同学// 首先确定李勇所在的系,然后最为查询条件1> SELECT Sno, Sname, Sdept FROM student2> WHERE Sdept IN (3> SELECT Sdept FROM student WHERE Sname="李勇");4>5> goSno     DSname     DSdept--------D----------D--------------------16101132D李勇        D计算机系16101321D张锦杰       D计算机系(2 行受影响)1>// 如果想排除李勇1> SELECT Sno, Sname, Sdept FROM student2> WHERE Sdept IN (3> SELECT Sdept FROM student WHERE Sname="李勇")4> AND Sname!="李勇";5> goSno     DSname     DSdept--------D----------D--------------------16101321D张锦杰       D计算机系(1 行受影响)1>

用IN形式的子查询就是向外层查询的WHERE语句返回一个值的集合

// 查询成绩小于 90的学生的信息1> SELECT Sno,Sname,Sdept FROM student2> WHERE Sno IN(3> SELECT Sno FROM SC4> WHERE grade < 90);5> goSno     DSname     DSdept--------D----------D--------------------13212311D张海        D数学系16101132D李勇        D计算机系16101321D张锦杰       D计算机系16123211D吴斌        D信息系(4 行受影响)1>// 还可以使用内连接1> SELECT student.Sno,Sname FROM student JOIN SC2> ON student.Sno = SC.Sno WHERE grade < 90;3> goSno     DSname--------D----------13212311D张海13212311D张海16101132D李勇16101132D李勇16101321D张锦杰16101321D张锦杰16123211D吴斌16123211D吴斌16123211D吴斌16123211D吴斌(10 行受影响)// 去掉重复即可
// 查找选修了c01并且是计算机系的结果1> SELECT Sname, Sno, Sdept FROM student2> WHERE Sno IN(3> SELECT Sno FROM SC WHERE Cno = "c01")4> AND Sdept = "计算机系";5> goSname     DSno     DSdept----------D--------D--------------------李勇        D16101132D计算机系张锦杰       D16101321D计算机系
// 查询选修了VB的课程的学生的信息1> SELECT Sno,Sname FROM student2> WHERE Sno IN(3> SELECT Sno FROM SC4> WHERE Cno IN (5> SELECT Cno FROM course6> WHERE Cname ="VB"));7> goSno     DSname--------D----------13212311D张海16101132D李勇16123211D吴斌(3 行受影响)
//1> SELECT Sno 学号, COUNT(*) 选课门数, AVG(grade) 平均成绩2> FROM SC WHERE Sno IN (3> SELECT Sno FROM SC JOIN course C4> ON SC.Cno = C.Cno5> WHERE Cname="VB")6> GROUP BY Sno;7> go学号      D选课门数       D平均成绩--------D-----------D-----------13212311D          3D         8916101132D          3D         6016123211D          4D         44(3 行受影响)// 子查询首先将SC于course左链接,查找选修了VB的学生的学号1> SELECT Sno FROM SC JOIN course C2> ON SC.Cno = C.Cno3> WHERE Cname="VB";4> goSno--------132123111610113216123211// 然后使用这些学号在SC中查找分组统计// 最终得到结果

查询语句到此为止啦下面我们将学习数据库的插入和删除操作

插入数据
// 注意括号中的需要一一对应哦1> INSERT INTO student VALUES ('16201321', '呜呜呜',23, '女','经管');2> go(1 行受影响)1>
// 如果是只插入某几个字段,那么你要注意了哦,其他的字段是否定义为是可以为空1> INSERT INTO student(Sno,Sname) VALUES ('1620131', 'S哒的撒');2> go(1 行受影响)
更新数据

无条件更新

1> UPDATE student SET Sage = Sage + 1;2> go(8 行受影响)

有条件的更新

// 1> UPDATE student SET Sage = 202> WHERE Sno = "12122312";3> go(1 行受影响)

转载地址:http://sqcio.baihongyu.com/

你可能感兴趣的文章
学习总结
查看>>
docker学习记录(五)--自定义镜像文件
查看>>
【MongoDB】Capped固定集合
查看>>
vmnet0 网桥链接报错
查看>>
Spring Boot 最佳实践(二)集成Jsp与生产环境部署
查看>>
找回消失的内存
查看>>
普世智慧 - 跨学科的知识和思维
查看>>
Linux内核高性能优化【生产环境实例】
查看>>
二、搭建Apache虚拟主机
查看>>
罗森伯格参加2012中国国际建筑智能化峰会北京站
查看>>
ospf(专题二)路由再发布
查看>>
HDFS相关
查看>>
我的友情链接
查看>>
windows server 2016 活动目录(一)
查看>>
linux Less
查看>>
我的友情链接
查看>>
Flex 图表组件使用示例
查看>>
嵌入式arm linux环境中gdb+gdbserver调试
查看>>
Mysql数据库备份和还原
查看>>
我的友情链接
查看>>