【求助】期末考试压轴题,一个班的幸福就全教给您了!!!

u013370430 2014-01-03 05:47:21
五、设计题(共50分)
现有关系数据库如下:
数据库名:医院数据库
医生表(编号,姓名,性别,出生日期,职称)
病人表(编号,姓名,性别,民族,身份证号)
病历表(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分)
...全文
547 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Neo_whl 2014-01-10
  • 打赏
  • 举报
回复
--第八题
没看懂
补充六楼 -- 创建一个默认,并将其绑定到医生表的成绩职称列上,默认值为“医师”。(4分) create default doc as '医师' sp_bindefault 'doc','医生表.成绩职称'
山寨DBA 2014-01-08
  • 打赏
  • 举报
回复
引用 楼主 u013370430 的回复:
五、设计题(共50分) 现有关系数据库如下: 数据库名:医院数据库 医生表(编号,姓名,性别,出生日期,职称) 病人表(编号,姓名,性别,民族,身份证号) 病历表(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分)
不结贴了?
山寨DBA 2014-01-07
  • 打赏
  • 举报
回复
引用 15 楼 mkinglife 的回复:
问这样的问题,以后肯定不会吃这碗饭,大家不用多操心的~
呵呵呵呵
mkinglife 2014-01-06
  • 打赏
  • 举报
回复
问这样的问题,以后肯定不会吃这碗饭,大家不用多操心的~
kevin87923 2014-01-06
  • 打赏
  • 举报
回复
书是做什么用的。。唉。。 。。
guguda2008 2014-01-06
  • 打赏
  • 举报
回复
引用 9 楼 u013370430 的回复:
第一题病人表那里民族不能用date 大神,要细心噢
DATE改成DATETIME就行了
山寨DBA 2014-01-06
  • 打赏
  • 举报
回复
引用 9 楼 u013370430 的回复:
第一题病人表那里民族不能用date 大神,要细心噢
有错???你的SQL 版本是多少? 我的是2008 R2 ,上面的代码写完之后,我都执行过的,没报错滴呀。。。如果你的SQL 版本低于2008 ,那就不能用date ,date类型是2008以后加入的,如果是2008以前的版本那就直接用varchar(10)好了。。。
orochiheart 2014-01-04
  • 打赏
  • 举报
回复
2.将下列医生信息添加到医生表的代码 编号 姓名 性别 出生日期 职称 100001 杜医生 男 1963-5-18 副主任医师 100002 郭医生 女 1950-7-26 副主任医师 100003 刘医生 男 1973-9-18 医师

insert into 医生表(编号,姓名,性别,出生日期,职称) values ('100001','杜医生','男','1963-5-18','副主任医师')
insert into 医生表(编号,姓名,性别,出生日期,职称) values ('100002','郭医生','女','1950-7-26','副主任医师')
insert into 医生表(编号,姓名,性别,出生日期,职称) values ('100003','刘医生','男','1973-9-18','医师')
修改 编号为100002的医生职称为‘主任医师’

update 医生表 set 职称 = '主任医师' where 编号='100002'
删除 编号为100003的医生信息

delete from 医生表  where 编号='100003'
orochiheart 2014-01-04
  • 打赏
  • 举报
回复
6. 写出查询1970年以前出生的医生(4分)。 select * 医生表 where 出生日期< '1970-01-01'
u013370430 2014-01-03
  • 打赏
  • 举报
回复
第一题病人表那里民族不能用date 大神,要细心噢
u013370430 2014-01-03
  • 打赏
  • 举报
回复
谢谢大神的热心讲解
AcHerat 元老 2014-01-03
  • 打赏
  • 举报
回复
第八题貌似是要加一个字段,给这个字段默认值为 “医师”
山寨DBA 2014-01-03
  • 打赏
  • 举报
回复
都给你了,你看看试试,应该可以的,我都已经执行过了的。祝你不挂科。。。哈哈

--第一题
---建库
create database [医院数据库] on primary
(NAME = N'MH_Test', FILENAME = N'D:\Program Files\医院数据库.mdf')
LOG ON 
(NAME = N'MH_Test_log', FILENAME = N'D:\Program Files\医院数据库.ldf')

---建表
create table [医生表]
(
	[编号] varchar(100) not null,
	[姓名] varchar(100) not null,
	[性别] varchar(5) not null,
	[出生日期] date not null,
	[职称] varchar(100) not null,
	constraint [PK_医生表_编号] primary key clustered
	(
		[编号] ASC
	)
) on [primary]

create table [病人表]
(
	[编号] varchar(100) not null,
	[姓名] varchar(100) not null,
	[性别] varchar(5) not null,
	[民族] date not null,
	[身份证号] varchar(100) not null,
	CONSTRAINT [PK_病人表_编号] PRIMARY KEY CLUSTERED 
	(
		[编号] asc
	)
) on [primary]


create table [病历表]
(
	ID int identity(1,1) not null,
	[病人编号] varchar(100) not null,
	[医生编号] varchar(100) not null,
	[病历描述] varchar(1000) not null
) 

--建外键
alter table [病历表] add constraint [FK_病人编号] foreign key ([病人编号]) references [病人表]([编号])
alter table [病历表] add constraint [FK_医生编号] foreign key ([医生编号]) references [医生表]([编号])

--第二题
insert into [医生表] ---插入医生信息
select '100001','杜医生','男','1963-5-18','副主任医师' union all
select '100002','郭医生','女','1950-7-26','副主任医师' union all
select '100003','刘医生','男','1973-9-18','医师'

update [医生表] set [职称]='主任医师' where [编号]='100002'	--修改  编号为100002的医生职称为‘主任医师’
delete [医生表] where [编号]='100003'						--删除  编号为100003的医生信息

--第三题
create view [医疗表]
as
	select 
		[医生表].[编号] as [医生编号], 
		[医生表].[性别] as [医生姓名],
		[病人表].[姓名] as [病人姓名],
		[病历表].[病历描述] as [病历]
	from 
		[医生表] inner join [病历表] on [医生表].[编号]=[病历表].[医生编号]
		inner join [病人表] on [病人表].[编号]=[病历表].[病人编号]
		
--第四题
select 
	[病人表].[编号]  as [病人编号],
	[病人表].[姓名] as [病人姓名],
	[病历表].[病历描述] as [病历],
	[医生表].[编号] as [医生编号]
from 
	[病人表] inner join [病历表] on [病人表].[编号]=[病历表].[病人编号]
	inner join [医生表] on [医生表].[编号]=[病历表].医生编号
	
--第五题
create proc sp_proc_get_detail
	@name varchar(100),
	@cnt int
as
set nocount on
begin
	select 
		@cnt=COUNT(distinct [病历表].[病人编号]) 
	from [医生表] inner join [病历表] on [医生表].编号=[病历表].医生编号
	where [医生表].姓名=@name
	
	select @cnt
	return
end
	
	
--第六题
select * from [医生表] where [出生日期]<'1970-01-01'

--第七题--感觉这一题逻辑不严谨(有病历就算有病人?还是必须要对应到病人表)
select [医生表].* from [医生表] inner join [病历表] on [医生表].编号=[病历表].医生编号

--第八题
没看懂
山寨DBA 2014-01-03
  • 打赏
  • 举报
回复
第一题做完,剩下的等等:


---建库
create database [医院数据库] on primary
(NAME = N'MH_Test', FILENAME = N'D:\Program Files\医院数据库.mdf')
LOG ON 
(NAME = N'MH_Test_log', FILENAME = N'D:\Program Files\医院数据库.ldf')

---建表
create table [医生表]
(
	[编号] varchar(100) not null,
	[姓名] varchar(100) not null,
	[性别] varchar(5) not null,
	[出生日期] date not null,
	[职称] varchar(100) not null,
	constraint [PK_医生表_编号] primary key clustered
	(
		[编号] ASC
	)
) on [primary]

create table [病人表]
(
	[编号] varchar(100) not null,
	[姓名] varchar(100) not null,
	[性别] varchar(5) not null,
	[民族] date not null,
	[身份证号] varchar(100) not null,
	CONSTRAINT [PK_病人表_编号] PRIMARY KEY CLUSTERED 
	(
		[编号] asc
	)
) on [primary]


create table [病历表]
(
	ID int identity(1,1) not null,
	[病人编号] varchar(100) not null,
	[医生编号] varchar(100) not null,
	[病历描述] varchar(1000) not null
) 

--建外键
alter table [病历表] add constraint [FK_病人编号] foreign key ([病人编号]) references [病人表]([编号])
alter table [病历表] add constraint [FK_医生编号] foreign key ([医生编号]) references [医生表]([编号])
LongRui888 2014-01-03
  • 打赏
  • 举报
回复
这些书上应该都有的
建军黄 2014-01-03
  • 打赏
  • 举报
回复
安装个 sql server 2000或其它版本 然后再创建表,然后右键——选择生成 sql 代码, 全出来了 修改 编号为100002的医生职称为‘主任医师’ update 医生资料表 set 职称 = '主任医师' where 编号 = '100002' 这些都是最基本的知识,相信你玩两 天的 sql server 就会搞定的
华夏小卒 2014-01-03
  • 打赏
  • 举报
回复
这个到书上找找也能找到啊。 这些都不会,工作怎么找啊。

34,835

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