数据库实验

CREATE TABLE Student
( Sno CHAR(9) PRIMARY KEY, --列级完整性约束条件
Sname CHAR(20) UNIQUE, --Sname取唯一值
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), --表级完整性约束条件,Sno是外码,被参照表是Student

FOREIGN KEY(Cno) REFERENCES Course(Cno) --表级完整性约束条件, Cno是外码,被参照表是Course
)

insert into Student values(‘200215121‘,‘李勇‘,‘男‘,‘20‘,‘CS‘)
insert into Student values(‘200215122‘,‘刘晨‘,‘女‘,‘19‘,‘CS‘)
insert into Student values(‘200215123‘,‘王敏‘,‘女‘,‘18‘,‘MA‘)
insert into Student values(‘200215125‘,‘张立‘,‘男‘,‘19‘,‘IS‘)

insert into Course values(‘1‘,‘数据库‘, null,4)
insert into Course values(‘2‘,‘数学‘,null,2)
insert into Course values(‘3‘,‘信息系统‘, ‘1‘,4)
insert into Course values(‘4‘,‘操作系统‘, null,3)
insert into Course values(‘6‘,‘数据处理‘,null,2)
insert into Course values(‘7‘,‘PASCAL语言‘, ‘6‘,4)
insert into Course values(‘5‘,‘数据结构‘, ‘7‘,4)
update Course
set Cpno=‘5‘ where Cno=‘1‘
update Course
set Cpno=‘6‘ where Cno=‘4‘

insert into SC values(‘200215121‘,‘1‘,92)
insert into SC values(‘200215121‘,‘2‘,85)
insert into SC values(‘200215121‘,‘3‘,88)
insert into SC values(‘200215122‘,‘2‘,90)
insert into SC values(‘200215122‘,‘3‘,80)
insert into SC values(‘200215123‘,‘4‘,87)
insert into SC values(‘200215123‘,‘5‘,92)

select * from Student
select * from Course
select * from SC

CREATE TABLE Gpa
(Cno CHAR(4),
Average SMALLINT,
)

insert into Gpa(Cno ,Average)
select Student.Sdept,ROUND(AVG(SC.Grade),2)AS Average
from SC INNER join Student
on Student.Sno=SC.Sno
group by Sdept

select * from Gpa

select COUNT(Cno) as Scno, round(AVG(sc.Grade),2) AS ‘average‘
from Student inner join SC
on Student.Sno=SC.Sno
group by Cno

select Sno,Sname,Sage,Sdept
from Student
where Sage in (select MAX(Sage) from Student group by Student.Sdept
)

select Sdept, COUNT(Sdept) as ‘count‘
from Student
group by Sdept
order by count

select Sdept, AVG(Sage) as ‘avgage‘
from Student
group by Sdept
order by avgage desc

select SUM(Ccredit) AS ‘无选修总学分‘
from Course
where Cpno is null

select Sno,COUNT(SC.Sno)as ‘门数‘,AVG(Grade)as ‘平均成绩‘,SUM(Ccredit)as ‘总学分‘
from SC inner join Course
on SC.Cno=Course.Cno
group by Sno

select Student.Sno ,Sname,Course.Cno,Cname,Grade
from Student inner join SC
on Student.Sno =SC.Sno
inner join Course
on SC.Cno=Course.Cno
where SC.Cno is not null

/*select Sdept,AVG(Grade) as Gpa
from SC inner join Student
on Student.Sno=SC.Sno
where Gpa>85
group by SC.Sno
order by Gpa*/

select SC.Sno, Sname ,Cno from
Student inner join SC
on Student.Sno= SC.Sno
where Cno=1 or Cno=2

select SC.Sno, Sname from
Student inner join SC
on Student.Sno= SC.Sno
where Cno=‘1‘ and SC.Sno in (select Sno from SC where Cno=‘2‘);

select Student.Sno,Sname ,Grade from
Student inner join SC
on Student.Sno = SC.Sno
inner join Course
on SC.Cno=Course.Cno
where Cname = ‘数据库‘ and Grade <60

select Student.Sno ,Ssex,Sage,Sdept,Sname,Course.Cno,Cname,Grade
from Student full join SC
on Student.Sno =SC.Sno
full join Course
on SC.Cno=Course.Cno
where Course.Cno is null

select Sno
from SC
group by Sno
HAVING COUNT(Sno)>=3

select Sno
from SC
where Grade>=80

时间: 2024-10-19 18:52:03

数据库实验的相关文章

数据库---实验三 嵌套查询和视图操作

