`
geelong
  • 浏览: 115221 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

北大数据库题目 及答案1

阅读更多

总结:
1、关联的先建父表,再建子表

现要为学校建立一个数据库,设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。.现要建立关于系、学生、班级的数据库,关系模式为:

         学生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,  经济;)

create table student
(
  sut_id int not null primary key,
  name varchar(12) not null,
  age int(2),
  classid_id int(3),
  foreigen key (classid_id) references class(class_id)
  ondelete no action,
  check(age>15 and age<40)
)
type=innodb
;

//失败,integer=int(11)
foreign拼写  on delete

create table student
(
  sut_id integer not null primary key,
  name varchar(12) not null,
  age int(2),
  classid_id int(3),
  foreign key (classid_id) references class(class_id)
  on delete no action,
  check(age>15 and age<40)
)
type=innodb
;

//失败
在mysql 中建立引用约束的时候会出现MySQL ERROR 1005: Can't create table (errno: 150)的错误信息结果是不能建立 引用约束。

出现问题的大致情况

1、外键的引用类型不一样,主键是int外键是char

2、找不到主表中 引用的列

3、主键和外键的字符编码不一致,



解决:先父表,后子表。
系表
create table department
(
  dept_id int(3) not null primary key,
  dept_name varchar(12)
)
type=innodb;

班级表

create table class
(
  class_id int(3) not null primary key,
  spe_name varchar(12) ,
  dept_id int(3),
  stu_date int(4),
  index(dept_id),
  foreign key (dept_id) references department(dept_id)
  on delete cascade
  on update cascade
)
type=innodb;

学生表
create table student
(
  sut_id integer not null primary key,
  name varchar(12) not null,
  age int(2),
  class_id int(3),
  index(class_id),
  foreign key (class_id) references class(class_id)
  on delete no action,
  check(age>15 and age<40)
)
;

插入数据先系 班 学生
insert into department (dept_id,dept_name) values(001,数学);
//失败,

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

int类型的会忽略前面的0,所以插入001后仍然是1。


insert into class (class_id,spe_name,dept_id,stu_date) values(101,'软件',002,1995);
insert into class (class_id,spe_name,dept_id,stu_date) values(111,'无机化学',003,1995);
insert into class (class_id,spe_name,dept_id,stu_date) values(121,'数理统计',001,1995);
insert into class (class_id,spe_name,dept_id,stu_date) values(141,'国际贸易',005,1997);
insert into class (class_id,spe_name,dept_id,stu_date) values(102,'微电子',002,1996);
insert into class (class_id,spe_name,dept_id,stu_date) values(112,'高分子化学',003,1996);
insert into class (class_id,spe_name,dept_id,stu_date) values(131,'现代语言',004,1996);
insert into class (class_id,spe_name,dept_id,stu_date) values(142,'国际金融',005,1996);


alter table tablename change oldclounmdname newname integer;
alter table student change sut_id stu_id integer;
//修改列名

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

delete from class where class_id=101;
//no action 起作用 删除失败
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constrai
nt fails (`test/student`, CONSTRAINT `student_ibfk_1` FOREIGN KEY (`class_id`) R
EFERENCES `class` (`class_id`) ON DELETE NO ACTION)


探讨not null 和primary key

create table test
(
id int primary key
);
//成功 primary key 已经包含not null的意思


not null 和null
not null并不是该列为空就不能插入
为空时,数据库中什么都不显示

null 的,则该列没有插入数据时显示为null

每个专业一年只招一个班
专业名,年份的唯一


unique 实验
create table testa
(
id int,
name varchar(12),
unique(id,name)
);

insert into testa(id,name) values(1,'a');
insert into testa(id,name) values(1,'a');
//第二次插入时失败,增加了唯一性的约束
ERROR 1062 (23000): Duplicate entry '1-a' for key 1

Primary Key与Unique Key

Primary key 与Unique Key都是唯一性约束。但二者有很大的区别:

1、Primary key的1个或多个列必须为NOT NULL,如果列为NULL,在增加PRIMARY KEY时,列自动更改为NOT NULL。而UNIQUE KEY 对列没有此要求。

2、一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY。



    3 完成以下查询功能

  (1)找出所有姓李的学生,并按其年龄由小到大排序。
  select * from student where name like '%李%' order by age ;
  (2)列出所有开设超过两个专业的系的名字。
select   系名  
from   class   ,department
group   by   系名
where   class.系号=department.系号   and
having   count( '专业号 ')> 2

select dept_name from class,department group by dept_name where class.dept_id=department.dept_id and having count(class.dept_id)>2;//失败

select dept_name from class,department where class.dept_id=department.dept_id;  //成功

select dept_name from class,department where class.dept_id=department.dept_id group by dept_name; //成功

select count(dept_id) from class;    //成功
select dept_id from class where count(dept_id)=2;  //失败

select dept_id from class group by dept_id  having(count(*)>=2);  //查出开设超过两个专业的系的系号

select dept_name from class,department group by dept_id where class.dept_id=department.dept_id and having(count(*)>=2); //错误

select dept_name from department where dept_id in(select dept_id from class group by dept_id  having(count(*)>=2)); //成功


  (3)列出学生人数大于等于2的系的编号和名称。
 
 
  select class_id from student group by class_id having(count(*)>=2);  //查找大于2人的班级号
  select class_id from student group by class_id where(count(*)>=2);   //错误,不能使用where
   
  select * from department where dept_id in(select dept_id from class where class_id in(select class_id from student group by class_id having(count(*)>=2))); //成功
  通过一个班的人数超过2个来查找学生人数大于等于2的系的编号和名称
  但是有些系有几个专业,这种查找不准确
 

    4 学校又新增加了一个物理系,编号为006。
    insert into department (dept_id,dept_name) values(006,'物理');

    5 学生张三转到化学系111班,请更新相关的表。
update student set class_id=111 where name='张三';

分享到:
评论

相关推荐

    SQL数据库试题及答案

    命题教师:北京邮电大学世纪学院计算机科学与技术系段爱玲一、单项选择题(总分75) 1. (分值:1.0 分)在MS SQL Server 中,关于数据库的说法正确的是( ) A: 一个数据库可以不包含事务日志文件。 B: 一个数据库...

    北京大学数据库设计与实践_实习题目_2013_参考答案(全)

    北京大学数据库设计与实践_实习题目_2013(秋季)参考答案(全)

    北京大学_数据库设计与实践_实习题目_2013

    北京大学数据库设计与实践实习题目2013秋季,本文档包括所有题目。答案在我上传的另一个文档。

    北大“数据库原理”上机实践题目总结.txt

    北大“数据库原理”上机实践题目总结.txt txt版

    [详细完整版]4数据库.docx

    4数据库 编号 页数 例题 题目 语句 1 77 例4-9 检索供应零件给编号J1的工程的供应商编号SNO SETLEC DISTINCT SNO FROM SPJ WHERE JNO='J1' 2 77 例4-9 检索供应零件给工程J1,且零件编号为P1的供应商编号SNO SELECT ...

    1中文全文数据库.docx

    1中文全文数据库全文共2页,当前为第1页。1中文全文数据库全文共2页,当前为第1页。1、维普数据库不含以下哪种检索途径?() * C.专业检索 1中文全文数据库全文共2页,当前为第1页。 1中文全文数据库全文共2页,...

    北工大高级数据库期末原题.zip

    该题是高级数据库的四年真题,涵盖老师上课的教学点,可以帮助大家系统地复习高级数据库这门课程。

    基于MYSQL的图书管理系统数据库设计.doc

    基于MYSQL的图书管理系统数据库设计.doc

    数据库课程设计(5).doc

    "姓名 "小组评分 "教师评分 " "**** "**** "**** " " " " " " " " " " " " " " " " " 北京信息科技大学 信息管理学院 (数据库系统及应用实践)实验报告 "设计目的: " "数据库系统及应用是一门实践性很强的课程,...

    武汉各大软件公司笔试面试题(有答案)

    武汉-英思--ORACLE面试测试题目.doc 武汉-亿阳信通NET.doc 武汉-世纪畅想笔试.doc 武汉-瑞得软件笔试题.doc 武汉-北大高科页面.doc 只显示部分,希望对正在或正准备找工作的朋友带来帮助,也祝愿大家早日找到心中...

    数据库设计作业智能停车场管理系统数据库设计完整版.docx

    北京邮电大学 数据库应用技术 期末作业 题目:智能停车场管理系统 学院:电子工程学院 学号: 姓名: 电话: 数据库设计作业智能停车场管理系统数据库设计完整版全文共14页,当前为第2页。2014年12月28日 数据库...

    数据库设计作业智能停车场管理系统数据库设计.docx

    北京邮电大学 数据库应用技术 期末作业 题目:智能停车场管理系统 学院:电子工程学院 学号: 姓名: 电话: 数据库设计作业智能停车场管理系统数据库设计全文共16页,当前为第1页。2014年12月28日 数据库设计作业...

    中国石油大学(北京) 远程教育学院 《数据结构》课程设计报告

    题目要求:建立通信网络 在n个城市建设通信网络,只需架设n-1条线路即可。设计算法,求出如果以最低的经济代价建设这个通信网络。要求如下: (1)至少包含10个城市; (2)城市数n由键盘录入; (3)城市坐标由随机...

    网上书店管理信息系统-数据库课程设计.doc

    山东理工大学计算机学院 课 程 设 计 (数据库系统原理) 网上书店管理信息系统 "班 级 " " "姓 名 " " "学 号 " " "指导教师 " " 二 一一年一月十三日 课程设计任务书及成绩评定 "课题名称 "网上书店管理信息系统 ...

    数据库学生信息管理系统需求分析报告.pdf

    数据库系统概论 课程设计 设计名称:学生信息管理系统数据库设计 湖南工业大学 课程设计任务书 2011 —2011 学年第 1 学期 计算机与通信 学院 (系、 部) 软件工程 专业 091 班 课程名称: 数据库原理 设计题目: ...

    中国移动最新最全笔试复习资料大全.zip

    移动笔试真题之综合类--中国移动2011年大学生转正考试试题及答案 二、2020年移动招聘笔试精华讲义 2020年移动招聘笔试精华讲义 中国移动知识-简介&行史&发展动态&获奖情况 三、中国移动完整版知识点笔记资料(30+份...

    houLangWeiBo:JavaWeb springMVC+Thymeleaf+H2数据库实现简易微博

    houLangWeiBoJavaWeb springMVC+springSecurity+Thymeleaf+H2数据库实现简易微博北京邮电大学 网络工程 web开发技术基础大作业题目:简易版微博客系统的设计与实现设定:设计实现一个简易的类“微博”的单体式Web...

    android和java面试大全集

    北京大学计算机科学技术研究所.doc 联合网视面试题.doc 缺陷的等级划分,一个经常被问到的问题.doc 软件测试工程师笔试试题(大集合).doc 千像互动的笔试.doc 2012java面试题分析大全.doc JAVA面试题集合...

    Database-Project:北京化工大学15级数据库课程设计--员工加班管理系统

    Database-ProjectAuthor: Yuchao GuE-mail:Date: 2017-12-27Description: 北京化工大学15级数据库课程设计,我抽到的题目为员工加班管理,采用jsp前端页面展示,sevelet后台服务,实现的是B/S架构功能概览整体一览...

Global site tag (gtag.js) - Google Analytics