实验八 T-SQL
学生班级
语言的应用
学号 姓名:
【实验一】函数及基本语句
(1)计算你来到人世的总天数。
SELECT N'
来
到
世
间
的
天
数
'=DATEDIFF(DAY,'1991-02-07',GETDATE())
(2)计算年龄为整77岁对应的总天数。
select SELECT N'
N'77岁人的生日
'=dateadd(year,-77,getdate())
来
到
世
间
的
天
数
'=DATEDIFF(DAY,'1934-10-31',GETDATE()) SELECT N'
来
到
世
间
的
天
数
'=DATEDIFF(DAY,dateadd(year,-77,getdate()),GETDATE())
(3)计算出生日期为1990年12月21日的人的年龄。
SELECT N'
年
龄
'=DATEDIFF(year,'1990-12-21',GETDATE())
(4)将数值型数据11.34转换成字符型,要求长度为6位,小数位数为2位。
declare @x float set @x=11.34
select STR(@x,6,2)
(5)查询课程表中课程名称是4个字的课程信息。
select * from course where len(cname)=4
(7)利用变量和打印语句显示最大报名人数和最小报名人数。declare @max_bmrs int,@min_bmrs int select
@max_bmrs=MAX(
报
数),@min_bmrs=min(报名人数) from student print @max_bmrs print @min_bmrs
(8)求10!。
declare @inti int declare @s bigint set @s=1 set @inti=1 while @inti<11 begin
set @s=@s*@inti set @inti=@inti+1 end print @s
人
名
【实验二】编程获取某雇员的工作业绩信息
题目要求: 使用T-SQL编程,获取“王孔若”的姓名、性别、出生年月及雇用日期等信息;然后输出“王孔若”所做订单的明细表、订单数目及订单总金额。 实例分析:由于订单明细表具体信息分布在p_order表(订单表)、product 表(产品表)、 customer表(客户表)中,故需要用SELECT语句提取出这 些表中的有用信息。所以,本题的完成涉及多个表操作。 在下面粘贴你所使用的SQL语句。 语句提示:
--定义SQL server的变量,必须以@开头命名变量,用DECLARE定义变量 --为变量赋值
--通过查询语句将字段的值赋值给变量
--用PRINT语句结合函数格式化输出变量的值 --输出雇员'王孔若'完成的订单明细
--输出雇员'王孔若'完成的订单数目以及订单总金额
USE companyinfo
--定义SQL server的变量,必须以@开头命名变量,用DECLARE定义变量 DECLARE @emp_Id int DECLARE @name varchar(8) DECLARE @sex char(2) DECLARE @date1 datetime DECLARE @date2 datetime --为变量赋值
SET @name='王孔若'
--通过查询语句将字段的值赋值给变量
SELECT @emp_Id=雇员id,@sex=性别,@date1=出生日期,@date2=雇佣日期 FROM employee WHERE 姓名=@name
--用PRINT语句结合函数格式化输出变量的值 PRINT '姓名: '+@name+' 性别:'+@sex
+' 出生年月:'+convert(char(4),year(@date1))+ '年' +convert(char(2),month(@date1))+ '月' +convert(char(2),day(@date1))+ '日'
+' 雇用日期:'+convert(char(4),year(@date2))+ '年' +convert(char(2),month(@date2))+ '月' +convert(char(2),day(@date2))+ '日' --输出雇员'王孔若'完成的订单明细
SELECT customer.公司名称,customer.联系人姓名,
product.产品名, p_order.数量,p_order.订货日期, employee.姓名 ,product.单价
FROM employee,customer,product,P_order WHERE employee.雇员ID= @emp_Id and P_order.雇员ID=employee.雇员ID and P_order.产品ID=product.产品ID and P_order.客户ID=customer.客户ID SELECT
count(*)
as
订
单
数
目,sum(P_order.数量*product.单价) as 总金额 FROM employee,product,P_order
WHERE employee.雇员id= @emp_Id and P_order.雇员id=employee.雇员id and P_order.产品id=product.产品id
【实验二】
题目要求: 雇员“王孔若”签订了一个供应给“鹿城中学”50个优盘的订单,编程实现将订单涉及的相关信息写入数据库中。
实例分析:一条订单会涉及产品、客户及雇员的有关信息,且这些信息分别存放在不同的表中,所以,要将订单涉及的相关信息写入数据库中,需要完成以下几方面的操作。
先要获取该订单的相关信息。然后在将这条订单信息添加到订单表(p_order)中的同时,还必须修改其他表中的信息,包括在客户表(customer)中添加对应于该订单记录对应
的客户信息,在产品表(product)中修改产品的库存量,其值必须为当前库存量的值减去刚增加的订单记录中包含的数量值。
同理,如果某雇员取消了一个订单,在各表中也必须修改或删除相应的记录信息。 在下面粘贴你所使用的SQL语句。 声明变量提示: --雇员ID
--客户ID的最大值 --订单ID的最大值 --产品的库存量
--供应产品的产品编号
USE companyInfo
DECLARE @userId int --保存雇员ID
DECLARE @max_cusId int --保存客户ID的最大值 DECLARE @max_ordId int --保存订单ID的最大值 DECLARE @storePro int --保存产品的库存量
DECLARE @id_product int --保存供应产品的产品编号 SELECT @max_cusId=max(客户ID) FROM customer
SELECT @max_cusId=@max_cusId+1 --获取新插入客户的ID INSERT customer VALUES(@max_cusId, '鹿城中学', '李汉明', '05778235423','温州市学院路号','325000')
SELECT @storePro=库存量,@id_product=产品ID FROM product WHERE 产品名='优盘'
SELECT @max_ordId=max(订单ID) FROM P_order
SELECT @max_ordId=@max_ordId+1 --获取要插入的订单信息的订单ID SELECT @userId=雇员ID FROM employee WHERE 姓名='王孔若' IF @storePro<50
PRINT '库存量不够' ELSE BEGIN
INSERT P_order VALUES(@max_ordId,@id_product, 50,@userId,@max_cusId,getdate())
UPDATE product SET 库存量=库存量-50 WHERE 产品ID=@id_product END
相关推荐: