看看这道题!

xkgg 2004-02-25 09:08:50
现要为学校建立一个数据库,设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。.现要建立关于系、学生、班级的数据库,关系模式为:
学生STUDENT (学号,姓名,年龄,班号)
班CLASS (班号,专业名,系名,入学年份)
系 DEPARTMENT (系号,系名)
试用SQL语言完成以下功能:
1 建表,在定义中要求声明:
(1)每个表的主外码。
(2)每个班级的人数不能超过30人。
(3)学生的年龄介于15到40岁之间。
(4)学生姓名不能为空。
(5)只有班里没有学生的时候,才能删除该班级。
2 插入如下数据
CLASS(
101,软件,计算机,1995; 102,微电子,计算机,1996;
111,无机化学,化学,1995; 112,高分子化学,化学,1996;
121,统计数学,数学,1995; 131,现代语言,中文,1996;
141,国际贸易,经济,1997; 142,国际金融,经济,1996;

STUDENT (
8101,张三,18,101; 8102,钱四,16,121;
8103,王玲,17,131; 8105,李飞,19,102;
8109,赵四,18,141; 8110,李可,20,142
8201,张飞,18,111; 8302,周瑜,16,112;
8203,王亮,17,111; 8305,董庆,19,102;
8409,赵龙,18,101; 8510,李丽,20,142 )
DEPARTMENT( 001, 数学; 002, 计算机;
003, 化学; 004, 中文;
005, 经济;)
3 完成以下查询功能
(1)找出所有姓李的学生,并按其年龄由小到大排序。
(2)列出所有开设超过两个专业的系的名字。
(3)列出学生人数大于等于2的系的编号和名称。
4 学校又新增加了一个物理系,编号为006。
5 学生张三转到化学系111班,请更新相关的表。

drop table department
drop table class
drop table student

create table department
(系号 int not null,
系名 char(10) not null,
primary key(系名))

create table class
(班号 int not null,
专业名 char(10) not null,
系名 char(10) not null,
入学年份 datetime,
primary key(班号),
foreign key(系名) references department(系名))

create table student
(学号 int not null,
姓名 char(10) not null,
年龄 int,
班号 int not null,
check(年龄 between 15 and 40),
primary key(学号),
foreign key(班号) references class(班号)

)

insert into department values(001,'数学')
insert into department values(002,'计算机')
insert into department values(003,'化学')
insert into department values(004,'中文')
insert into department values(005,'经济')

insert into class values(101,'软件','计算机','1995')
insert into class values(102,'微电子','计算机','1996')
insert into class values(111,'无机化学','化学','1995')
insert into class values( 112,'高分子化学','化学','1996')
insert into class values( 121,'统计数学','数学','1995')
insert into class values( 131,'统计数学','数学','1995')
insert into class values( 151,'现代语言','中文','1996')
insert into class values(141,'国际贸易','经济','1997')
insert into class values(142,'国际金融','经济','1996')

insert into student values(8101,'张三',18,101)
insert into student values(8102,'钱四',16,121)
insert into student values(8103,'王玲',17,131)
insert into student values(8105,'李飞',19,102)
insert into student values(8109,'赵四',18,141)
insert into student values(8110,'李可',20,142)
insert into student values(8201,'张飞',18,111)
insert into student values(8302,'周瑜',16,112)
insert into student values(8203,'王亮',17,111)
insert into student values(8305,'董庆',19,102)
insert into student values(8409,'赵龙',18,101)
insert into student values(8510,'李丽',20,142)

select 姓名,年龄
from student
where 姓名 like '李%'
order by 年龄

select 专业名
from class
group by 专业名
having count(专业名)>=2

select distinct d.系号, d.系名
from department d, class c, student s
where c.班号=s.班号 and c.系名=d.系名 and d.系名 in(select d.系名 from department d, class c, student s
where c.系名=d.系名 and s.班号=c.班号
group by d.系名
having count(d.系名)>=2)

insert into department values(006,'物理')
select * from department

update student
set 班号=111
where 姓名='张三'

select * from student


请问这个题目中要求限制人数的,可我不知道怎么去约束这个人数!再问“入学年份”这个日期型的变量,在插入数据时,如1995,是否加上单引号呢,我的试验好像加不加都可以的!还有就是这道题如果不加外码约束,其他的都正确,是否可以得到及格呢?

...全文
103 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

34,838

社区成员

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

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