SQLServer中的查询
查询操作例题一、?创建用到的表 create?database?S_C go use?S_C /*创建学生表*/ table?student( sno?varchar(9)?primary?key,/*列级完整性条件*/ sname?(20unique/*sname取惟一的值*/ ssex?(2), sage?smallint) ) /*创建课程表*/ table?course( cno?(4(40?/*先修课*/ ccredit?foreign?(cpnoreferences?course(cno/*表级完整性条件,cpno是外码,被参照的表示course,被参照的列是cno*/ /*创建学生选课表*/ table?sc grade?(snoreferences?student) 例【1】 查询全体学生的学号与姓名 select?snofrom?student 例【2】 查询全体学生的姓名、学号、所在系 select?snamesdept?from?student 例【3】 查询全体学生的详细记录 select?*?from?student 例【4】 查询全体学生的姓名及其出生年份 -sage?birthyear?from?student 例【5】 查询全体学生的姓名、出生年份、和所在系,要求用小写字母表示所有系名 -sage?YearOfBirthlower(sdept)?sdept?from?student 例【6】 查询选修了课程的学生学号(distinct?重复行) select?distinct?sno?from?sc 例【7】 查询计算机科学系全体学生的名单 select?sname?from?student?where?sdept='cs' 例【8】 查询所有年龄在20岁以下的学生的学号 where?sage<20 例【9】 查询考试成绩有不及格的学生的学号 distinct?sno?from?sc?where?grade<60 例【10】 查询年龄在20~23岁(包含20岁和23岁)之间的学生的姓名、系别、和年龄 select?snamesdeptsage?student?where??sage?between?20?and?30 例【11】 查询年龄不在20~23岁之间的学生的姓名、系别和年龄 where??not?and?30 例【12】 查询计算机科学系(SC)、数学系(MA)、信息系(IS)学生的姓名和性别 ssex?sdept?in('is''ma''cs') 例【13】 查询既不是计算机科学系、数学系、也不是信息系的学生的姓名和性别 ) 例【14】 查询学号为200215121的学生的详细情况 例【15】 查询所有姓刘的学生的姓名、学号和性别 snosname?like?'刘%'? 例【16】 查询姓“欧阳”且全名为3个汉字的学生的姓名 sname?'欧阳_'?????/*一个短横线代表一个汉字*/ 例【17】 查询名字中第2个字为“阳”字的学生的姓名和学号 '_阳%'??/*一个短横线代表一个汉字*/ 例【18】 查询所有不姓刘的学生的学号和姓名 '刘%' 例【19】 查询DB_Design课程的课程号和学分 select?cno,ccredit?course?cname?'DB_Design'?escape?'' 例【20】 查询以“DB_”开头,且倒数第三个字符为i的课程的详细情况 'DB_%i__'?'' 例【21】 某些学生选修课程后没有参加考试,所以有选修记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号 select??cno??grade?is??null??/*这里的is不能用=代替*/ 例【22】 查询所有有成绩的学生的学号和课程号 cno?is?null 例【23】 查询计算机科学系年龄在20以下的学生的姓名 'cs'?and?<20 例【24】 查询了选修3号课程的学生的学号及成绩,查询结果按分数的降序排序。 grade?cno'3'?order?by?desc 例【25】 查询全体学生的情况,查询结果按所在系的系号升序排序,同一系中的学生按年龄降序排列 desc 例【26】 查询学生总人数 select??COUNT(*)?NumOfStudent?student? 例【27】 查询选修了课程的学生的人数 select?(sc 例【28】 计算1号课程的学生的平均成绩 AVGGradeOf_1?'1' 例【29】 查询选修1号课程的学生的最高分 MAXGradeMAXOf_1?'1' 例【30】 查询学生200215012选修课程的总学分数 方法一: SUMccreditTheSumOfC?sc'200215122'?.=coursecno 方法二:(相关子查询) cno?in( '200215122')? 方法三:(exists谓词子查询) where?exists( )? 例【31】 求各个课程号及相应的选课人数 )TheNumOfStu?group?cno 例【32】 查询选修了3门及三门以上课程的学生学号 having?)>=3 例【33】 查询每个学生及其选修课程的情况(等值连接) student.*,128)">.*?sno 例【34】 对例【33】用自然连接完成(若在等值连接中把重复的属性去掉则为自然连接) ssexsagesno ******************************************************************************* 出现的问题: 解决办法:指定student.sno?或者是sc.sno ******************************************************************************* 例【35】(自身连接) 查询每一门课的间接选修课(即先修课的先修课) firstsecondcpno?second?cpnocno 例【36】 对例【33】用外连接做 grade?from? student?left?join?on) 例【37】 查询选修2号课程且成绩在90分以上的所有学生 方法一: sno?'2'? ??????>=90 方法二: '2'?>=90) 方法三: where??exists?( ) 例【38】 查询每个学生的学号、姓名、选修的课程名及成绩 方法一: cnamecno 例【39】 查询与“刘晨”在同一系学习的学生(不相关子查询) 方法一: =( sdept?'刘晨')?<>'刘晨' 方法二(自连接): s1s2?where? s2'刘晨' 例【40】 查询选修了课程名为“信息系统”的学生学号和姓名 方法一(嵌套查询): '信息系统')) 方法二:(连接查询): ) 例【41】 找出每个学生超过他选修课程平均成绩的课程号 x?>=(y?xy)? 例【42】 查询其它系中比计算机科学系某一学生年龄小的学生姓名和年龄 方法一: <any( 'cs'? 方法二(聚集函数实现的查询): <)? 'cs'? 例【43】 查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄 方法一: <all'cs'? 方法二: MIN'cs'? 例【44】 查询所有选修了1号课程的学生姓名 方法一: '1'?? 方法二: '1'exists? ) 例【45】 查询没有选修1号课程的学生的姓名 ) 例【46】 查询选修了全部课程的学生姓名 )) 例【47】 查询至少选修了学生200215122选修的全部课程的学生号码 sc1?sc2?sc2and?sc3?sc3sc1)) 【集合查询】 例【48】 查询计算机科学系学生与年龄不大于19岁的学生 'cs'?UNION?<=19) 例【49】 查询选修了课程1号或者选修了课程2的学生 '1'?UNION?'2' 例【50】 查询计算机科学系的学生与年龄不大于19岁的学生的交集 intersect?<=19 方法二: <=19 例【51】
方法一: '2' 方法二: '1'?in('2') ******************************************************************************* 出现的问题: 改正: 当返回多个值的时候要用?关键字?IN ******************************************************************************* 例【52】 查询计算机科学系学生与年龄不大于19岁的学生的差集 except?>19 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux安装mysql和使用c语言操作数据库的方法 c语言连接mysq
- .NET Framework各个版本介绍
- sqlserver使用order by case when进行优先级排序
- 测试 – 在等待构建/测试/数据库迁移运行时,我该怎么办?
- sql-server – SQL Server 2016 Express Management Studio
- SQLServer触发器保持数据库完整性的实际应用
- Redis教程(十二):服务器管理命令总结
- 将备份的SQLServer数据库转换为SQLite数据库操作方法
- 磁盘缓存专题之一 缓存命中和缓存未命中&缓存与缓冲间的
- mysql中数据库与数据表编码格式的查看、创建及修改