数据库实验(学生信息表)

实验一

创建数据库以及学生信息表、课程信息表、选课表

create Table student

(Sno char(9) primary key,

Sname char(20) unique,

Ssex char(2),

Sage smallint,

Sdept char(20)

)

create table course

(Cno char(4) primary key,

Cname char(40),

Cpno char(4),

Ccredit smallint,

foreign key (Cpno) references course(Cno),

)

create table sc

(Sno char(9),

Cno char(4),

Grade smallint,

primary key(Sno,Cno),

foreign key (Sno) references student(Sno),

foreign key (Cno) references course(Cno),

)

实验二

(1)分别向三个表中插入以下数据

Sno

Sname

Ssex

Sage

Sdept

95001

李勇

30

CS

95002

刘晨

19

IS

95003

王敏

18

MA

95004

张立

19

IS

Cno

Cname

Cpno

Ccredit

1

数据库

5

4

2

数学

2

3

信息系统

1

4

4

操作系统

6

3

5

数据结构

7

4

6

数据处理

2

7

C语言

6

4

Sno

Cno

Grade

95001

1

32

95001

2

85

95001

3

88

95002

2

90

95002

3

80

语句如下:

insert into student values('201215121','李勇','男',20,'CS')

insert into student values('201215122','刘晨','女',19,'CS')

insert into student values('201215123','王敏','女',18,'MA')

insert into student values('201215124','张立','男',19,'IS')

insert into course values('1','数据库','5',4)

insert into course values('2','数学',null,2)

insert into course values('3','信息系统','1',4)

insert into course values('4','操作系统','6',3)

insert into course values('5','数据结构','7',4)

insert into course values('6','数据处理',null,2)

insert into course values('7','pascal',6,4)

insert into sc values('201215121','1',92)

insert into sc values('201215121','2',85)

insert into sc values('201215121','3',88)

insert into sc values('201215122','2',90)

insert into sc values('201215122','3',80)

(2)执行完这些操作之后可以用select * 语句分别查询三张表总览图

select * from student

select * from sc

select * from course

3)修改数据

将表Student 中所有学生的年龄加2岁。 将表SC 中所有学生的成绩降低10%。

update student set Sage=Sage+2;

update sc set Grade=Grade*0.9 where Sno in (select Sno from sc)

4)删除数据

将表Student 中Sno 为95004的学生信息删除。

delete from student where Sno='95004'

实验三

查询数学系学生的学号和姓名;

select Sno,Sname from student where Sdept='MA';

查询选修了课程的学生学号;

select Sno from student where Sno in (select Sno from sc)

查询选修了1号课程的学生学号和成绩,并要求结果按成绩降序排列,如果成绩相同,则按学号升序排列;

select Sno,Grade from sc where Cno='1' order by Grade desc

查询选修了1号课程且成绩在80-90分之间的学生学号和成绩,并将成绩乘以系数0.8输出;

select Sno,Grade*0.8 from sc where Cno='1' and Grade>=80 and Grade<=90

查询数学系或计算机系姓张的学生的信息;

select * from student where Sname like '张%'and Sdept in ('CS','MA')

查询缺少了成绩的学生的学号和课程号;

select Sno,Cno from sc where Grade is null

查询每个学生的情况以及他(她)所选的课程;

select student.*,Cname from student,sc,course

where student.Sno=sc.Sno and sc.Cno=course.Cno

查询学生的学号、姓名、选修的课程名称及成绩;

select student.Sno,Sname,Cname,Grade from student,sc,course

where student.Sno=sc.Sno and sc.Cno=course.Cno

查询选修了“数据库”课程且成绩在90分以上的学生学号、姓名和成绩;

select student.Sno,Sname,Grade from student,sc,course

where student.Sno=sc.Sno

and sc.Cno=course.Cno and course.Cname='数据库' and Grade>=90

查询每门课程的间接先行课的课程名称。

select first.Cno,second.Cpno from course first,course second

where first.Cpno=second.Cno and second.Cpno is not null

