五(1)、查询所有图书类别为“中国历史”的所有图书记录
创新互联欢迎来电:028-86922220,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联网页制作领域10多年,包括成都阳台护栏等多个领域拥有多年的网站维护经验,选择创新互联,为网站锦上添花!
五(2)、查询所有图书名称中包含“SQL Server”的图书
五(3)、查询各类别图书的数量(按图书类别分组)
六(2)、
alter table Teacher ADD tel char(15)
GO
sp_addextendedproperty N'MS_Description', N'联系电话', 'USER', N'dbo', 'TABLE', N'Teacher', 'COLUMN', N'tel'
六(3)、
alter table Teacher ADD salary decimal(8, 2)
GO
sp_addextendedproperty N'MS_Description', N'工资', 'USER', N'dbo', 'TABLE', N'Teacher', 'COLUMN', N'salary'
六(4)、
alter table Teacher
add constraint ck_title check (title IN('教授','副教授','讲师','助教'))
六(5)、
INSERT INTO Teacher
VALUES('10001','李芳','女','1975-3-14','副教授','计算机系','83118147',4582.5)
六(6)、
UPDATE dbo.Teacher SET tel='18653155668' WHERE tname='李芳'
六(7)、
SELECT tname '姓名',YEAR(GETDATE())-YEAR(birthday) AS '年龄', salary '工资',title '职称'
FROM dbo.Teacher
WHERE depart='计算机系'
六(8)、
CREATE VIEW V_Teacher AS
SELECT top 100 percent tid,tname,depart,tel FROM dbo.Teacher
ORDER BY depart
六(9)、
SELECT title,COUNT(*)num FROM dbo.Teacher
GROUP BY title
六(10)、
SELECT title '系部',MAX(salary) '最高工资',MIN(salary) '最低工资',AVG(salary) '平均工资'
FROM dbo.Teacher
GROUP BY title
答案:
A (在数据库中每个实体的名字都是唯一的,而每个实体里的属性可以相同)
A (DATEDD(yy,-3,getdate()获取当前日期减去3年)
第3个参数getdate()获取当前日期,比如2008-1-1,这个DATEDD函数的返回结果是
因为它是以yy(年)的形式相加所以
流程是2008+(-3)结果为2005-1-1.
3、查询出课程号为‘002’,分数最高的学生学号
三、查询设计
1、SELECT 学号,姓名 FROM 学生
WHERE 班级 = '软件041'
2、SELECT * FROM 课程
WHERE 课程名称 LIKE '%语言%'
3、SELECT D.学号,D.姓名,D.班级
FROM (
SELECT TOP 5 学号
FROM 选课 A
LEFT JOIN 课程 B
ON A.课程号 = B.课程号
WHERE B.课程名称 = 'C语言'
ORDER BY A.成绩 DESC
) C
LEFT JOIN 学生 D
ON C.学号 = D.学号
4、SELECT 班级,COUNT(班级)
FROM 学生
GROUP BY 班级
5、DECLARE @zhangsanchengji FLOAT
SELECT @zhangsanchengji = A.成绩
FROM 选课 A
LEFT JOIN 课程 B
ON A.课程号 = B.课程号
LEFT JOIN 学生 C
ON A.学号 = C.学号
WHERE B.课程名称 = '计算机应用基础'
AND A.姓名 = '张三'
SELECT D.学号,D.姓名
FROM (
SELECT A.学号,A.成绩
FROM 选课 A
LEFT JOIN 课程 B
ON A.课程号 = B.课程号
WHERE B.课程名称 = '计算机应用基础'
) C
LEFT JOIN 学生 D
ON C.学号 = D.学号
WHERE 成绩 @zhangsanchengji
五、操作题,这里自己查相关的操作吧,不好描述,sqlserver软件操作起来还是挺方便的。
3、A
break:是跳出本次循环,也就是当@n = 1,循环终止并跳出begin-end执行外部的代码,此时@n = 1。
continue:重新开始循环,但是continue后的代码不执行的,这里直到@n = 0时。
return:过程中无条件退出,后续的所有代码都不执行,所以不会有输出。
top 3,desc
declare
--,;
exec sp_rename
identity(1,1),not null
select , set
update,6
ORC
数据库文件的初始大小
DECLARE CURSOR
原子性,隔离性
显示事务,自动提交事务
go
实体型,联系
实体完整性,参照完整性
----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 @cou0
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
注意点:考察两表连接、分组、max函数
细节:分组按照学生编号,因为名字可能会重复。表中有的状态条件应该在条件中加上,
个人认为Bu_Stature=1为有效学生,del为0为有效成绩,科目没有标明类型,用中文直接赛选条件。
SELECT u.`Bu_Name` AS 姓名,MAX(f.`FS`) AS 最高语文分数 FROM HR_BI_UserInfo u
LEFT JOIN HR_BI_UserInfo_FS f
ON u.`User_Id`=f.`User_Id`
WHERE f.`KM`='语文' AND u.`Bu_Stature`=1 AND f.`del`=0
GROUP BY u.`Bu_Code`