实验7_T-SQL语言编程基础[1]1

合集下载

实验七TSQL编程

实验七TSQL编程

实验7 T-SQL编程
一、实验目的
1.掌握Transact SQL语言的编程知识以及SQL Server常用系统函数的使用。

2.掌握程序中的批处理、脚本和注释的基本概念和使用方法。

3.掌握程序中的流程控制语句。

4.掌握批处理、事务以及游标的管理与使用。

二、实验内容
1.统计customer表中,大户类型的客户总数。

2.统计Eproduct表单价的平均值、最低值和最高值。

3.在customer表上如果存在注册日期在2003年以前的客户,给出这些客户的列表。

否则给出一条提示信息,说明没有满足条件的客户。

4.计算s=1!+2!+…+10!。

5.显示所有类型为‘大户’的客户信息,并且在显示之前,暂停1分钟。

6.使用事务处理,将用户李力青的电话号码由原来的38011566改为38011567。

7.使用游标来计算2010年1月产品的通信费用,填入帐单信息表(Bills)中。

实验7 Transact-SQL程序设计

实验7 Transact-SQL程序设计

实验7 Transact-SQL程序设计一、实验目的1.掌握Transact-SQL的数据类型、常量变量、表达式等概念。

2.掌握SQL Server 2005中常用函数的用法。

3.掌握程序中注释的基本概念和使用方法。

4.了解程序中的流程控制语句。

二、实验准备1.了解函数的使用方法。

2.了解系统提供的常用数学函数、日期和时间函数、字符串函数和数据类型转换函数的用法。

3.了解程序中注释的语法格式。

4.了解程序中的流程控制语句:IF-ELSE、CASE、WHILE等控制流语句。

三、实验内容和步骤1.在查询分析器中,选择studentsdb数据库,在学生表中查找姓“张”的学生,并将该生姓名赋于变量@stu_name。

提示:首先要定义变量@stu_name。

2.定义int型局部变量@grademax、@grademin、@gradesum,在成绩表中查找课程编号是“C002”课程的最高分、最低分和总分,分别赋给@grademax、@grademin和@gradesum,并显示。

3. 使用SET命令将查询结果集记录数目赋值给int型局部变量@row。

给下面代码中的划线处填上适当的内容,以完成上述操作。

DECLARE @rows____int_______SET _____@rows _______=(SELECT COUNT(*)FROM 成绩表)_____ SELECT ______@rows --显示@rows的值4.以下代码在课程表中插入新记录:DECLARE @intCId int,@intErrorCode intINSERT INTO 课程表(课程编号,课程名称,学分)VALUES('0006','VB程序设计',2)SELECT @intCId=@@identity,@intErrorCode=@@errorSELECT @intCId,@intErrorCode将该代码段连续执行两次,观察两次显示的信息及课程表中数据的变化,为什么前后两次执行时显示的信息会不同?提示:@@identity,@@error参看教材P172 表9-2生和女生人数。

实验七 T_SQL的程序设计

实验七 T_SQL的程序设计

实验七T_SQL的程序设计一、实验目的1、掌握T_SQL的简单的变量的声明、赋值,输出语句。

2、学生能够编写简单的程序。

二、实验要求使学生了解T_SQL的编程的基础知识,掌握简单的变量的声明、赋值,输出以及流程控制语句。

三、实验环境1、操作系统:WinXp Professional2、数据库:SQL Server 2000个人版四、实验内容和步骤局部变量在程序中通常用来储存从表中查询到的数据,或当作程序执行过程中暂存变量使用。

局部变量必须以“@”开头,而且必须先用DECLARE命令说明后才可使用。

其说明形式如下:DECLARE @变量名变量类型[@变量名变量类型…]在Transact-SQL中不能像在一般的程序语言中一样使用“变量=变量值”来给变量赋值。

必须使用SELECT或SET命令来设定变量的值,其语法如下:SELECT @局部变量=变量值或SET @局部变量=变量值DECLARE 命令用于声明一个或多个局部变量、游标变量或表变量。

在用DECLARE 命令声明之后,所有的变量都被赋予初值NULL。

需要用SELECT 或SET命令来给变量赋值。

变量类型可为系统定义的或用户定义的类型,但不能为TEXT、NTEXT、IMAGE类型。

CURSOR 指明名变量是局部的游标变量。