(一) 嵌套查询 1. 求选修了’MA’的学号和姓名. SQL> select sno,sname from student where sno in(select sno from sc where cno=(select cno from course where cname='数学')); 2. 查询与刘明在同一个系学习的学生. SQL> select * from student where sdept=(select sdept from student where sname='刘

数据库---实验四 oracle的安全性和完整性控制

实验内容: (一) 授权 1. 以dba用户的身份登陆oracle,创建用户u1+学号后四位,u2+学号后四位. SQL> create user u1_3985 identified by "123"; SQL> create user u2_3985 identified by "123"; SQL> create user u3_3985 identified by "123"; SQL> create user u

数据库实验报告

作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/29028363 使用SQL Server 开发服务器端应用程序 一.实验类别 综合型实验 二.实验目的 熟练掌握后台服务器端应用程序的开发. 三.实验环境 SQL Server 系列的数据库管理系统 四.实验内容 对学生-课程数据库,编写存储过程,完成下面功能: 1.逐条(使用游标)浏览某个系的学生记录: 2.统计任意一门课程的成绩分布情况,即按照各分数段统计人数: 3.统

数据库实验:基本表的定义与修改

实验一         基本表的定义与修改 一.实验目的 通过使用SQL SERVER企业管理器建立表.模式为人事表.客户表.销售表.销售明细表.产品表.理解数据库模式的概念,理解主键约束.外键约束.UNIQUE约束和CHECK约束.通过SQL SERVER企业管理器建立表间的约束.将得到的表生成脚本,保存. 二.实验环境 是MS SQL SERVER 2005的中文客户端. 三.实验示例 1. 建立"学生"表S,学号是主码,姓名取值唯一. CREATE TABLE S (S#   C

数据库实验二 数据库和数据表的创建

实验环境: SQL Service 2014 一.数据库的创建 有三种类型的文件用来存储数据库: 主文件包含数据库的启动信息.主文件还可以用来存储数据.每个数据库都包含一个主文件. 次要文件保存所有主要数据文件中容纳不下的数据.如果主文件大到足以容纳数据库中的所有数据,就不需要有次要数据文件.而另一些数据库可能非常大,需要多个次要数据文件,也可能使用多个独立磁盘驱动器上的次要文件,以将数据分布在多个磁盘上. 事务日志文件保存用来恢复数据库的日志信息.每个数据库必须至少有一个事务日志文件(尽管可以

数据库实验T-SQL语言创建实例图

实验: 用T-SQL语句建立数据库及其对象 一.实验目的 1.掌握用SSMS或Transact-SQL创建.查看.修改.删除数据库的方法: 2.掌握数据库的备份和恢复方法: 3.掌握数据库的分离和附加方法: 4.掌握用SSMS或Transact-SQL语句创建.修改.删除表及向其添加数据的方法. 二.实验要求 1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作: 2.能认真独立完成实训内容: 3.实验后做好实验总结,根据实验情况完成总结报告. 三

MySQL数据库实验五:数据更新

实验五   数据更新 一.实验目的 掌握数据更新操作的用法. 二.实验环境 三.实验示例 1.?往基本表SC中插入元组. ①    INSERT INTO S(S#,SNAME,AGE,SEX) VALUES('S36','GU',20,'M'): ②   INSERT INTO SC(S#,C#) VALUES('S5','C8'): ③        INSERT INTO SC VALUES('S4','C4',85), ('S3','C6',90), ('S7','C2',70): ④

MySQL数据库实验四:嵌套查询

实验四          嵌套查询 一.实验目的 掌握SELECT语句的嵌套使用,实现表的复杂查询,进一步理解SELECT语句的高级使用方法. 二.实验环境 三.实验示例 1.  查询与"刘晨"在同一个系学习的学生. SELECT Sno,Sname,Sdept FROM Student WHERE Sdept  IN (SELECT Sdept FROM Student WHERE Sname= ' 刘晨 '): 用自身连接完成 SELECT  S1.Sno,S1.Sname,S1.

MySQL数据库实验三:连接查询

实验三    连接查询 实验名称:连接查询(2课时) 一.实验目的 理解JOIN语句的操作和基本使用方法,掌握内连接.外连接.自身连接的概念和使用. 二.实验环境 是MS SQL SERVER 2005的中文客户端. 三.实验示例 1. 查询每个学生及其选修课程的情况 SELECT  Student.*,SC.* FROM     Student,SC WHERE  Student.Sno = SC.Sno: 2.检索至少选修课程号为C2和C4的学生学号 SELECT X.S# FROM SC

MySQL数据库实验二:单表查询

实验二   单表查询 一.实验目的 理解SELECT语句的操作和基本使用方法. 二.实验环境 是MS SQL SERVER 2005的中文客户端. 三.实验示例 1.查询全体学生的姓名.学号.所在系. SELECT Sname,S#,Sdept FROM S: 2.查询全体学生的详细记录. SELECT  * FROM S: 3.查全体学生的姓名及其出生年份. SELECT Sname,2011-Sage    /*假定当年的年份为2011年*/ FROM S: 4.查询选修了课程的学生学号.