A. sqlserver加分编程题
----table 为你的表名,通过循环语句实现更新,@coun为更新次数
declare @cou int,@count int
set @cou=0
set @count=0
select top 0 * into #t1 from table
select @cou =COUNT (*) from table where [分数]<90
while @cou>0
begin
set @count=@count+@cou
insert into #t1
select * from table where [分数]<90
update a
set a.[分数]= case when [分数] <60 then [分数]+5
when [分数] <70 then [分数]+4
when [分数] <80 then [分数]+3
when [分数] <90 then [分数]+2
else [分数]
end
from table a
inner join #t1 b on a.[姓名]=b.[姓名] and a.[课程]=b.[课程]
delete from #t1
select @cou =COUNT (*) from table where [分数]<90
end
print @count
B. 求解答数据库基础SQLserver2/3/4题
SQL代码如下:
1.
CREATETABLECourse
(
Cno VARCHAR(3) PRIMARYKEY,
Cname VARCHAR(30),
Cpno VARCHAR(3)
)
CREATETABLEStudent
(
Sno VARCHAR(7) PRIMARYKEY,
Sname VARCHAR(20),
Ssex CHAR(2),
birthday DATE,
Sdept VARCHAR(15)
)
CREATETABLESC
(
Sno VARCHAR(7),
Cno VARCHAR(3),
Grade INT,
CONSTRAINTpk_SC_Sno_CnoPRIMARYKEY(Sno,Cno)
)
2.
SELECT(SELECT COUNT(*)
FROM Student)
AS'学生总人数',
(SELECT COUNT(*)
FROM Student
WHERE SnoIN(
SELECT DISTINCTSno
WHERE SC
))
AS'选修总人数'
3.
SELECT Sno,Sname,Cno,Cname,Grade
FROM Students
JOIN SC
ON s.Sno=SC.Sno
JOIN Coursec
ON c.Cno=SC.Cno
4.
SELECT AVG(Grade)
FROM SC
WHERE Cno='001'
C. sql server 题目
3、查询出课程号为‘002’,分数最高的学生学号
三、查询设计
1、SELECT学号,姓名FROM学生
WHERE班级='软件041'
2、SELECT*FROM课程
WHERE课程名称LIKE'%语言%'
3、SELECTD.学号,D.姓名,D.班级
FROM(
SELECTTOP5学号
FROM选课A
LEFTJOIN课程B
ONA.课程号=B.课程号
WHEREB.课程名称='C语言'
ORDERBYA.成绩DESC
)C
LEFTJOIN学生D
ONC.学号=D.学号
4、SELECT班级,COUNT(班级)
FROM学生
GROUPBY班级
5、DECLARE@zhangsanchengjiFLOAT
SELECT@zhangsanchengji=A.成绩
FROM选课A
LEFTJOIN课程B
ONA.课程号=B.课程号
LEFTJOIN学生C
ONA.学号=C.学号
WHEREB.课程名称='计算机应用基础'
ANDA.姓名='张三'
SELECTD.学号,D.姓名
FROM(
SELECTA.学号,A.成绩
FROM选课A
LEFTJOIN课程B
ONA.课程号=B.课程号
WHEREB.课程名称='计算机应用基础'
)C
LEFTJOIN学生D
ONC.学号=D.学号
WHERE成绩>@zhangsanchengji
五、操作题,这里自己查相关的操作吧,不好描述,sqlserver软件操作起来还是挺方便的。
3、A
break:是跳出本次循环,也就是当@n = 1,循环终止并跳出begin-end执行外部的代码,此时@n = 1。
continue:重新开始循环,但是continue后的代码不执行的,这里直到@n = 0时。
return:过程中无条件退出,后续的所有代码都不执行,所以不会有输出。
D. SQLserver实例启用问题;
你好,
安装两个实例的是不是都选择的是默认实例?如果是的,你需要选择自定义实例名,并且有可能两个实例都是使用的一个IP端口(1433),如果存在多个实例,尽量在独立实例上使用固定端口。下面是微软官方文档:
https://msdn.microsoft.com/zh-cn/library/ms143694.aspx
E. 所有的sql聚合函数的应用例题 谢谢
WHERE type = 'business'
下面是结果集:
-------------------------- -----------
6,281.25 30788
(1 row(s) affected)
------------------------------------------------
MAX 求最大值
例题:简单的就不写了
-------------------------------------------------
BINARY_CHECKSUM
在表中任一行上计算的 BINARY_CHECKSUM(*) 返回相同的值,只要随后没有修改行。
BINARY_CHECKSUM(*) 将为大多数(但不是全部)行更改返回不同的值,并可用于检测大多数行修
改。
例题:本例使用 BINARY_CHECKSUM 来检测 Northwind 数据库的 Procts 表中一行的改变。
/*Get the checksum value before the values in the specific rows (#13-15) are changed.*/
USE Northwind
GO
CREATE TABLE TableBC (ProctID int, bchecksum int)
INSERT INTO TableBC
SELECT ProctID, BINARY_CHECKSUM(*)
FROM Procts
/*TableBC contains a column of 77 checksum values corresponding to each row in the Procts table.*/
--A large company bought procts 13-15.
--The new company modified the procts names and unit prices.
--Change the values of ProctsName and UnitPrice for rows 13, 14, and 15 of the Procts table.*/
UPDATE Procts
SET ProctName='Oishi Konbu', UnitPrice=5
WHERE ProctName='Konbu'
UPDATE Procts
SET ProctName='Oishi Tofu', UnitPrice=20
WHERE ProctName='Tofu'
UPDATE Procts
SET ProctName='Oishi Genen Shouyu', UnitPrice=12
WHERE ProctName='Genen Shouyu'
--Determine the rows that have changed.
SELECT ProctID
FROM TableBC
WHERE EXISTS (
SELECT ProctID
FROM Procts
WHERE Procts.ProctID = TableBC.ProctID
AND BINARY_CHECKSUM(*) <> TableBC.bchecksum)
下面是结果集:
ProctID
13
14
15
----------------------------------------------
F. 有谁会这个题,SQLserver的题
五(1)、查询所有图书类别为“中国历史”的所有图书记录
五(2)、查询所有图书名称中包含“SQLServer”的图书
五(3)、查询各类别图书的数量(按图书类别分组)
六(2)、
altertableTeacherADDtelchar(15)
GO
sp_addextendedpropertyN'MS_Description',N'联系电话','USER',N'dbo','TABLE',N'Teacher','COLUMN',N'tel'
六(3)、
(8,2)
GO
sp_addextendedpropertyN'MS_Description',N'工资','USER',N'dbo','TABLE',N'Teacher','COLUMN',N'salary'
六(4)、
altertableTeacher
addconstraintck_titlecheck(titleIN('教授','副教授','讲师','助教'))
六(5)、
INSERTINTOTeacher
VALUES('10001','李芳','女','1975-3-14','副教授','计算机系','83118147',4582.5)
六(6)、
UPDATEdbo.TeacherSETtel='18653155668'WHEREtname='李芳'
六(7)、
SELECTtname'姓名',YEAR(GETDATE())-YEAR(birthday)AS'年龄',salary'工资',title'职称'
FROMdbo.Teacher
WHEREdepart='计算机系'
六(8)、
CREATEVIEWV_TeacherAS
SELECTtop100percenttid,tname,depart,telFROMdbo.Teacher
ORDERBYdepart
六(9)、
SELECTtitle,COUNT(*)numFROMdbo.Teacher
GROUPBYtitle
六(10)、
SELECTtitle'系部',MAX(salary)'最高工资',MIN(salary)'最低工资',AVG(salary)'平均工资'
FROMdbo.Teacher
GROUPBYtitle
G. sqlserver查询问题.给出表根据题目写出查询
1. select 学生.学号 as 至少选修2门课程学生学号 from 学生 group by 学生.学号 where 学生.学号=(select 学号 form 成绩 where 学生.学号=成绩.学号)
2.select 课程.课程号 as 王文芳同学不学的课程的课程号 from 课程 where 课程.课程号 not in
(
select 成绩.课程号 from 成绩
where 成绩.学号 in(select 学生.学号 from 学生 where 姓名='王文芳')
)
H. SQL语句实例题目
额 我只晓得SQLServer的T-SQL
中文版SQL Server 2000开发与管理应用实例
都是大量项目中能用到的实例
CSDN SQL大版主的书籍,可说非常不错了
希望对你有帮助
如果还要再深入理解点原理东西
可以看下 微软技术丛书sql2005 T-SQL查询与T-SQL程序设计
I. SQLSERVER取数问题
SELECT
CASE IsNull(A, '~')
WHEN '~' THEN '0'
ELSE A
END AS A
FROM ...
J. sql数据库计算题
在sqlserver 里面,可以直接用 select 123+48+428 求和。
在oracle 里面,要加上 from al ,就是写成 select 123+48+428 from al;