2.对学生-课程数据库,应用嵌套查询实现以下查询要求:

1) 查询选修了“高等数学”的学生学号和姓名;

第一种

select student.Sno,Sname from student where Sno in

(select Sno from sc where Cno in

(select Cno from course where Cname='数学'))

第二种

select student.Sno,Sname from student,sc,course

where student.Sno=sc.Sno and sc.Cno=course.Cno

and course.Cname='数学'

2) 查询“高等数学”的成绩高于张三的学生学号和成绩;

select student.Sno,Grade from student,sc,course where

student.Sno=sc.Sno and sc.Cno=course.Cnoand course.Cname='数学'

and Grade>(select Grade from sc where Sno in

(select Sno from student where Sname ='张三')

and Cno in (select cno from course where Cname='数学'))

3) 查询其他系中年龄小于计算机系年龄最大者的学生;

select student.* from student where Sdept <> 'CS'

and Sage

4) 查询其他系中比计算机系学生年龄都小的学生;

select student.* from student where Sdept <> 'CS'

and Sage

5) 查询选修了“信息系统”课程的学生姓名;

select Sname from student where Sno in(select Sno from sc

where Cno in(select Cno from course where Cname='信息系统'))

6) 查询没有选修“信息系统”课程的学生姓名;

select Sname from student where Sno not in(select Sno from sc

where Cno in(select Cno from course where Cname='信息系统'))

7) 查询选修了全部课程的学生姓名;

select Sname from student where Sno IN

(select Sno from SC group by Sno

having count(*) = (select count(*) from course ))

//根据Sno分组,统计每个学生选修课程数。如果等于course的总数,就是我们要找的Sno

查询至少选修了学号为“95002”的学生所选修的全部课程的学生学号和姓名

select student.Sno,Sname from ( select Sno, COUNT(Cno) as num

from SC where Cno in ( select Cno from student join SC on

student.Sno = sc.Sno and sc.Sno ='95002')group by Sno ) t2

join(select COUNT(Cno) num from student join sc on

student.Sno = sc.Sno and student.Sno ='95002' ) t1 on

t2.num = t1.num join student on student.Sno = t2.Sno

实验四

1)建立男学生的视图(Male_Student),属性包括学号、姓名、选修课程名和成绩;

create view Male_student as

select student.Sno,Sname,sc.Cno,Grade from student,course,sc

where student.Sno=sc.Sno and course.Cno=sc.Cno and Ssex='男'

2)在男学生视图中查询平均成绩大于80分的学生学号与姓名;

select Sno,Sname from Male_student where Grade>80

3)对男学生视图的数据进行修改;

将“95001”学号的学生姓名改为“李咏”。

update Male_student set Sname='李咏' where Sno='95001'

update Male_student set Grade=95 where Sno='95001'

and Cno=(select Cno from course where Cname='数据库')

4) 将“95001”学生选修“数据库”的成绩改为“95”。

select AVG(Grade) as avg,COUNT(Cno) as coursenumber from sc

update Male_student set Sname='李咏' where Sno='95001'

update Male_student set Grade=95 where Sno='95001'

and Cno=(select Cno from course where Cname='数据库')

5)统计每个学生有成绩的课程门数、平均成绩。

select AVG(Grade) as avg,COUNT(Cno) as coursenumber from sc

where Grade is not null group by Cno

