1SQL Server数据库设计与实现 ppt课件_第1页
1SQL Server数据库设计与实现 ppt课件_第2页
1SQL Server数据库设计与实现 ppt课件_第3页
1SQL Server数据库设计与实现 ppt课件_第4页
1SQL Server数据库设计与实现 ppt课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ACCP V4.0第三章第三章T-SQL编程ACCP V4.0回想 2-1q 建库的语法?q 补充下列语句:q IF EXISTSSELECT * FROM ? WHERE name=stuDB)q DROP DATABASE stuDBq 建表的语法?q 补充下列语句:q IF EXISTSSELECT * FROM ? WHERE name=stuDB)q DROP TABLE stuInfoq 解释下列语句的含义?q EXEC sp_addlogin zhangsan, 1234 q EXEC sp_grantdbaccess zhangsan, zhangsanDBUser ACCP

2、V4.0回想 2-2q 补充下列语句:q 1. ALTER TABLE stuInfo q ADD CONSTRAINT ? PRIMARY KEY (stuNo)q 2. ALTER TABLE stuInfo q ADD CONSTRAINT UQ_stuID ?q 3. ALTER TABLE stuInfo q ADD CONSTRAINT DF_stuAddress ?q 4. ALTER TABLE stuInfo q ADD CONSTRAINT CK_stuAge q CHECK(?)q 5. ALTER TABLE stuMarksq ADD CONSTRAINT FK_st

3、uNo q FOREIGN KEY ? REFERENCES ?ACCP V4.0目的q 掌握如何定义变量并赋值q 掌握如何输出显示数据q 掌握IF、WHILE、CASE逻辑控制语句q 理解SQL中批处理的概念ACCP V4.0使用变量 和C语言一样,变量分为:局部变量:局部变量必须以标记作为前缀 ,如age局部变量的使用也是先声明,再赋值 全局变量:全局变量必须以标记 作为前缀,如version全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值 ACCP V4.0局部变量 例如:DECLARE name varchar(8)DECLARE seat intq 声明局部变量q DEC

4、LARE 变量名 数据类型q 赋值 q SET 变量名 =值 q SELECT 变量名 = 值例如:SET name=张三SELECT name=stuName FROM stuInfo WHERE stuNo=s25302 必须确保筛选出的记录只有1条 或 ACCP V4.0局部变量示例 2-1问题:编写问题:编写T-SQL查找李文才的左右同桌查找李文才的左右同桌 ?学员信息表分析:分析:第一步,找出第一步,找出“李文才李文才“的座位号;的座位号;第二步,李文才的座位号加第二步,李文才的座位号加1或减或减1 ACCP V4.0局部变量示例 2-2/*-查找李文才的信息-*/DECLARE n

5、ame varchar(8) -学员姓名SET name=李文才 -使用SET赋值SELECT * FROM stuInfo WHERE stuName = name/*-查找李文才的左右同桌-*/DECLARE seat int -座位号SELECT seat=stuSeat FROM stuInfo -使用SELECT赋值 WHERE stuName=nameSELECT * FROM stuInfo WHERE (stuSeat = seat+1) OR (stuSeat = seat-1)GO演示:使用局部变量 q 参考语句ACCP V4.0全局变量 q全局变量都使用两个标志作为前缀q

6、 变量含义ERROR最后一个T-SQL错误的错误号IDENTITY最后一次插入的标识值LANGUAGE当前使用的语言的名称MAX_CONNECTIONS可以创建的同时连接的最大数目ROWCOUNT受上一个SQL语句影响的行数SERVERNAME本地服务器的名称TRANSCOUNT当前连接打开的事务数VERSIONSQL Server的版本信息ACCP V4.0全局变量示例print SQL Server的版本+VERSION print 服务器的名称: +SERVERNAME INSERT INTO stuInfo(stuName,stuNo,stuSex,stuAge) VALUES(武松,

7、s25328,男,23)-如果大于0表示上一条语句执行有错误print 当前错误号+convert(varchar(5),ERROR) print 刚才报名的学员,座位号为: +convert(varchar(5),IDENTITY )UPDATE stuinfo SET stuAge=85 WHERE stuName=李文才print 当前错误号+convert(varchar(5),ERROR) GO演示:使用全局变量 q 参考语句SQL Server的版本 服务器名称 错误号 座位号自动编号) 错误号 ACCP V4.0逻辑控制语句qIFELSE语句C语言中的if-else语句if (条

8、件) 语句1; 语句2; else 语句1; 语句2; SQL中的IF-ELSE语句IF (条件) BEGIN 语句1 语句2 ENDELSE BEGIN 语句1; 语句2; END 同C语言一样:ELSE是可选部分如果有多条语句,才需要BEGIN-END语句块 ACCP V4.0IF-ELSE示例 2-1问题:问题:统计并显示本班笔试平均分,如果平均分在统计并显示本班笔试平均分,如果平均分在70以上,以上,显示显示“成绩优秀成绩优秀“,并显示前三名学员的考试信息;,并显示前三名学员的考试信息;如果在如果在70以下,显示以下,显示“本班成绩较差本班成绩较差“,并显示后,并显示后三名学员的考试信

9、息三名学员的考试信息 。学员成绩表分析:分析:第一步,统计平均成绩存入临时变量;第一步,统计平均成绩存入临时变量;第二步,用第二步,用IFELSE判断;判断;ACCP V4.0IF-ELSE示例 2-2ACCP V4.0设置输出结果的格式q为了文本消息和输出结果显示在同一窗口,需要设置输出结果的格式ACCP V4.0逻辑控制语句q WHILE循环语句C语言中的while语句while (条件) 语句1; 语句2; break;SQL中的WHILE语句WHILE (条件) BEGIN 语句1 语句2 BREAK END 同C语言一样:BREAK表示退出循环如果有多条语句,才需要BEGIN-END

