DH-SQL(学生信息表-课程表-选课表)
问题:
建立学校数据库,里面有三张表
学生信息表(学生学号,学生姓名,年龄,性别,院系)
Student(sno,sname,sage,ssex,sdept)
课程表(课程号,课程名,先行课,学分)
Course(cno,cname,cpon,credit)
选课表(学生学号,课程号,成绩)
SC(sno,cno,grade)
现在进行以下操作
--生成包含计算机系全体学生的花名册
--查询所有年龄在25岁以下的学生姓名、年龄
--查询考试成绩有不及格的学生的学号、姓名
--查询年龄在20岁至30岁(含)之间的学生的姓名、系别、年龄
--查询数学系(MA)、计算机系(CS)、信息(IS)学生的姓名、系别
--查询未参加选修课考试的学生的学号、姓名、课号及课程名
--查找平均成绩大于70的学生的学号和平均成绩(分组)
--‘C01’课程中,成绩前五名的学生的学号、姓名、成绩(First / Top n)
建库建表及插入数据代码:
if exists (select *from sysdatabases where name='school')
drop database school
create database school
on primary
(name='schoolmanageDB',filename='D:\project\school.mdf',size=10mb,maxsize=100mb,filegrowth=2mb
)use school--在这个数据库下
--------------------------建立课程表--------------------------------------
if exists (select *from sysobjects where name='Course')--课程表
drop table Course
create table Course
(cno char(10)not null primary key,--定义主键cname varchar(20)not null,cpon char(10),credit smallint,foreign key (cpon) references Course(cno)--定义外键
);
--------------------------建立课程表约束-------------------------------------------alter table Course --增加课程名必须取唯一值的约束条件、
add constraint UK_cname unique(cname);
-------------------插入课程表信息-----------------select * from Course--有错,无法增添数据(注意这个地方Course定义的外键是本身的一个属性)
--要一行一行的插入
insert into Course(cno,cname,cpon,credit)--所以上来插入外键的时候,第一个外键一定是null
values ('1','数据库',null,3)
insert into Course(cno,cname,cpon,credit)
values('2','数学',null,2)
insert into Course(cno,cname,cpon,credit)
values('3','信息系统','1',4)
insert into Course(cno,cname,cpon,credit)
values('4','操作系统','3',3)
insert into Course(cno,cname,cpon,credit)
values('5','数据结构','2',4)
insert into Course(cno,cname,cpon,credit)
values('6','数据处理',null,2)
insert into Course(cno,cname,cpon,credit)
values('7','语言','6',4)--------------------------建立学生表------------------------------------------
if exists (select *from sysobjects where name='Student')--学生表
drop table Student
create table Student(sno char(10)not null,sname varchar(20)not null,sage smallint,ssex char(1),sdept char(2),primary key(sno),check(ssex in ('M','F'))
)----------------------插入学生信息-----------------------
insert into Student(sno,sname,sage,ssex,sdept)
values('0000000001','鲁班',18,'M','CS')
insert into Student
values('0000000002','狄仁杰',30,'M','IS')insert into Student(sno,sname,sage,ssex,sdept)
values('201215121','李勇',20,'M','CS')
insert into Student
values('201215122','刘晨',19,'F','CS')
insert into Student
values('201215123','王敏',18,'F','MA')
insert into Student
values('201215125','张立',19,'M','IS')--批量插入(select后面没有括号)select *from Student
insert into Student(sno,sname,sage,ssex,sdept)--批量插入
select '0000000003','小乔',19,'F','MA'union
select '0000000004','大乔',36,'F','MA'union
select '0000000005','亚瑟',55,'M','CS'------------------------建立选课表---------------------------------
if exists (select *from sysobjects where name='SC')--选课表
drop table SC
create table SC
(
sno char(10)not null,
cno char(10)not null,
grade smallint ,
primary key(sno,cno),
foreign key(sno)references Student(sno),
foreign key(cno)references Course(cno),
check(grade>=0 and grade<=100)
)------------------------向选课表中插入信息---------------------------------------切记一条一条插入---------
insert into SC(sno,cno,grade)
values('201215121','1',92)
insert into SC(sno,cno,grade)
values('201215121','2',85)
insert into SC(sno,cno,grade)
values('201215121','3',88)
insert into SC(sno,cno,grade)
values('201215122','2',90)
insert into SC(sno,cno,grade)
values('201215122','3',90)--插入考试不及格的同学
insert into SC(sno,cno,grade)
select '0000000001','1',56 union
select '0000000004','2',44 union
select '0000000003','2',45 --插入没有考试成绩的同学
insert into SC(sno,cno,grade)
select '0000000001','2',null union
select '0000000002','2',null
操作代码:
select *from Student
运行结果:
操作代码:
select *from Course
运行结果:
操作代码:
select *from SC
运行结果:
操作代码:
--生成包含计算机系全体学生的花名册
select *from student
where sdept='CS'
运行结果:
操作代码:
--查询所有年龄在25岁以下的学生姓名、年龄
select sname, sage from student
where sage<25--查询考试成绩有不及格的学生的学号、姓名
select student.sno,sname from Student
where sno in(select sno from SC where grade<60)
运行结果:
操作代码:
--查询年龄在20岁至30岁(含)之间的学生的姓名、系别、年龄select sname,sdept,sage from Student
where sage between 20 and 30--查询数学系(MA)、计算机系(CS)、信息(IS)学生的姓名、系别
select sname,sdept from Student
where sdept in('MA','CS','IS')
运行结果:
操作代码:
--查询未参加选修课考试的学生的学号、姓名、课号及课程名select student.sno,sname,SC.cno,cname from SC join Student
on SC.sno=Student.sno
join Course on SC.cno=Course.cno where( grade is null)--查找平均成绩大于70的学生的学号和平均成绩(分组)
select sno,avg(grade)平均成绩 from SC--条件
group by sno --以学号分组
having avg(grade)>70--用having语句
运行结果:
操作代码:
--‘C01’课程中,成绩前五名的学生的学号、姓名、成绩(First / Top n)
select Student.sno,sname,grade
from Student join SC
on Student.sno=SC.sno
where SC.sno in
(select top 5 SC.sno from SC
order by grade desc
)order by grade desc
--再次执行一遍,使成绩从大到小显示
运行结果:
DH-SQL(学生信息表-课程表-选课表)相关推荐
- 学生-课程数据库建表代码(三张表:学生表 课程表 选课表SC)
第一步:点击新建查询建立数据库 create database _10lzhangsan//先建立数据库 第二步:建表 学生表(包括学号,姓名,性别,年龄,所在系) create table stud ...
- Oracle课表查询系统,Oracle SQL基础练习(一)(学生表-课程表-选课表)
一 使用CREATE TABLE语句和INSERT INTO语句创建表和插入数据. student表 course表 sc表 二 操作数据库 1.分别查询学生表和学生修课表中的全部数据. SELECT ...
- 查询选修c语言课程的学生学号和姓名,数据库实验(学生信息表)
目录 数据库实验(学生信息表) 实验一 实验二 实验三 实验四 数据库实验(学生信息表) 实验一 创建数据库以及学生信息表.课程信息表.选课表 create Table student (Sno ch ...
- mysql实验学生表_数据库实验(学生信息表)
数据库实验(学生信息表) 实验一 创建数据库以及学生信息表.课程信息表.选课表 create Table student (Sno char(9) primary key, Sname char(20 ...
- SQL数据库创建学生、教师、选课表
SQL数据库创建学生.教师.选课表 创建学生表 create table student (sno char(14) primary key,sname char (10) not null,ssex ...
- SQL练习题 (学生信息表 教师信息 课程信息等)
– 创建学生信息表 CREATE TABLE Student( Sid VARCHAR(10), Sname VARCHAR(10), Sage datetime, Ssex VARCHAR(10) ...
- 学生信息表 -通过选择年级和班级得到详细的学生信息名单
功能: 通过选择年级和班级得到详细的学生信息名单 知识点: 1. A inner join B on A.id=B.id的应用 Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二 ...
- navicat的使用以及学生信息表的操作
目录 一.navicat的使用 创建数据库 删除数据库 数据库的导入导出 数据库中表操作 创建表结构 数据表的管理操作 二.学生信息表基础操作练习 一.navicat的使用 点击connection, ...
- 怎么在mysql创建数据库怎么加入学号_数据库怎么创建学生信息表
语音内容: 大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 数据库创建学生信息表的方法是: 1.新建表:单击数据库"studentDb"前图标,然后右键&qu ...
- 数据结构实验-学生信息表
(实验)自定义数据元素的类型和存储结构(顺序表或链表均可),完成如下的功能: ①录入:从键盘输入学生信息表的各个数据元素(至少包含学号,姓名,年龄,语文成绩,数学成绩,英语成绩): ②查找:可按学号查 ...
最新文章
- Android--UI之ImageView
- GIt代码托管、Github Desktop和 Pycharm中代码的管理
- Make It Connected
- Elasticsearch环境准备(一)
- POJ - 3581 Sequence(后缀数组)
- Chrome扩展应用Angular state inspector的使用方法
- java date传输类型错误_转换日期格式:Java中的转换错误?
- “头号大厂铁粉”微软宣布关闭区块链服务
- struts2中的constant配置详解
- 编写一个函数把华氏温度转换为摄氏温度
- Cygwin的进程管理
- 北大17秋c语言作业,17春北大 03081002-计算机编程语言 作业答案
- 线性代数学习笔记——矩阵主要公式
- 龙芯3a5000下编译postgresql 14.3
- 用最优控制视角看微分几何下的测地线
- 读史可以明智_明智之举:获得满意的广告
- 崩坏3服务器维护2月8号,崩坏3V3.4版本8月29日版本更新维护通知
- tvp5150的iic配置-应用程序实现。
- 2022暑期实习网易互娱游戏研发
- html操作sqlite,JavaScript操作sqlite
热门文章
- html鼠标悬停改变指针,把鼠标指针悬停在 div 元素上,它的外观会逐渐改变
- 男怕入错行 完美池宇峰畅谈创业点滴
- iOS开发 frame与bounds
- 问答网站Stack Overflow的成功之道
- win10系统计算机如何加密,win10系统自带加密使用的设置方法
- 1.4树莓派SSH远程登录
- NSCalendar 日历类
- CSS详解(1.什么是css)
- 三国演义人物出场次数统计
- 2017美国数学建模ICM D题 优化机场安全的乘客吞吐量检查点(Optimizing the Passenger Throughput at an Airport Security Checkpo)