SQL数据库高级查询

合集下载

sql高级查询选择题

sql高级查询选择题

sql高级查询选择题SQL(Structured Query Language)是一种用于管理关系型数据库系统的编程语言。

在进行数据库查询时,使用高级查询可以更有效地得到所需结果。

下面是一些SQL高级查询选择题,帮助您巩固相关知识。

1. 以下哪个语句用于在表中创建一个新的索引?A. ALTER INDEXB. CREATE INDEXC. ADD INDEXD. UPDATE INDEX答案:B. CREATE INDEX2. 在表中查询特定字段时,使用以下哪个关键字?A. SELECTB. FROMC. WHERED. GROUP BY答案:A. SELECT3. 以下哪个关键字用于从表中获取独一无二的记录?A. UNIQUEB. DISTINCTC. SETD. UNIQUEKEY答案:B. DISTINCT4. 使用以下哪个关键词可以将查询结果按照字段进行排序?A. ORDER BYB. SORT BYC. GROUP BYD. ARRANGE BY答案:A. ORDER BY5. 如果需要从多个表中检索数据,需要使用下列哪个关键字?A. JOINB. UNIONC. TOGETHERD. COMBINE答案:A. JOIN6. 使用以下哪个运算符可以将两个查询结果集合并在一起?A. INTERSECTB. JOINC. MERGED. UNION答案:D. UNION7. 以下哪个关键字用于选择符合指定条件的记录?A. HAVINGB. WHEREC. FILTERD. SEARCH答案:B. WHERE8. 以下哪个运算符用于模糊搜索?A. LIKEB. WHEREC. EQUALSD. NOT答案:A. LIKE9. 使用以下哪个关键字可以在查询结果中分组数据?A. GROUP BYB. SORT BYC. ORDER BYD. DIVIDE BY答案:A. GROUP BY10. 如果需要在查询结果中筛选符合多个条件的记录,应该使用以下哪个关键字?A. ANDB. ORC. NOTD. ALL答案:A. AND这是一些SQL高级查询选择题的回答,希望对您的学习有所帮助。

《SQL SERVER数据库高级查询》期终考试试卷(A卷)及答案

《SQL SERVER数据库高级查询》期终考试试卷(A卷)及答案

适用专业:1、假定一位教师可讲授多门课程,一门课程可由多位教师讲授,教师和课程之间()。

A.一对一的关系B.一对多的关系C.多对一的关系D.多对多的关系2、在E-R图中,用长方形和椭圆分别表示()。

A.联系、属性B.属性、实体C.实体、属性D.属性、联系3、关于数据库的设计范式,以下说法错误的是()。

A.数据库的设计范式有助于规范化数据库的设计B.数据库的设计范式有助于减少数据冗余C.设计数据库时,一定要严格遵守设计范式。

满足的范式级别越高,系统性能就越好4、用于表示数据库实体之间关系的图是()。

A.实体关系图B.数据模型图C.实体分类图D.以上都不是5、下面的()存储过程用于添加一个数据库安全帐户并授予它访问权限。

A.sp_grantdbaccessB.sp_grantloginC.sp_grantuserD.sp_grantall6、创建图书借阅表时,“归还日期”默认为当天,且必须晚于“借出日期”,应采用()约束。

(多项选择)A.检查约束B.默认约束C.主键约束D.外键约束7、在SQL Server 中,删除数据库使用()语句。

A.REMOVEB.DELETEC.ALTERD.DROP8、下列()语句可以用来从WHILE语句块中退出。

A.CLOSEB.BREAKC.EXITD.以上都是9、要将一组语句执行10次,下列()结构可以用来完成此项任务。

A.IF….ELSEB.WHILEC.CASED.以上都不是10、给变量赋值时,如果数据来源于表中的某一列,应采用()方式。

A.printB.setC.select11、SELECT * FROM stuInfo WHERE stuNo( ) (SELECT stuNo FROMstuMarks)括号中应该填()比较合理。

A.“=”B.“IN”C.“LIKE”D.“>=”12、下列()子句可以与子查询一起使用以检查行或列是否存在。

A.UNIONB.EXISTSC.DISTINCTPUTE BY13、下列()可用于创建一个新表,并用已存在的表的数据填充新表。

实验4:数据库的高级查询操作

实验4:数据库的高级查询操作

