4.22 数据库 课堂作业

create database s000
create table student
(
sno int  primary key  not null,--学生的学号 number的简称
sname varchar(50) not null,--学生的名字
ssex varchar(50) not null,--学生的性别
sbirthday date ,--学生的出生年月
class varchar(50), --学生所在的班级
)

go
insert into student values(108,曾华,,1977-09-01,95033);
insert into student values(105,匡明,,1975-10-02,95031);
insert into student values(107,王丽,,1976-01-23,95033);
insert into student values(101,李军,,1976-02-20,95033);
insert into student values(109,王芳,,1975-02-10,95031);
insert into student values(103,陆君,,1974-06-03,95031);

go
select*from student


create table course--创建一个课程表
(
cno varchar(50)primary key  not null,--课程号
cname varchar(50) not null,--课程的名字
tno varchar(50) references teacher(tno) --教工编号 外键受主键约束
)
go
insert into course values(3-105,计算机导论,825);
insert into course values(3-245,操作系统,804);
insert into course values(6-166,数字电路,856);
insert into course values(9-888,高档数学,831);

go
select *from course


create table score--创建一个成绩表
(
sno int references student (sno) not null,--学号 
cno varchar(50) references course(cno) not null,--课程号
degiee decimal(4,1)--成绩

)
go
insert into score  values(103,3-245,86);
insert into score  values(105,3-245,75);
insert into score  values(109,3-245,68);
insert into score  values(103,3-105,92);
insert into score  values(105,3-105,88);
insert into score  values(109,3-105,76);
insert into score  values(101,3-105,64);
insert into score  values(107,3-105,91);
insert into score  values(108,3-105,78);
alter table score add code int identity(1,1)
alter table score drop column code

go
select *from score
create table teacher
(
tno varchar(50) primary key not null,--创建一个老师的主码
tname varchar(50) not null,--名字
tsex varchar(50) not null,--性别
tbirthday date ,--老师的生日
Prof varchar(50),--教师的职称
depart varchar(50)--教师所在的部门
)
go
insert into teacher values(804,李诚,,1958-12-02,副教授,计算机系);
insert into teacher values(856,张旭,,1969-03-12,讲师,电子工程系);
insert into teacher values(825,王萍,,1972-05-05,助教,计算机系);
insert into teacher values(831,刘冰,,1977-08-14,助教,电子工程系);
go
select * from teacher
select * from teacher
select * from course
select * from student
select * from score

--1、查询学生表中的名字,性别和班级
select sname ,ssex,class from student 
--2.--把教师表中部门不重复的表现出来
select distinct depart from teacher
--4、 查询Score表中成绩在60到80之间的所有记录
select *from score where degiee between 60 and 80
--5、 查询Score表中成绩为85,86或88的记录。
select *from score where degiee in(85,86,88)
--6、 查询Student表中“95031”班或性别为“女”的同学记录。
select *from student where class=95031 or ssex=
--7、 以Class降序查询Student表的所有记录。
select *from student order by class desc
--8、 以Cno升序、Degree降序查询Score表的所有记录。
select *from score order by cno ,degiee desc
--9、 查询“95031”班的学生人数。  聚合函数;针对数据列,计算求和,或者计算等一系列算数型
select *from student where class=95031
--10、 查询Score表中的最高分的学生学号和课程号。(子查询或者排序)☆

--select *from score where degiee=92 and cno=‘3-105‘
select top 1 *from score order by degiee desc
--11、 查询每门课的平均成绩。
select AVG(degiee) from score group by cno--group by 分组 avg 求平均分


--12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
 
select cno, avg(degiee) as xxx from score where cno like3% group by cno having count(*)>=3 order by xxx
--13、查询分数大于70,小于90的Sno列。
select sno from score where degiee between 70 and 90--找出四个表中分数大于70,小于90的分数

--14、查询所有学生的Sname、Cno和Degree列。
--select *from score
--select sname ,cno,degiee from student ,score where student.sno=score.sno--笛卡尔积方法,一定要是主外键
--用主外键关系进行筛选,用逗号分开两个表,形成笛卡尔积方法,进行where筛选 
--笛卡尔积  用两个新表合成一个表.   十条以上不要用笛卡尔积
select sname,cno,degiee from score
join student on score.sno=student.sno
--join ...on...

--15、查询所有学生的Sno、Cname和Degree列。
select *from score
select *from course
select sno,cname,degiee from score
join course  on score.cno=course.cno


--16、查询所有学生的Sname、Cname和Degree列。
select *from score--找出列的表
select *from student
select *from course
select sname,cname,degiee from score
join student on student.sno=score.sno
join course on course.cno=score.cno




--17、 查询“95033”班学生的平均分。
select avg(degiee)as 平均分 from student,score where class=95033

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。