mysql实验学生表_数据库实验(学生信息表)相关推荐

  1. MySql实验嵌套查询_数据库实验:SQL嵌套查询

    自测题: 1.查询哪些课程没有人选修列出课程号和课程名: [code]select cno,cname from course where cno not in( select distinct cn ...

  2. mysql创建复杂表_数据库_MySQL_复杂的表结构创建

    本例示例下复杂的表结构创建, 大致分为两张表 user表 和 authority(权限表) 每个用户对应一种权限,默认为1(普通用户)  灵感来源:(仿照 进程的优先级, 优先级越高的进程,数字越小) ...

  3. td 字典表_数据库怎么设计字典表

    数据库怎么设计字典表,用来存储类型数据,需要可以编缉,大家都是怎么做的 CREATE TABLE `t_ci` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, ` ...

  4. mysql建图书馆表_数据库图书管理建表与修改表

    根据调研选定实体及相应属性画出E-R图 ​ 2.将E-R模型转换为对应关系模型,并指出主码和外码 图书book(书号,类别,出版社,作者,书名,定价,备注): 读者reader(编号,姓名,单位,性别 ...

  5. python编程老师岗位需求表_教师岗位需求信息表

    学院 需求专业 联系方式及备注 水文水资源学 院 水文水资源.水文物理模拟与预报.水信 息. 水文不确定性. 工程水文. 大气科学. 灾害天气预报与预警.水务工程 宋老师 ***-******** * ...

  6. mysql实验总结_数据库实验的心得体会.docx

    数据库实验的心得体会 数据库实验心得体会 篇一:数据库实训总结 SQL Server 数据库管理课实训报告 这个星期是我们SQL Server 数据库管理课的实训,经过一个星期的实训,让我将书本上的理 ...

  7. mysql多租户视频_数据库实现多租户支持的思路

    前言 在云领域我们经常会听到一个词:多租户.这个词在不同的语境中有着不同的含义,接下来将从理论到实践对以往的项目进行一次总结,同时实战一个Demo.本篇先从理论介绍云平台中的多租户的概念以及实现多租户 ...

  8. mysql 设计动态字段_数据库设计中动态列的设计方法

    问题提出: 在进行数据库开发过程中,我们往往会碰到这种情形: 如在劳资计算中,对每个人有很多薪酬项目需要汇总计算出工资,如基本工资,计件工资,计时工资,奖金,补贴,代扣等等,但我们在建表的过程中既不能 ...

  9. 【数据库】商品信息表的设计

    假设你是一家百货公司电脑部的开发人员,某天老板要求你为公司开发一套网上电子商务平台,该百货公司有数千种商品出售,不过目前仅打算先在网上销售数十种方便运输的商品,当然,以后可能会陆续在该电子商务平台上增 ...

最新文章

  1. 用飞桨做自然语言处理:神经网络语言模型应用实例
  2. Linux 软件管理工具之rpm、yum
  3. C#委托(delegate、Action、Func、predicate)和事件
  4. Entity Framework 关系约束配置
  5. Centos 6.4 KVM安装和配置
  6. WebSocket 协议
  7. jQuery学习笔记(三):选择器总结
  8. 默认文件夹为空,如何从Microsoft Edge下载收藏夹
  9. Bellman-Ford 算法及其优化
  10. [2019CCPC网络赛][hdu6704]K-th occurrence(后缀数组主席树)
  11. Kruscal算法---最小生成树
  12. C++ mmap 多进程文件读写
  13. Native Instruments Maschine 2 v2.14.7 WiN-MAC 节奏音乐制作软件含拓展
  14. Android音频子系统(七)------数字耳机播192KHz音乐卡顿问题解析
  15. 辣评10月自主轿车销量:帝豪下滑 “寒冬”之下取暖还得靠新能源
  16. 使用v-charts报错
  17. linux sudoers文件损坏修复
  18. 电脑版 钉钉 卡顿 解决办法
  19. 产品设计-13.制作产品结构图
  20. stom实时单词统计

热门文章

  1. 【BUG记录】Matisse显示的图片乱序或者在全部项不显示
  2. 如何新建分支上传_如何创建git分支?
  3. Java图书管理系统练习程序(四)
  4. @Autowired注解和静态方法 NoClassDefFoundError could not initialize class 静态类
  5. 详细到没朋友,一文帮你理清Linux 用户与用户组关系~
  6. oracle查看和替换含不可见字符(空白)
  7. applicationContext.xml中的使用${}是代表什么意思?
  8. Linux Shell之一 Shell简介
  9. django在nginx uwsgi和tornado异步方案在项目中的体验
  10. 递归 图 java,《算法图解》之递归