语法如下:DECLARE {{ @local_variable data_type }| { @cursor_variable_name CURSOR }| { table_type_definition }} [,...n]]例7-1:声明一个长度为10 个字符的变量“id”并赋值10010001declare @id char(10)这个小括号是英文的括号select @id=此处是英文的左单引号…‟10010001‟‟这两个单引号都要英文状态下的左单引号print @id在查询分析器中的结果如图7-1所示。

图7-1简单的赋值语句窗口注意:可以在Select命令查询数据时,在Select命令中直接将列值赋给变量例7-2在屏幕中输出“科技、SQL Server”字样declare @x char(4), @y char(7) 英文状态下的逗号select @x = 'SQL', @y = 'Server'print '科技'print @x +@y在查询分析器中的结果如图7-2所示。

实验7 T-SQL语言程序设计

实验7 T-SQL语言程序设计

实验七T-SQL语言程序设计实验目的与要求⏹熟练掌握变量的定义和赋值。

⏹熟练掌握用户自定义数据类型定义、使用和删除。

⏹熟练掌握各种运算符。

⏹熟练掌握流程控制语句,尤其是条件语句和循环语句。

⏹熟悉并掌握常用的系统函数。

二、实验内容和步骤1、为提高学生学习动力,学校推出一项举措:根据本年综合测评成绩来确定下一年允许图书借阅本书,综合测评<450 允许借阅3本;综合测评>=450且综合测评<500允许借阅4本;综合测评>=500且综合测评<550允许借阅5本;综合测评>=550允许借阅6本,请在学生表中添加“借阅本数”列存放根据综合测评列生成的信息。

添加“借阅本数”列:ALTER TABLE[ex7].[dbo].[学生]ADD借阅本数INT根据“综合测评”计算“借阅本数”:UPDATE[ex7].[dbo].[学生]SET借阅本数=CASEWHEN综合测评<450 THEN 3WHEN综合测评>=450 AND综合测评<500 THEN 4WHEN综合测评>=500 AND综合测评<550 THEN 5WHEN综合测评>=550 THEN 6END2、创建触发器实现,在向学生表中添加学生或将当前学生的综合测评值变更时,自动在借阅本数列输入相应的值。

--创建触发器CREATE TRIGGER TON学生AFTER UPDATEASDECLARE@OLD_SCORE FLOAT,@NEW_SCORE FLOAT,@BORROW_NUM INT,@ID FLOAT SELECT@OLD_SCORE=综合测评FROM DELETEDSELECT@NEW_SCORE=综合测评,@ID=学号FROM INSERTEDIF UPDATE(综合测评)BEGINUPDATE学生SET借阅本数=CASEWHEN@NEW_SCORE<450 THEN 3WHEN@NEW_SCORE>=450 AND@NEW_SCORE<500 THEN 4WHEN@NEW_SCORE>=500 AND@NEW_SCORE<550 THEN 5WHEN@NEW_SCORE>=550 THEN 6ENDWHERE学号=@IDEND验证:UPDATE学生SET综合测评= 455WHERE学号='1606050228'CREATE TRIGGER T1ON学生AFTER INSERTASDECLARE@NEW_SCORE FLOAT,@BORROW_NUM INT,@ID FLOATSELECT@NEW_SCORE=综合测评,@ID=学号FROM INSERTEDBEGINSET借阅本数=CASEWHEN@NEW_SCORE<450 THEN 3WHEN@NEW_SCORE>=450 AND@NEW_SCORE<500 THEN 4WHEN@NEW_SCORE>=500 AND@NEW_SCORE<550 THEN 5WHEN@NEW_SCORE>=550 THEN 6ENDWHERE学号=@IDENDINSERT INTO[ex7].[dbo].[学生](学号,综合测评)VALUES ('1',425)3、各学院对学生的综合测评进行汇总,其中统计分数在500分以上的学生的人数占学院总人数的百分比。

实验07_使用T-SQL编写存储过程和函数实验报告

实验07_使用T-SQL编写存储过程和函数实验报告

北京理工大学珠海学院实验报告ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY 班级学号姓名指导教师成绩实验题目使用T-SQL编写存储过程和函数实验时间一实验目的1. 理解存储过程的概念、使用方式;2. 熟悉使用T-SQL编写存储过程来进行数据库应用程序的设计;3. 掌握SQL Server中自定义函数的概念,熟悉自定义函数的类型;4. 能创建相关的自定义函数,解决T-SQL程序设计中的相关问题。

