select distinct sno from sg
where grade < 60 3.
update student set sage=22
where sno='05001' 4.
select avg(grade) from sg where cno='1' 5.
create procedure getdetailbyname @name nvarchar(10) as
if (select count(*) from student where sname = @name) > 0 select * from student where sname = @name else
print '不存在姓名为 ' + @name + ' 的学生资料' 6.
select sname,ssex,sage from sdudent
where sdept=’计算机系’and sname like '赵 %' and ssex ='女' 7.
create view [学生成绩表视图] as
select sno, sname, cno, cname, grade from sg, sdudent where sc.sno=sdudent.sno 8.
insert into student
values ('05020', '丁莉', '女', 17, '计算机系')
综合试题五:
现有关系数据库如下:
数据库名:医院数据库
医生表(编号,姓名,性别,出生日期,职称) 病人表(编号,姓名,性别,民族,身份证号) 病历表(ID,病人编号,医生编号,病历描述) 用SQL语言实现下列功能的sql语句代码: 1. 创建上述三表的建库、建表代码;
要求使用:主键(师医生表.编号,病人表.课号)、外键(病历表.医生编号,病历表.病人课号)、非空(职称,姓名)、检查(性别),自动编号(ID) (16分) 2. 将下列医生信息添加到医生表的代码
编号 姓名 性别 出生日期 职称
100001 杜医生 男 1963-5-18 副主任医师 100002 郭医生 女 1950-7-26 副主任医师 100003 刘医生 男 1973-9-18 医师
修改 编号为100002的医生职称为‘主任医师’ 删除 编号为100003的医生信息 (8分)
3. 写出创建:医疗表视图(医生编号,姓名,病人姓名,病历)的代码;(4分) 4. 写出所有病人编号、姓名、病历、以及病人所对应的医生编号的查询语句;(4分) 5. 写出创建: 输出某医生(根据医生编号即可)看病人数存储过程以及执行过程(要
求输入医生姓名的参数,输出病人数)(6分)。 6. 写出查询1970年以前出生的医生(4分)。 7. 检索有病人的医生信息。(4分)
8. 创建一个默认,并将其绑定到医生表的成绩职称列上,默认值为“医师”。(4分) 参考答案: 1.
create database [医院数据库] use [医院数据库] go
create table 医生表
([编号] char(6) primary key, [姓名] nchar(4) not null,
[性别] nchar(1) check([性别] in ('男', '女')), [出生日期]datetime , [职称] char(18) not null )
create table病人表
([课号] char(6) primary key, [姓名] nchar(4) not null,
[性别] nchar(1) check([性别] in ('男', '女')), [民族] nchar(10),
[身份证号] char(18) not null )
create table病历表 (ID IDENTITY(1, 1),
[病人编号] char(6) references 病人表(学号), [医生编号] char(6) references 医生表(编号), [病历描述] varchar(1000) )
2.
insert 医生表 values('100001', '杜医生', '男', '1963-5-18', '副主任医师') insert 医生表 values('100002', '郭医生', '女', '1950-7-26', '副主任医师')
insert 医生表 values('100003', '刘医生', '男', '1973-9-18', '医师') update医生表 set 职称='主任医师' where 编号='100002' delete医生表 where 编号='100003'
3.
create view [医疗表视图] as
select br.姓名,ys.姓名,yl.病历 from 病人表 as br join 医疗表 as yl on br.编号yl.病人编号 join 医生表 as ys on yl.医生编号=ys.编号 4.
Select br.编号, br.姓名, br.病历, yl.医生编号 from 病人表 br left join 医疗表 yl on br.编号 = yl.病人编号 5.
create procedure [某医生看病人数] @医生编号 nchar(16), @人数 int output as
select @人数=count(病人编号) from 病人表
where 医生编号 = @医生编号 go
declare @TOTAL int
execute [某医生看病人数] '100001', @TOTAL 6
select * from 医生表 where 出生日期<'1970-01-01' 7.
select 编号, 姓名, 性别, 出生日期, 职称 from 医生表 where 编号 in (select 医生编号 from 医疗表) 8.
create default zhicheng AS '医师' go
exec sp_bindefault 'zhicheng', '医生表.职称'