10、语句块 ACCP V4.0WHILE示例 2-1问题:问题:本次考试成绩较差,假定要提分,确保每人笔试都本次考试成绩较差,假定要提分,确保每人笔试都通过。提分规则很简单,先每人都加通过。提分规则很简单,先每人都加2分,看是否分,看是否都通过,如果没有全部通过,每人再加都通过,如果没有全部通过,每人再加2分,再看分,再看是否都通过,如此反复提分,直到所有人都通过为是否都通过,如此反复提分,直到所有人都通过为止止 。学员成绩表分析:分析:第一步,统计没通过的人数第一步,统计没通过的人数 ;第二步,如果有人没通过,加分;第二步,如果有人没通过,加分;第三步,循环判断。第三步,循环判断。 ACCP V

11、4.0DECLARE n intWHILE(1=1) -条件永远成立 BEGIN SELECT n=COUNT(*) FROM stuMarks WHERE writtenExam0) UPDATE stuMarks -每人加2分 SET writtenExam=writtenExam+2 ELSE BREAK -退出循环 ENDprint 加分后的成绩如下:SELECT * FROM stuMarksWHILE示例 2-2q参考语句ACCP V4.0逻辑控制语句qCASEEND多分支语句CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 ELSE 其他结果END

12、ACCP V4.0CASE-END示例 2-1问题:问题:采用美国的采用美国的ABCDE五级打分制来显示笔试成绩。五级打分制来显示笔试成绩。 A级级: 90分以上分以上 B级:级: 8089分分 C级级: 7079分分 D级:级: 6069分分 E级:级: 60分以下分以下学员成绩表ACCP V4.0print ABCDE五级显示成绩如下:SELECT stuNo, 成果= CASE WHEN writtenExam60 THEN E WHEN writtenExam BETWEEN 60 AND 69 THEN D WHEN writtenExam BETWEEN 70 AND 79 THE

13、N C WHEN writtenExam BETWEEN 80 AND 89 THEN B ElSE A END FROM stuMarksCASEEND示例 2-2q参考语句ACCP V4.0CASE-END课堂练习课堂练习:课堂练习:请根据平均分和下面的评分规则,编写请根据平均分和下面的评分规则,编写T-SQL语句查语句查询学员的成询学员的成 绩,如上图所示。绩,如上图所示。 优优 :90分以上分以上 良良 :8089分分 中中 :7079分分 差差 :6069分分 不及格不及格 :60分以下分以下学员成绩分析ACCP V4.0CASE-END练习答案USE stuDBGOSELECT 考

14、号=ExamNo,学号=stuNo,笔试=writtenExam,机试=labExam, 平均分=(writtenExam+labExam)/2, 等级=CASE WHEN (writtenExam+labExam)/260 THEN 不及格 WHEN (writtenExam+labExam)/2 BETWEEN 60 AND 69 THEN 差 WHEN (writtenExam+labExam)/2 BETWEEN 70 AND 79 THEN 中 WHEN (writtenExam+labExam)/2 BETWEEN 80 AND 89 THEN 良 ElSE 优 END FROM

15、stuMarksACCP V4.0批处理语句q 批处理是包含一个或多个 SQL 语句的组,从应用程序一次性地发送到SQL Server执行q SQL Server 将批处理语句编译成一个可执行单元,此单元称为执行计划。执行计划中的语句每次执行一条客户端应用程序SQL Server服务器批处理语句:语句1语句2GOACCP V4.0批处理语句示例SELECT * FROM stuInfoSELECT * FROM stuMarksUPDATE stuMarks SET writtenExam=writtenExam+2 GOlGO是批处理的标志,表示SQL Server将这些T-SQL语句编译为

16、一个执行单元,提高执行效率l一般是将一些逻辑相关的业务操作语句,放置在同一批中,这完全由业务需求和代码编写者决定 ACCP V4.0批处理语句示例-例如建表语句的末尾必须添加GOCREATE TABLE stuInfo (.) GOq SQLServer规定:如果是建库、建表语句、以及我们后面学习的存储过程和视图等,则必须在语句末尾添加 GO 批处理标志ACCP V4.0课堂综合练习课堂练习:则根据如下规则对机试成绩进行反复加分,直到平均分超过85分为止。请编写T-SQL语句实现。90分以上: 不加分8089分: 加1分7079分: 加2分6069分: 加3分60分以下: 加5分加分前加分后A

17、CCP V4.0课堂综合练习答案SELECT * FROM stuMarks -原始成绩DECLARE labAvg INTWHILE(1=1) BEGIN UPDATE stuMarks SET labExam= CASE WHEN labExam=85 BREAK ENDSELECT * FROM stuMarks -加分后的成绩声明变量,用户临时存放平均分循环加分根据机试成绩酌情加分,整个是一个UPDATE语句获取目前的平均分,判断是否还继续加分ACCP V4.0总结 3-1q 和C语言非常类似,变量的使用也是先声明,然后再赋值。局部变量前必须有“”前缀,全局变量必须 “”前缀。q DECLARE 变量名 数据类型q 局部变量赋值的两种方式q SET 变量名 =值 q SELECT 变量名 = 值q 变量结果输出的两种方式qprint语句和select语句q 控制流语句提供了条件操作所需要的顺序和逻辑q 语句块使用 BeginEndq 批处理可以提高语句执行的效率,批处理结束标志是“GO”ACCP V4.0总结 3-2SQL中的IF-ELS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论