二实验工具SQL Server 2008利用SQL Server 2008 SSMS及其SQL新建查询编辑器,使用T-SQL编写存储过程和函数。

三实验内容和要求1.建立学生-课程数据库,其中包含学生表Student(Sno,Sname,Ssex,Sage,Sdept)、课程表:Course(Cno,Cname,Cpno,Ccredit)和学生选课表:SC(Sno,Cno,Grade);编写相应的存储过程,完成下面的功能:(1)编写一个存储过程,可以查询指定系的学生的选课信息,列出学号、姓名、所在系、课程名和成绩等内容。

调用该存储过程,测试执行结果。

(2)编写一个存储过程,返回指定课程的平均分。

调用该存储过程,测试执行结果。

(3)编写一个存储过程,可以查询指定系指定成绩等级的学生的选课信息,列出学号、姓名、所在系、课程名和成绩等内容。

调用该存储过程,测试执行结果。

(成绩等级为优、良、中、及格、不及格,其中成绩在90分到100分之间为‘优’,在80分到89分之间为‘良’,在70分到79分之间为‘中’,在60分到69分之间为‘及格’,在0分到59分之间为‘不及格’。

)要求:提交创建存储过程的SQL脚本,并标注必要的注释。

保证程序能够正确编译和运行,并有相应的测试代码。

2. 自定义标量函数假设有一家生产的集装箱的公司,生产一些不同型号的集装箱,存储集装箱信息的表如下所示。

实验7_T-SQL语言编程基础

实验7_T-SQL语言编程基础

实验七T-SQL语言编程基础【实验目的与要求】1.熟练掌握变量的定义和赋值。

2.熟练掌握各种运算符。

3.熟练掌握流程控制语句,尤其是条件语句和循环语句。

【实验内容与步骤】一、准备实验数据CPXS数据库包含如下三个表:CP(产品编号,产品名称,价格,库存量);XSS(客户编号,客户名称,地区,负责人,电话);CPXSB(产品编号,客户编号,销售日期,数量,销售额);三个表结构如图2.1~图2.3所示,请在企业管理器中完成表的创建。

图2.1 CP表结构图2.2 XSS表结构图2.3 CPXSB表结构2.1数据写入操作在企业管理器中输入如图2.4~图2.6的CP表、XSS表和CPXSB表的样本数据。

图2.4 CP表的样本数据图2.5 XSS表的样本数据图2.6 CPXSB表的样本数据10.1.变量的定义与输出1.变量的定义和赋值1)局部变量的声明:DECLARE @variable_name DataType例如:declare @stuname varchar(20)--声明一个存放学员姓名的变量stuname.declare @stuseat int--声明一个存放学员座位号的变量stuseat2)局部变量的赋值:局部变量的赋值有两种方法:a)使用Set语句Set @variable_name=valueb)使用Select语句Select @variable_name=value实验:运行以下程序段,理解变量的使用。

--局部变量的赋值与使用declare @customer_name varchar(20)--声明变量用来存放客户名称set @ customer_name ='家电市场'--使用SET语句给变量赋值select*from xsswhere客户名称=@customer_name --通过局部变理向sql语句传递数据请给出运行结果:练习:创建一名为Product_name的局部变量,并在SELECT语句中使用该变量查找“冰箱”的”价格”和”库存量”。

实验一t-sql语言的基本使用(实验报告内容) (1)

实验一t-sql语言的基本使用(实验报告内容) (1)

实验一T-SQL语言的基本使用(实验报告)一、目的1.掌握利用各种数据类型声明局部变量的方法。

2.掌握为局部变量赋值的两种方法。

3.掌握常用系统函数、运算符和表达式的功能和应用。

二、实验内容1.变量的应用在为变量赋值语句中,set命令一次只能为一个变量赋值,而select命令一次可以为多个变量赋值。