实验4:数据库的高级查询操作实验四:数据库的各类数据查询操作一、实验目的掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。

二、实验内容和要求针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。

了解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。

三、实验步骤连接查询1. 查询每个学生及其选修课程的情况:select student.*, sc.* from student, sc where student.sno=sc.sno比较: 笛卡尔集: select student.*, sc.* from student, sc自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno2. 查询每一门课程的间接先行课(只求两层即先行课的先行课):select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o比较:select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o and Second.pcno is not null3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息:SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno4. 查询每个学生的学号, 姓名, 选修的课程名和成绩:select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and /doc/3d4429586.html,o=/doc/ 3d4429586.html,o5. 查询平均成绩在80分以上的学生姓名Select sname from student,sc where student.sno=sc.sno GROUP BY sc.snoHAVING AVG(sc.grade)>80;高级查询使用带IN谓词的子查询1.查询与’刘晨’在同一个系学习的学生的信息:select * from student where sdept in(select sdept from student where sname='刘晨')比较: select * from student where sdept =(select sdept from student where sname='刘晨') 的异同比较: select * from student where sdept =(select sdept from student where sname='刘晨') and sname<>'刘晨' 比较: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname='刘晨'2.查询选修了课程名为’信息系统’的学生的学号和姓名:SQL Server中: select sno, sname from student where sno in (select sno from sc where cno in(select cno from course where cname='信息系统'))3.查询选修了课程’1’和课程’2’的学生的学号:select sno from student where sno in (select sno from sc where cno='1')and sno in (select sno from sc where cno='2') 比较: 查询选修了课程’1’或课程’2’的学生的sno:select sno from sc where cno='1' or cno='2'比较连接查询:select A.sno from sc A, sc B where A.sno=B.sno and /doc/3d4429586.html,o='1' and/doc/3d4429586.html,o='2'使用带比较运算的子查询1.查询比’刘晨’年龄小的所有学生的信息:select * from student where sage<(select sage from student where sname='刘晨')使用带Any, All谓词的子查询2.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage <any< p=""> (select sage from student where sdept='IS')and sdept<>'IS'3.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄:select sname, sage from student where sage <all< p="">(select sage from student where sdept='IS')and sdept<>'IS'4.查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student where sage<>all(select sage from student where sdept='CS')使用带Exists谓词的子查询和相关子查询5.查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage andA.sno<>B.sno)6.查询所有选修了1号课程的学生姓名:select sname from student where exists(select * from sc where sno=student.sno and cno='1')7.查询没有选修了1号课程的学生姓名:select sname from student where not exists(select * from sc where sno=student.sno and cno='1')8.查询选修了全部课程的学生姓名:select sname from student where not exists(select * from course where not exists( select * from sc where sno=student.sno and cno=/doc/3d4429586.html,o))12. 查询至少选修了学生95002选修的全部课程的学生的学号:select distinct sno from sc A where not exists(select * from sc B where sno='95002'and not exists(select * from sc C where sno=A.sno and cno=/doc/3d4429586.html,o))13. 求没有人选修的课程号cno和cnamecname:select cno,cname from course C where not exists(select * from sc where /doc/3d4429586.html,o=/doc/ 3d4429586.html,o )14. 查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号cno 的课程select sno,cno from student,course where not exists(select * from sc where cno=/doc/3d4429586.html,o and sno=student.sno)15. 查询每个学生的课程成绩最高的成绩信息(sno,cno,grade):select * from sc A where grade=(select max(grade) from sc where sno=A.sno )集合查询1. 查询数学系和信息系的学生的信息;select * from student where sdept='MA' union select * from student where sdept='IS'2. 查询选修了1号课程或2号课程的学生的学号:select sno from sc where cno='1'Unionselect sno from sc where cno='2'思考:1. 连接查询速度是影响关系数据库性能的关键因素。

SQL高级查询

SQL高级查询

1. SQL(高级查询)1.1. 子查询1.1.1. 子查询在WHERE子句中在SELECT查询中,在WHERE查询条件中的限制条件不是一个确定的值,而是来自于另外一个查询的结果。

为了给查询提供数据而首先执行的查询语句叫做子查询。

子查询:嵌入在其它SQL语句中的SELECT语句,大部分时候出现在WHERE子句中。

子查询嵌入的语句称作主查询或父查询。

