问题:

建立学校数据库,里面有三张表

学生信息表(学生学号,学生姓名,年龄,性别,院系)

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(学生信息表-课程表-选课表)相关推荐

  1. 学生-课程数据库建表代码(三张表:学生表 课程表 选课表SC)

    第一步:点击新建查询建立数据库 create database _10lzhangsan//先建立数据库 第二步:建表 学生表(包括学号,姓名,性别,年龄,所在系) create table stud ...

  2. Oracle课表查询系统,Oracle SQL基础练习(一)(学生表-课程表-选课表)

    一 使用CREATE TABLE语句和INSERT INTO语句创建表和插入数据. student表 course表 sc表 二 操作数据库 1.分别查询学生表和学生修课表中的全部数据. SELECT ...

  3. 查询选修c语言课程的学生学号和姓名,数据库实验(学生信息表)

    目录 数据库实验(学生信息表) 实验一 实验二 实验三 实验四 数据库实验(学生信息表) 实验一 创建数据库以及学生信息表.课程信息表.选课表 create Table student (Sno ch ...

  4. mysql实验学生表_数据库实验(学生信息表)

    数据库实验(学生信息表) 实验一 创建数据库以及学生信息表.课程信息表.选课表 create Table student (Sno char(9) primary key, Sname char(20 ...

  5. SQL数据库创建学生、教师、选课表

    SQL数据库创建学生.教师.选课表 创建学生表 create table student (sno char(14) primary key,sname char (10) not null,ssex ...

  6. SQL练习题 (学生信息表 教师信息 课程信息等)

    – 创建学生信息表 CREATE TABLE Student( Sid VARCHAR(10), Sname VARCHAR(10), Sage datetime, Ssex VARCHAR(10) ...

  7. 学生信息表 -通过选择年级和班级得到详细的学生信息名单

    功能: 通过选择年级和班级得到详细的学生信息名单 知识点: 1. A inner join B on A.id=B.id的应用     Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二 ...

  8. navicat的使用以及学生信息表的操作

    目录 一.navicat的使用 创建数据库 删除数据库 数据库的导入导出 数据库中表操作 创建表结构 数据表的管理操作 二.学生信息表基础操作练习 一.navicat的使用 点击connection, ...

  9. 怎么在mysql创建数据库怎么加入学号_数据库怎么创建学生信息表

    语音内容: 大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 数据库创建学生信息表的方法是: 1.新建表:单击数据库"studentDb"前图标,然后右键&qu ...

  10. 数据结构实验-学生信息表

    (实验)自定义数据元素的类型和存储结构(顺序表或链表均可),完成如下的功能: ①录入:从键盘输入学生信息表的各个数据元素(至少包含学号,姓名,年龄,语文成绩,数学成绩,英语成绩): ②查找:可按学号查 ...

最新文章

  1. Android--UI之ImageView
  2. GIt代码托管、Github Desktop和 Pycharm中代码的管理
  3. Make It Connected
  4. Elasticsearch环境准备(一)
  5. POJ - 3581 Sequence(后缀数组)
  6. Chrome扩展应用Angular state inspector的使用方法
  7. java date传输类型错误_转换日期格式:Java中的转换错误?
  8. “头号大厂铁粉”微软宣布关闭区块链服务
  9. struts2中的constant配置详解
  10. 编写一个函数把华氏温度转换为摄氏温度
  11. Cygwin的进程管理
  12. 北大17秋c语言作业,17春北大 03081002-计算机编程语言 作业答案
  13. 线性代数学习笔记——矩阵主要公式
  14. 龙芯3a5000下编译postgresql 14.3
  15. 用最优控制视角看微分几何下的测地线
  16. 读史可以明智_明智之举:获得满意的广告
  17. 崩坏3服务器维护2月8号,崩坏3V3.4版本8月29日版本更新维护通知
  18. tvp5150的iic配置-应用程序实现。
  19. 2022暑期实习网易互娱游戏研发
  20. html操作sqlite,JavaScript操作sqlite

热门文章

  1. html鼠标悬停改变指针,把鼠标指针悬停在 div 元素上,它的外观会逐渐改变
  2. 男怕入错行 完美池宇峰畅谈创业点滴
  3. iOS开发 frame与bounds
  4. 问答网站Stack Overflow的成功之道
  5. win10系统计算机如何加密,win10系统自带加密使用的设置方法
  6. 1.4树莓派SSH远程登录
  7. NSCalendar 日历类
  8. CSS详解(1.什么是css)
  9. 三国演义人物出场次数统计
  10. 2017美国数学建模ICM D题 优化机场安全的乘客吞吐量检查点(Optimizing the Passenger Throughput at an Airport Security Checkpo)