declare @name varchar(10),@sex nchar(2),@birthday datetime,@usually int,@final numeric(4,1)Set @name = ‘数据库’Set @sex = ‘男’Select @birthday = ‘1989-12-18’,@usually = 88.5,@final = 90Print @name+@sexPrint @birthday2.运算符的使用算术运算符:Print getdate()+100Print 123+23%10/7+(17-6)*2.5字符串连接运算符:Declare @a char(5),@b varchar(5),@c int,@d decimal(5,2)Select @a=‘123’,@b=‘456.5’,@c=123,@d=456.5Print @a+@bPrint @a+@dPrint @c+@dSelect @a=‘数据库’,@b=‘程序开发’Print @a+@bPrint @a+@d(有问题)3.系统函数的使用数学函数:select ceiling(16.3),ceiling(-16.8)时间日期函数Declare @birthday datetimeSet @birthday=‘1989-12-18’Select @birthday as ‘生日’,datediff(year,@birthday,getdate()) as ‘年龄’Select getdate() as ‘当前日期’,year(getdate()) as ‘年份’,datepart(month,getdate()) as ‘月份’,datename(day,getdate()) as ‘日期’转换函数:Declare @count int,@date datetimeSelect @count = 255,@date = getdate()Print ‘变量count的值为:’ +cast(@count as varchar(5))Print cast(‘2009-12-05’ as smalldatetime)+100Print convert(varchar(10),@date,102)字符串函数:Declare @str as nchar(25)Set @str = ‘数据库应用与开发’Select len(@str),charindex(‘数据库’,@str),substring(@str,5,6),replace(@str,‘开发’,‘设计’),lower(@str),ascii(@str)三、实验环境SQL2005。

T-SQL基础教程

T-SQL基础教程

例11.11 使用WAITFOR实现以下功能:根据“学生”表输出系部代码 为’02 ’的学号、姓名、出生日期、在输出之前等待4秒。 Begin waitfor time ’10:00:00’ select * from 学生 End
5 PRINT语句
SQL Server向客户程序返回信息的方法除了SELECT 语句外,还可以使用PRINT语句,它的语法格式为: PRINT 字符串|函数|局部变量|全局变量
批处理语句示例
SELECT * FROM student SELECT * FROM sc UPDATE sc SET grade=grade+2 GO GO是批处理的标志,表示SQL Server将这些T-SQL语句 编译为一个执行单元,提高执行效率 一般是将一些逻辑相关的业务操作语句,放置在同一批 中,这完全由业务需求和代码编写者决定
课后思考: 1. 2. 3. 4. 5. 创建批处理时的注意事项有哪些? 什么是脚本? SQL Server支持哪几种注释? 变量的概念 局部变量的声明、赋值及其作用域
总结 2-1
数据库的物理实现一般包括:
创建数据库 创建表 添加各种约束 创建数据库的登录帐户并授权
创建数据库或表时一般需要预先检测是否存在该 对象
T_SQL程序设计基础
1.1 T-SQL语言简介
T-SQL语言
SQL( Structure Query Language)语言是关系型数据 库标准应用语言 Transact- SQL(简写为T-SQL)是对标准SQL的扩展。
T-SQL特点
功能强大:集DDL DML DCL于一体 简单易学 非过程化语言
全局变量与系统存储过程
9.查看数据库里所有的存储过程和函数 use @database_name sp_stored_procedures 查看存储过程和函数的源代码 sp_helptext '@procedure_name' 查看包含某个字符串@str的数据对象名称 select distinct object_name(id) from syscomments where text like '%@str%' 建加密的存储过程或函数在AS前面加WITH ENCRYPTION参数 解密加密过的存储过程和函数可以用sp_decrypt过程
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七T-SQL语言编程基础
【实验目的与要求】
1.熟练掌握变量的定义和赋值。

2.熟练掌握各种运算符。

3.熟练掌握流程控制语句,尤其是条件语句和循环语句。

【实验内容与步骤】
一、准备实验数据
CPXS数据库包含如下三个表:
CP(产品编号,产品名称,价格,库存量);
XSS(客户编号,客户名称,地区,负责人,电话);
CPXSB(产品编号,客户编号,销售日期,数量,销售额);
三个表结构如图2.1~图2.3所示,请在企业管理器中完成表的创建。

图2.1CP表结构
图2.2XSS表结构
图2.3CPXSB表结构
2.1数据写入操作
在企业管理器中输入如图2.4~图2.6的CP表、XSS表和CPXSB表的样本数据。