主查询可以是SELECT语句,也可以是其它类型的语句比如DML或DDL语句。

根据返回结果的不同,子查询可分为单行子查询、多行子查询及多列子查询。

多行多列或单行多列(没有什么实际意义)多行多列子查询通常用于建立在二次查询,常出现在FROM子句中图-1 子查询例如查找和SCOTT同职位的员工:1.SELECT e.ename, e.job2.FROM emp e3.WHERE e.job =4.(SELECT job FROM emp WHERE ename ='SCOTT');查找薪水比整个机构平均薪水高的员工:1.SELECT deptno, ename, sal2.FROM emp e3.WHERE sal >(SELECT AVG(sal) FROM emp;如果子查询返回多行,主查询中要使用多行比较操作符,包括IN、ALL、ANY。

其中ALL和ANY 不能单独使用,需要配合单行比较操作符>、>=、<、<=一起使用。

例如查询出部门中有SALESMAN但职位不是SALESMAN的员工的信息:EXISTS:后面跟着子查询判断子查询返回是否存在,如果存在就输出,不存在就忽略这一条;1.SELECT empno, ename, job, sal, deptno2.FROM emp3.WHERE deptno IN4.(SELECT deptno FROM emp WHERE job ='SALESMAN')5.AND job <>'SALESMAN';在子查询中需要引用到主查询的字段数据,使用EXIST关键字。

Shell脚本编写的高级技巧使用数据库操作和SQL查询

Shell脚本编写的高级技巧使用数据库操作和SQL查询

Shell脚本编写的高级技巧使用数据库操作和SQL查询Shell脚本编写的高级技巧:使用数据库操作和SQL查询在Shell脚本编写中,使用数据库操作和SQL查询是非常重要的高级技巧。

通过数据库操作和SQL查询,我们可以方便地对数据进行增删改查等操作,提高脚本的效率和灵活性。

本文将介绍如何在Shell脚本中使用数据库操作和SQL查询的高级技巧。

一、连接数据库在Shell脚本中连接数据库是第一步,我们可以通过Shell脚本语言提供的相关命令来连接数据库。

以下是一个示例,假设我们连接的是MySQL数据库:```shell#!/bin/bash# 连接数据库mysql -u username -p password -D dbname << EOF# 以下是SQL查询语句或操作命令# ...EOF```上述代码中,`-u`参数指定数据库的用户名,`-p`参数指定密码,`-D`参数指定数据库名称。

`<< EOF`和`EOF`之间的部分是我们要执行的SQL查询语句或操作命令的部分。

二、执行SQL查询在连接数据库之后,我们就可以执行SQL查询了。

以下是一个示例,假设我们要查询`users`表中的所有记录:```shell#!/bin/bash# 连接数据库mysql -u username -p password -D dbname << EOFSELECT * FROM users;EOF```上述代码中,`SELECT * FROM users;`是我们的SQL查询语句,`*`代表查询所有列,`users`代表表名。

三、获取查询结果在执行SQL查询之后,我们可以通过Shell脚本来获取查询结果。

以下是一个示例,假设我们要将查询结果保存到文件中:```shell#!/bin/bash# 连接数据库,并将查询结果保存到文件mysql -u username -p password -D dbname << EOF > result.txtSELECT * FROM users;EOF# 读取查询结果文件并输出while IFS= read -r line; doecho "$line"done < result.txt```上述代码中,`> result.txt`将查询结果保存到`result.txt`文件中。

全选和筛选以及比较好用的sql语句高级查询

全选和筛选以及比较好用的sql语句高级查询

全选和筛选以及⽐较好⽤的sql语句⾼级查询查询[条件并列⽤and]select * from required where xuenian like '%年%' and teachercode=01 order by starttime limit 0,2修改同时修改两个数据【数据使⽤逗号隔开】update required set teachercode = 02 ,majorcode = '201702' where ids = 5select major,count(*) from class where 1=1 group by major //分组查询5.4<?php$tt="sssss,ssrsss";$t = explode(",", $tt);$shuZ='';foreach($t as $v){$shuZ.=" name like '%".$v."%' or";}$str = substr($shuZ,0,strlen($shuZ)-2);echo $str;var_dump($t);$r = count($t);var_dump($r);//数组长度>拼接查询语句View Code全選和選刪按鈕選中的放到數組裏⾯<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><script src="../fenye/jquery-1.11.2.min.js"></script></head><body><input type="checkbox" id="aaa" /><input type="checkbox" name="sss" a='s' />1<input type="checkbox" name="sss" a='m'/>2<input type="checkbox" name="sss" a='n'/>3<input type="checkbox" name="sss" a='k'/>4</body><script>$("#aaa").click(function(){if($(this).prop("checked")==true){$("[name='sss']").prop("checked",true);var chang = $("input[name='sss']:checked");var shuzu = new Array();for(var i =0;i<chang.length;i++){shuzu[i]=chang.eq(i).attr("a");}alert(shuzu);}else{$("[name='sss']").prop("checked",false);}})</script></html> 。

SQL中的高级条件查询WHERE、IN、NOT模糊查询

SQL中的高级条件查询WHERE、IN、NOT模糊查询

SQL中的⾼级条件查询WHERE、IN、NOT模糊查询关键词:组合WHERE⼦句,使⽤IN运算符,NOT运算符,实现模糊查询AND、OR运算符以及优先级:在WHERE⼦句中使⽤AND和OR可以进⾏逻辑运算,并且AND的优先级⾼于OR。

IN运算符:可以在判断⼀个变量或者常量是否在某个范围内,例如:X IN (VALUE1,VALUE2,VALUE3),IN运算符还可以将范围制定到⼀个SELECT语句的结果中例如:select….where in (select …) order by …In运算符和OR运算符实现的结果是⼀样的,但是可以简化OR运算符的编写。

NOT运算符:⽤于对⼀个条件逻辑表达式求反,例如:NOT(来源地=’湖北’ OR 来源地=’湖南’)模糊查询:LIKE运算符实现数据库模糊查询,LIKE运算符只⽀持字符型数据的查询。

模糊查询所使⽤的通配符:ACCESS SQL SERVER ORACLE 说明_ _ ⼀个任意字符* % % 0个或多个任意字符# ⽆⽆ 1个数字字符[] [] ⽆代表指定范围[!] [^] ⽆代表指定范围之外举例:姓名 like ‘张-’精确的指定模糊值为⼀个字符并且只有两个字的姓张的姓名姓名 like ‘张%’姓张的所有姓名出⽣⽇期 like ‘%2009%09%’[ab]% 以a或者b开头的字符串[a-d]% 以a,b,c,d开头的所有字符串[a-bcd]% 以a,b,c,d开头的所有字符串a[^b]% 以a开头⾮b为第⼆个字符的所有字符串%200[789]% 代表含有2007,2008,2009三个字符串转义字符:如果模糊查询中包含了通配符,则必须使⽤转义字符来代替这个字符。

SQL server:escapeLike ‘%1#%%’ escape ‘#’ 表⽰#后的第⼀个字符为普通字符ACCESS:[]Like ‘*C[#]*’ #本来在ACCESS中代表⼀个数字,但是⽤[#]则可以表⽰为#这个普通字符ORACLE:\Like ‘%1\%%’ 包含5%的所有字符串。

sql高级语句

sql高级语句

sql高级语句(原创版)目录1.SQL 简介2.SQL 的基本语句3.SQL 的高级语句4.SQL 的应用实例正文1.SQL 简介SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的编程语言。

它被广泛应用于各种数据库管理系统,如MySQL、Oracle、SQL Server 等。

SQL 的功能主要包括数据查询、数据插入、数据更新和数据删除等。

通过 SQL,我们可以方便地对数据库进行操作,实现对数据的管理。

2.SQL 的基本语句SQL 的基本语句主要包括以下几类:(1)数据查询:SELECT 语句用于查询数据库中的数据。

例如:```SELECT * FROM table_name;```(2)数据插入:INSERT 语句用于向数据库中插入新的数据。

例如:```INSERT INTO table_name (column1, column2) VALUES (value1,value2);```(3)数据更新:UPDATE 语句用于更新数据库中的数据。

例如:```UPDATE table_name SET column1 = value1 WHERE condition;```(4)数据删除:DELETE 语句用于删除数据库中的数据。

例如:```DELETE FROM table_name WHERE condition;```3.SQL 的高级语句除了基本的数据操作语句,SQL 还提供了一些高级语句,用于实现更复杂的功能。

主要包括:(1)聚合函数:如 SUM、AVG、MAX、MIN 等,用于对查询结果进行统计分析。

(2)连接语句:如 JOIN、INNER JOIN、LEFT JOIN、RIGHT JOIN 等,用于实现多表之间的数据关联查询。

(3)子查询:用于嵌套地在一个查询中执行另一个查询。

(4)事务处理:用于实现数据库操作的并发控制和数据一致性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

9
ACCP V4.0
使用子查询替换表连接3-3
实现方法二:采用子查询 SELECT stuName FROM stuInfo WHERE stuNo=(SELECT stuNo FROM stuMarks WHERE writtenExam=60) GO 子查询
一般来说,表连接都可以用子查询替换,但有的子查询却不能用 表连接替换 子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操 纵一个表的数据 表连接更适合于查看多表的数据
19
演示:使用EXISTS子查询
ACCP V4.0
NOT EXISTS子查询 2-1
问题:
检查本次考试,本班如果没有一人通过考试(笔试和机试成绩都>60 分),则试题偏难,每人加3分,否则,每人只加1分
分析:
没有一人通过考试,即不存在‚笔试和机试成绩都>60分‛,可以采 用NOT EXISTS检测
16
ACCP V4.0
EXISTS子查询 4-2
EXISTS子查询的语法:
IF EXISTS (子查询) 语句
如果子查询的结果非空,即记录条数1条以上,则 EXISTS (子查询)将返回真(true),否则返回假 (false) EXISTS也可以作为WHERE 语句的子查询,但一般都能 用IN子查询替换
6
ACCP V4.0
什么是子查询 3-3
实现方法二:采用子查询实现
SELECT * FROM stuInfo WHERE stuAge>( SELECT stuAge FROM stuInfo where stuName='李斯文') 子查询 GO 子查询在WHERE语句中的一般用法: SELECT … FROM 表1 WHERE 字段1 >(子查询) 外面的查询称为父查询,括号中嵌入的查询称为子查询 UPDATE、INSERT、DELETE一起使用,语法类似于SELECT 语句 将子查询和比较运算符联合使用,必须保证子查询返回的值不 能多于一个
ACCP V4.0
T-SQL语句的综合应用
5.提分后统计学员的通过率情况: 1)通过人数:因为通过用1表示,没通过用0表示,所以 isPass列的累加和即是通过人数; 2)通过率:同理,isPass列的平均值*100即是通过率;
27
ACCP V4.0
T-SQL参考语句
/*--本次考试的原始数据--*/
7
ACCP V4.0
使用子查询替换表连接3-1
学员信息表和成绩表
问题:查询笔试刚好通过(60分)的学员。
8
ACCP V4.0
使用子查询替换表连接3-2
实现方法一:采用表连接 SELECT stuName FROM stuInfo 内连接(等值连接) INNER JOIN stuMarks ON stuInfo.stuNo=stuMarks.stuNo WHERE writtenExam=60 GO
21
演示:使用NOT EXISTS子查询
ACCP V4.0
T-SQL语句的综合应用
应到人数:5人
实到人数4人, 缺考1人
学员信息表和成绩表
22
ACCP V4.0
T-SQL语句的综合应用
本次考试的缺考情况
比较笔试平均分和机试 平均分,较低者进行循 环提分,但提分后最高 分不能超过97分 。加 分后重新统计通过情况
17
ACCP V4.0
EXISTS子查询 4-3
问题:
检查本次考试,本班如果有人笔试成绩达到80分以上,则每人提2分; 否则,每人允许提5分
分析:
是否有人笔试成绩达到80分以上,可以采用EXISTS检测
18
ACCP V4.0
EXISTS子查询 4-4
参考语句
/*--采用EXISTS子查询,进行酌情加分--*/ IF EXISTS (SELECT * FROM stuMarks WHERE writtenExam>80) BEGIN print '本班有人笔试成绩高于80分,每人加2分,加分后的成绩为:' UPDATE stuMarks SET writtenExam=writtenExam+2 SELECT * FROM stumarks END ELSE BEGIN print '本班无人笔试成绩高于80分,每人可以加5分,加分后的成绩:' UPDATE stuMarks SET writtenExam=writtenExam+5 SELECT * FROM stumarks END GO
14
演示:使用IN子查询
ACCP V4.0
NOT IN子查询
问题:查询未参加考试的学员名单 分析:加上否定的NOT 即可
15
ACCP V4.0
EXISTS子查询 4-1
例如:数据库的存在检测
IF EXISTS(SELECT * FROM sysDatabases WHERE name=’stuDB’) DROP DATABASE stuDB CREATE DATABASE stuDB …….—建库代码略
分析:
第一步:求出‚李斯文‛的年龄; 第二步:利用WHERE语句,筛选年龄比‚李斯文‛大的学员;
5
ACCP V4.0
什么是子查询 3-2
实现方法一:采用T-SQL变量实现
DECLARE @age INT --定义变量,存放李斯文的年龄 SELECT @age=stuAge FROM stuInfo WHERE stuName=‘李斯文’ --求出李斯文的年龄 --筛选比李斯文年龄大的学员 SELECT * FROM stuInfo WHERE stuAge>@age GO
12
ACCP V4.0
IN子查询 4-3
学员信息表和成绩表(重抓本图)
分析: 问题:查询参加考试的学员名单 判断一个学员是否参加考试其实很简单,只需要查看该学员对应的学号
是否在考试成绩表stuMarks中出现即可
13
ACCP V4.0
IN子查询 4-4
参考语句
/*--采用IN子查询参加考试的学员名单--*/ SELECT stuName FROM stuInfo WHERE stuNo IN (SELECT stuNo FROM stuMarks) GO
缺少配对的END
FROM bank WHERE userName='张三‘ GO
3Байду номын сангаас
ACCP V4.0
目标
掌握简单子查询的用法 掌握IN子查询的用法 掌握EXISTS子查询的用法 应用T-SQL进行综合查询
4
ACCP V4.0
什么是子查询 3-1
学员信息表
问题:
编写T-SQL语句,查看年龄比‚李斯文‛大的学员,要求显示这些学员 的信息 ?
第四章 高级查询
ACCP V4.0
回顾
指出下列语句的错误:
CREATE TABLE bank ( userName VARCHAR(10), 建表语句后必须添加GO标志 balance MONEY ) INSERT INTO bank(cardNo,userName,balance) VALUES('张三',500) INSERT INTO bank(cardNo,userName,balance) VALUES('李四',700) DECLARE @mymoney INT DECLARE mymoney INT(4) SET @mymoney=0 mymoney=0 SELECT mymoney=balance FROM bank
WHEN writtenExam>=60 and labExam>=60 THEN 1
ELSE 0 END
25
ACCP V4.0
T-SQL语句的综合应用
4.提分后,统计学员的成绩和通过情况: 1)使用别名实现中文字段名,即SELECT 姓名=stuName,学号 =stuNo… 2)如果某个学员的成绩为NULL(空),则替换为‛缺考‛,否则原样显 示; 3)isPass列中的1替换为是,0替换为否; SELECT …… ,机试成绩=CASE WHEN labExam IS NULL THEN '缺考' ELSE convert(varchar(5),labExam) END ,是否通过=CASE WHEN isPass=1 THEN '是' ELSE '否' END…… 26
T-SQL语句的综合应用
3.比较笔试平均分和机试平均分,对较低者进行循环提分,但提分后最 高分不能超过97分:
1) 使用IF语句判断笔试还是机试偏低,决定对笔试还是机试提分;
2) 使用WHILE循环给每个学员加分,缺考的除外,当最高分超过97分时 退出循环; 3)因为给每位学员的笔试或机试提分了,有的学员可能提分后刚好通过 了,所以需要更新isPass(是否通过)列。 UPDATE newTable SET isPass=CASE
20
ACCP V4.0
NOT EXISTS子查询 2-2
参考语句
IF NOT EXISTS (SELECT * FROM stuMarks WHERE writtenExam>60 AND labExam>60) BEGIN print '本班无人通过考试,试题偏难,每人加3分,加分后的成绩为:' UPDATE stuMarks SET writtenExam=writtenExam+3,labExam=labExam+3 SELECT * FROM stuMarks END ELSE BEGIN print '本班考试成绩一般,每人只加1分,加分后的成绩为:' UPDATE stuMarks SET writtenExam=writtenExam+1,labExam=labExam+1 SELECT * FROM stuMarks END GO
相关文档
最新文档