当前位置:Gxlcms > 数据库问题 > 2018-2-1 有关于数据库表增删改查的操作实例

2018-2-1 有关于数据库表增删改查的操作实例

时间:2021-07-01 10:21:17 帮助过:16人阅读

这里建立了4张表,student、course、score、teacher,现在往表中添加数据,(也就是增):

student:

insert into student(sno,sname,ssex,sbirthday,class) values
("108","曾华","男","1977-09-01","95033"),
("105","匡明","男","1975-10-02","95031"),
("107","王丽","女","1976-01-23","95033"),
("101","李军","男","1976-02-20","95033"),
("109","王芳","女","1975-02-10","95031"),
("103","陆君","男","1974-06-03","95031");
技术分享图片

course:

insert into course values          
("3-105","计算机导论","825"),
("3-245","操作系统","804"),
("6-166","数字电路","856"),
("9-888","高等数学","831");
技术分享图片

score:

insert into score values
("103","3-245","86"),
("105","3-245","75"),
("109","3-245","68"),
("103","3-105","92"),
("105","3-105","88"),
("109","3-105","76"),
("101","3-105","64"),
("107","3-105","91"),
("108","3-105","78"),
("101","6-166","85"),
("107","6-166","79"),
("108","6-166","81");
技术分享图片

teacher:

("804","李诚","男","1958-12-02","副教授","计算机系"),          
("856","张旭","男","1969-03-12","讲师","电子工程系"),
("825","王萍","女","1972-05-05","助教","计算机系 "),
("831","刘冰","女","1977-08-14","助教","电子工程系");   
    
 技术分享图片

 修改数据(改):

update student set ssex="女" where sname="李军";

查看表(查):

select * from student;
select * from course;
select * from score;
select * from teacher;

删除数据(删,以行为单位):

delete from student where sno in(101,103);

查看数据的实例:

#1、 查询Student表中的所有记录的Sname、Ssex和Class列。
select sname,ssex,class from student;
#2、 查询教师所有的单位即不重复的Depart列。
 select distinct depart from teacher; 
#3、 查询Student表的所有记录。
select * from student;
#4、 查询Score表中成绩在60到80之间的所有记录。
select * from score where degree  between 60 and 80;
#5、 查询Score表中成绩为85,86或88的记录。
select * from score where degree in(85,86,88);
#6、 查询Student表中“95031”班或性别为“女”的同学记录。
select * from student where class = "95031" or ssex = "女";
 #以Class降序查询Student表的所有记录。
select * from student order by class desc;
# 以Cno升序、Degree降序查询Score表的所有记录。
select * from score order by cno,degree desc;
 #查询“95031”班的学生人数。