图2.4CP表的样本数据
图2.5XSS表的样本数据
图2.6CPXSB表的样本数据
10.1.变量的定义与输出
1.变量的定义和赋值
1)局部变量的声明:
DECLARE@variable_name DataType
例如:
declare@stuname varchar(20)--声明一个存放学员姓名的变量stuname.
declare@stuseat int--声明一个存放学员座位号的变量stuseat
2)局部变量的赋值:
局部变量的赋值有两种方法:
a)使用Set语句
Set@variable_name=value
b)使用Select语句
Select@variable_name=value
实验:
运行以下程序段,理解变量的使用。

--局部变量的赋值与使用
declare@customer_name varchar(20)--声明变量用来存放客户名称set@customer_name='家电市场'--使用SET语句给变量赋值select*
from xss
where客户名称=@customer_name--通过局部变理向sql语句传递数据请给出运行结果:
练习:
创建一名为Product_name的局部变量,并在SELECT语句中使用该变量查找“冰箱”的”价格”和”库存量”。

给出相应的语句
declare@Product_name varchar(20)
set@Product_name='冰箱'
select价格,库存量
from cp
where产品名称=@Product_name
请给出运行测试结果:
2.两种输出语句:
1)Print输出单个的局部变量或字符串表达式.如:PRINT'价格合理';
2)Select局部变量as自定义别名。

3.全局变量:
1)SQL Server2005中的所有全局变量都使用两个@@标志作为前缀.
常见全局变量
2)全局变量的使用
运行以下程序段,理解全局变量的使用。

use cpxs
go
select*from cp
insert into cp values('0221055','爱多VCD',2326,12)
select当前的错误号=@@error
--0
update CP set库存量=120where产品编号='0221055'
print'当前的错误号'+convert(varchar(20),@@error)
--当前的错误号
select更新的产品编号=@@identity
--6
select当前使用的语言的名称=@@language
--简体中文
select本地服务器的名称=@@servername
--DEMONSTRATOR
select此计算机上SQL服务的名称=@@servicename
--MSSQLSERVER
select SQLServer的版本信息=@@version
给出运行结果:
10.2.条件结构
1.在查询分析器中执行下面的语句,体会IF...ELSE...结构
DECLARE@Price float
SELECT@Price=价格FROM CP WHERE产品编号='100002'
IF@Price>=3000
PRINT'价格偏高'
ELSE
PRINT'价格合理'
PRINT'价格为:'+CONVERT(CHAR(5),@Price)
给出运行结果:
2.练习:自己编写一段程序判断CP表中价格与平均值的比较,将低于平均值的数据行输出来。

给出相应的语句段和运行结果:
10.3.循环结构
1.下面是计算1~100和的循环结构,执行之,体会循环结构程序。

(注意语句块标志BEGIN...END)
DECLARE@SUM INT,@I INT
SELECT@I=1,@SUM=0
WHILE@I<=100
BEGIN
SELECT@SUM=@SUM+@I
SELECT@I=@I+1
END
PRINT'1...100的和为:'+CONVERT(CHAR(4),@SUM)
给出运行结果:
2.练习:编写一个程序用于计算10的阶乘
给出相应的程序和运行结果:
10.4.完成以下T-SQL语言编程
(1)用T-SQL语言编程输出3~300之间能被7整除的数。

给出相应的程序和运行结果:
declare@i int
select@i=3
print'3~300能被7整除的数:'
while@i<=300
begin
if@i%7=0
begin
print convert(char(3),@i)
end
set@i=@i+1
end
(2)用T-SQL语言编程输出3~100之内的素数。

给出相应的程序和运行结果:
declare@i int,@f int,@j int
select@i=3
while@i<=100
begin
set@f=1
set@j=2
while@j<@i
begin
if@i%@j=0
begin
set@f=0
break
end
set@j=@j+1
end
if@f=1
print+@i
set@i=@i+1
end
(3)在CP表中查找名为”长虹彩电”的产品,如果存在,则显示该产品的信息;否则,显示”查无此产品”。

给出相应的程序和运行结果:
declare@name char(20)
select@name=产品名称
from cp
where产品名称='长虹彩电'
if@name='长虹彩电'
select*
from cp
where产品名称=@name
else print'查无此产品'
(4)查看有无客户编号为”000004”的销售记录,如果有,则显示“有”,并查询显示该客户销售的产品信息。

给出相应的程序和运行结果:
declare@customer_num char(6)
select@customer_num=客户编号
from xss
where客户编号='000004'
if@customer_num='000004'
begin
select*
from cpxsb
where客户编号=@customer_num
end
else print'查无此产品'。

相关文档
最新文档