谁能帮我做下这些数据库题目。谢谢。

来源:百度知道 编辑:UC知道 时间:2024/05/14 09:36:04
一、现要为学校建立一个数据库,设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。。现要建立关于系、学生、班级的数据库,关系模式为:
学生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)列出所有开

###某学校数据库练习
#三个表:学生表: edu_students 班级表: edu_class 系表: edu_department
##(1)找出所有姓李的学生,并按其年龄由小到大排序
SELECT * FROM edu_students WHERE student_name LIKE '李%' ORDER BY age;
##(2)列出所有开设超过两个专业的系的名字
SELECT x.department_name FROM(
SELECT c.department_name,count(c.department_name) num
FROM edu_class c GROUP BY c.department_name) x
WHERE x.num >= 2;
##(3)列出学生数人数大于等于2的系的编号和名称
SELECT x.department_id,x.department_name FROM(
SELECT d.department_id,d.department_name,count(d.department_name) num FROM edu_students s
LEFT JOIN edu_class c ON s.class_id = c.class_id
LEFT JOIN edu_department d ON d.department_name = c.department_name
GROUP BY d.department_name) x
WHERE x.num >= 2;
##4、学校又新增加一个物理系,编号006
INSERT INTO edu_department (department_id,department_name) values ('006','物理');
##5、学生张三转到化学系111班,请更新相关的表
UPDATE edu_students SET class_id = 111 WHERE student_name = '张三';