用Transact-SQL语句完成下列程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Transact-SQL语句完成下列程序相关的知识,希望对你有一定的参考价值。

1. 在数据库sales中新建表sale_price,其中包含两个字段:int型的in_price和长度为40个字符的goods_name,并在goods_name字段上设置主键约束。

2. 在sales数据库中使用INTO字句创建新表receive,该表包括sales数据库detail表的quantity大于10的前10个记录,且只包含id和name字段。
3. 已知sales数据库output表中同一id的商品的每次进货都有一条记录,用以记录该商品的id,name和进货数量(quantity)。查询总数量大于100的商品的id,name和总数量。
4. 已知sales数据库有库存表stock和订购表order,都有id,name和quantity字段,其中quantity分别表示库存量和订购量,查询订购量大于100的商品id和name和库存量。
5. 编写Transact-SQL程序计算1+2+3+……+100的和。

1
CREATE TABLE [sale_price] (
[in_price] [int] ,
[goods_name] [char] (40),
CONSTRAINT [PK_sale_price] PRIMARY KEY CLUSTERED
(
[goods_name]
) ON [PRIMARY]
) ON [PRIMARY]
2
select top 10 id,name into receive from detail where quantity>10 order by quantity desc
3
select id,name,sum(quantity) as sumquantity from output group by id,name having sum(quantity)>100
4
select id,name,quantity from stock where id in (select id from (select id,name,sum(quantity) as sumquantity from output group by id,name having sum(quantity)>100) t)
5
declare @test int,@result int
set @test=1
set @result=0
while @test<=100
begin
set @result=@result+@test
set @test=@test+1
end
print @result
参考技术A 问题好多
1、在企业管理器中建好,生成脚本就看到了
2、select top 10 id,name into receive from detail where quantity>10 order by quantity desc
3、select id,name,sum(quantity) as sumquantity from output group by id,name having sum(quantity)>100
4、select id,name,quantity from stock where id in (select id from (select id,name,sum(quantity) as sumquantity from output group by id,name having sum(quantity)>100) t)
5、具体语句不写,循环加起来,与其他编程语言区别不大
参考技术B ?

用SQL语句写出完成如下查询

1.查询同时只选修了1号和2号课程的学生的学号
2.查询至少选修了1号和2号课程的学生的学号,按学号降序排列
3.查询被3门以上(包含3门)课程作为直接先行课的课程号
5.查询平均分在80分以下的学生的学号和选修的课程名

表student

学号 姓名 性别 年龄 所在系
Sno Sname Ssex Sage Sdept
200215121 李勇 男 20 CS
200215122 刘晨 女 19 IS
200215123 王敏 女 18 MA
200215125 张立 男 19 IS

表course
课程号 课程名 先行课 学分
Cno Cname Cpno Ccredit
1 数据库 5 4
2 数学 2
3 信息系统 1 4
4 操作系统 6 3
5 数据结构 7 4
6 数据处理 2
7 PASCAL语言 6 4

表sc
学号 课程号 成绩
Sno Cno Grade
200215121 1 92
200215121 2 85
200215121 3 88
200215122 2 90
200215122 3 80

参考技术A 近来在巩固SQL中,以下语句经过运行,完全正确,有问题请加MSN:guoyunsky@hotmail.com
--1.查询同时只选修了1号和2号课程的学生的学号
SELECT DISTINCT SNO FROM SC WHERE SNO IN (SELECT DISTINCT S1.SNO FROM SC AS S1,SC AS S2 WHERE S1.SNO=S2.SNO AND ((S1.CNO=1 AND S2.CNO=2) OR (S1.SNO=2 AND S2.SNO=1))) GROUP BY SNO HAVING COUNT(*)=2
或者:
SELECT SNO FROM SC GROUP BY SNO HAVING (COUNT(*)=2 AND MIN(CNO)=1 AND MAX(CNO)=2)

--2.查询至少选修了1号和2号课程的学生的学号,按学号降序排列
SELECT DISTINCT S1.SNO FROM SC AS S1,SC AS S2 WHERE S1.SNO=S2.SNO AND ((S1.CNO=1 AND S2.CNO=2) OR (S1.CNO=2 AND S2.CNO=1) ) ORDER BY S1.SNO DESC

--3.查询被3门以上(包含3门)课程作为直接先行课的课程号
SELECT CPNO FROM C GROUP BY CPNO HAVING COUNT(*)>=3

--4.查询平均分在80分以下的学生的学号和选修的课程名
SELECT DISTINCT SNO,(SELECT CNAME FROM C WHERE CNO=SC.CNO) FROM SC GROUP BY SNO,CNO HAVING AVG(GRADE)<80
参考技术B 1.select sno from sc where exists (select SNO FROM SC WHERE CNO=1) and exists (select SNO FROM SC WHERE CNO=2) ;

2.SELECT SNO FROM SC WHERE CNO IN (1,2) order by sno desc;

3. select distinct c.cno from ( select sno from (select sno,count(cno) n from sc group by sno) where n>=3)a,sc c where a.sno=c.sno

第四个题目有点不理解!!!!
不知道是学生平均分还是课程平均分本回答被提问者采纳
参考技术C 1.查询同时只选修了1号和2号课程的学生的学号
SELECT DISTINCT Sno FROM (SELECT Sno FROM sc WHERE Cno=1) AS A INNER JOIN (SELECT Sno FROM sc WHERE Cno=2) B ON A.Sno=B.Sno

2.查询至少选修了1号和2号课程的学生的学号,按学号降序排列
SELECT DISTINCT Sno FROM sc WHERE Cno=1 OR Cno=2 ORDER BY Sno DESC

3.查询被3门以上(包含3门)课程作为直接先行课的课程号
不知道什么是直接先行课.

5.查询平均分在80分以下的学生的学号和选修的课程名
平均分是指什么?如果按课程平均,则不会有课程名,如果按照每种课程不同次考试的成绩:
SELECT A.Sno,B.CName FROM (SELECT Sno,Cno,AVG(Grade) FROM sc GROUP BY Sno,Cno HAVING AVG(Grade)<80) AS A INNER JOIN Course B ON A.Cno=B.Cno
参考技术D 出题目要给高分 第5个回答  2008-11-04 你自己参考相关书籍,自己写吧

以上是关于用Transact-SQL语句完成下列程序的主要内容,如果未能解决你的问题,请参考以下文章

@@ROWCOUNT (Transact-SQL)

数据库 分别使用一条Transact-SQL语句完成下来操作拜托各位了 3Q

Transact-SQL中的存储过程

sqlgo是啥意思,如何使用?

Begin Tran 和提交 Tran 的困惑

查询优化怎样用SQL语句查看查询的性能指标