select count(*) from student group by class having class="95033";
#10、 查询Score表中的最高分的学生学号和课程号。(子查询或者排序)
select max(degree) from score;
select sno,cno from score where degree=(select max(degree) from score);
# 查询每门课的平均成绩。
select cno,avg(degree) from score group by cno;
#12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
select avg(degree) from score group by cno having cno like"3%" and count(*)>=5 ;
#查询分数大于70,小于90的Sno列。
select sno from score where degree between 70 and 90;
#查询所有学生的Sname、Cno和Degree列。
select student.sname,score.cno,score.degree from student
join score on student.sno=score.sno;
#15、查询所有学生的Sno、Cname和Degree列。
select student.sno,course.cname,score.degree from student
join score on score.sno=student.sno
join course on course.cno=score.cno;
#16、查询所有学生的Sname、Cname和Degree列。
select a.sname,b.cname,c.degree
from student as a,course as b,score as c
where a.sno = c.sno and b.cno = c.cno;
select sname,cname,degree from student join score on student.sno=score.sno  join course on course.cno=score.cno;
#17、 查询“95033”班学生的平均分。
select sno from student where class="95033";
select avg(degree) from score where sno in(select sno from student where class="95033");
#1.查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
#20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。
#选修多门课的学生
select sno,count(*) from score group by sno;
#找到最高分
select max(degree) from score
select * from score where sno in(select sno from score group by sno)and degree<(select max(degree) from score);
#21、 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
select degree from score where sno="109" and cno="3-105";
select degree from score where degree>(select degree from score where sno="109" and cno="3-105");
#22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
select left(sbirthday,4) as date from student;
select sno,sname,sbirthday from student where sbirthday like concat((select left(sbirthday,4) as date from student where sno="108"),"","%");
#23、查询“张旭“教师任课的学生成绩。
#1、从成绩表 查询学生成绩  
#2、条件是这个课程是 “张旭“教师任课
#A)从老师表 中查名字叫 张旭 编号
#B)根据老师编号 在课程表中找到对应的 课程
select  depart from teacher where tname="张旭";
select cno from course where depart=(select  depart from teacher where tname="张旭");
#24、查询选修某课程的同学人数多于5人的教师姓名。
select cno from score group by cno having count(*)>"5";
select tno from course where cno in(select cno from score group by cno having count(*)>"5");
select tname from teacher where tno=(select tno from course where cno in(select cno from score group by cno having count(*)>"5"));
#25、查询95033班和95031班全体学生的记录。
select * from student where class in(95033,95031);
#26、  查询存在有85分以上成绩的课程Cno.
select cno from score where degree>"85";
#27、查询出“计算机系“教师所教课程的成绩表。
select tno from teacher where depart="计算机系";
select cno from course where tno in(select tno from teacher where depart="计算机系");
select * from score where cno in(select cno from course where tno in(select tno from teacher where depart="计算机系"));
#29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
select max(degree) from score where cno="3-245";
select * from score where cno="3-105" and degree>(select max(degree) from score where cno="3-245") order by degree desc;
#30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
select * from score where cno="3-105" and degree>(select max(degree) from score where cno="3-245");
#31、 查询所有教师和同学的name、sex和birthday.
select sname,ssex,sbirthday from student 
union 
select tname,tsex,tbirthday from teacher;
#32、查询所有“女”教师和“女”同学的name、sex和birthday.
select sname,ssex,sbirthday from student where ssex="女"
union 
select tname,tsex,tbirthday from teacher where tsex="女";
#33、 查询成绩比该课程平均成绩低的同学的成绩表。
select * from score group by cno having degree<avg(degree);
#34、 查询所有任课教师的Tname和Depart.
select cno from score group by cno;
select tno from course where cno in(select cno from score group by cno);
select tname,depart from teacher where tno in(select tno from course where cno in(select cno from score group by cno));
#35 、 查询所有未讲课的教师的Tname和Depart. 
select tname,depart from teacher where tno not in(select tno from course where cno in(select cno from score group by cno));
#36、查询至少有2名男生的班号。
select class from student group by class having count(ssex="男")>="2";
#37、查询Student表中不姓“王”的同学记录。
select * from student where sname not like"王%";
#38、查询Student表中每个学生的姓名和年龄。
select sname,(2018-left(sbirthday,4)) as age from student;
#39、查询Student表中最大和最小的Sbirthday日期值。
select max(sbirthday),min(sbirthday) from student;
#40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
select * from student order by class desc,(2018-left(sbirthday,4))  desc;
#41、查询“男”教师及其所上的课程。
select tno from teacher where tsex="男";
select teacher.tname,course.cname from teacher,course where course.tno in(select tno from teacher where tsex="男") and course.tno= teacher.tno;
#42、查询最高分同学的Sno、Cno和Degree列。
select max(degree) from score  ;
select * from score where degree=(select max(degree) from score);
#43、查询和“李军”同性别的所有同学的Sname.
select ssex from student where sname="李军";
select sname from student where ssex=(select ssex from student where sname="李军");
#44、查询和“李军”同性别并同班的同学Sname.
select class from student where sname="李军";
select sname from student where ssex=(select ssex from student where sname="李军") and class=(select class from student where sname="李军");
#45、查询所有选修“计算机导论”课程的“男”同学的成绩表。
select cno from course where cname="计算机导论";
select sno from student where ssex="男";
select * from score where sno in(select sno from student where ssex="男") and cno in(select cno from course where cname="计算机导论");

 

2018-2-1 有关于数据库表增删改查的操作实例

标签:order by   姓名   img   exist   class   数据类型   concat   gpo   编号   

人气教程排行