Mysql数据库命令,可以参考。

"""
mysql -u root -p
123456
show databases;
use sa3mall;
show tables;
select * from student;
drop table student;
"""


"""
#建学生信息表student
create table student
(
sno varchar(20) not null primary key,
sname varchar(20) not null,
ssex varchar(20) not null,
sbirthday datetime,
class varchar(20)
)char set=utf8;

"""

"""
# 插入数据
#添加学生信息

insert into student values('108','曾华','男','19770901','95033');
insert into student values('105','匡明','男','19751002','95031');
insert into student values('107','王丽','女','19760123','95033');
insert into student values('101','李军','男','19760220','95033');
insert into student values('109','王芳','女','19750210','95031');
insert into student values('103','陆君','男','19740603','95031');

"""

print("----------------2-----------------")
"""
#建立教师表
create table teacher
(
tno varchar(20) not null primary key,
tname varchar(20) not null,
tsex varchar(20) not null,
tbirthday datetime,
prof varchar(20),
depart varchar(20) not null

)char set=utf8;
"""

"""
#添加教师表
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','助教','电子工程系');
"""

print("---------------------------------------------------")

"""
#建立课程表course
create table course
(
cno varchar(20) not null primary key,
cname varchar(20) not null,
tno varchar(20) not null,


)char set=utf8;
"""

"""
#添加课程表

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');
"""

print("-------------------------------------------")

"""
#建立成绩表

create table score
(
sno int,
cno varchar(20) not null,
degree int

)char set=utf8;
"""

"""
insert into score values('101','3-105','64');
insert into score values('102','3-245','68');
insert into score values('103','3-245','75');
insert into score values('104','3-105','76');
insert into score values('105','3-105','78');
insert into score values('106','3-166','79');
insert into score values('107','3-166','81');
insert into score values('108','3-166','85');
insert into score values('109','3-245','86');
insert into score values('110','6-105','88');
insert into score values('111','6-105','91');
insert into score values('112','6-105','92');
"""
"""
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='女';
"""

"""
7、 以Class降序查询Student表的所有记录。   降序
select *  from student order by class desc;
"""

"""
8、 以Cno升序、Degree降序查询Score表的所有记录。
     升序      降序
select *  from Score order by cno asc,degree desc;
"""

"""
9、 查询“95031”班的学生人数。
select count(*)  from student where class='95031';
"""

"""
10、     查询Score表中的最高分的学生学号和课程号。(子查询或者排序)
limi关键字作用:第一个数字表示从多少开始,第二个数字表示查多少条
注:存在一定的bug,比如只取第一条记录,但可能有两位最高分的同学
select sno,cno  from score where degree=(select max(degree) from score);
select sno,cno  from score order by  degree desc limit 0,1;
"""

"""
11、     查询每门课的平均成绩。
select cno,avg(degree) from score group by cno;
"""


"""
12、     查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
用in 不用= 是因为可能会有多个
select avg(degree) from score where cno like '3%' and cno in (select cno from score group by cno having count(*)>=5);
简单写法:
select avg(degree) from score where cno like '3%' and group by cno having count(*)>=5;
"""


"""
13、     查询分数大于70,小于90的Sno列。
select sno from score where degree>70 and degree<90;
"""

"""
14、     查询所有学生的Sname、Cno和Degree列。
select  sname, cno,degree from score , student where score.sno=student.sno;
"""

"""
15、     查询所有学生的Sno、Cname和Degree列。
select  sno,cname,degree from score , course where score.cno=course.cno;
"""

"""
16、     查询所有学生的Sname、Cname和Degree列。
join .. on 写法:
select sname,cname,degree from student,course,score where student.sno=score.sno and course.cno=score.cno;
select sname,cname,degree from student join score on student.sno=score.Sno join course on course.cno=score.cno;
"""

"""
17、     查询“95033”班学生的平均分。
select avg(degree) as 'class=95033' from score where sno in (select sno from  student where class='95033' );
"""

"""
18、 假设使用如下命令建立了一个grade表:
现查询所有同学的Sno、Cno和rank列。

create table grade(low int,upp int,rank char(20))char set=utf8;

insert into grade values(90,100,'A');
insert into grade values(80,89,'B');
insert into grade values(70,79,'C');
insert into grade values(60,69,'D');
insert into grade values(0,59,'E');



select sno,cno,rank from score,grade where degree between low and upp;
"""

"""
19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
<span style="color: #000000; font-size: 15px">109同学,选修是3-105课的</span>
select * from score where cno='3-105' and degree>(select max(degree ) from score where sno='109' and cno='3-105' );

<span style="font-size: 15px">109同学,没有选修3-105课</span>
select * from score where cno='3-105' and degree>(select max(degree ) from score where sno='109');
"""

"""
20.选了多门课程并且是这个课程下不是最高分的

select * from score a where sno in (select sno from score group by sno having count(*)>1) and degree<( select max(degree ) from score b where b.cno = a.cno);
"""
"""
21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。

Select * from score where degree>(select degree from score where sno='109' and cno='3-245' );
"""

"""
22、查询和学号为108、101的同学同年出生的所有学生的Sno、Sname和Sbirthday列。


select sno,sname,sbirthday  from student where year(sbirthday) = (select year(sbirthday) from student where  sno='108');

select sno,sname,sbirthday  from student where year(sbirthday) = (select year(sbirthday) from student where  sno='101');
"""

"""
23、查询“张旭“教师任课的学生成绩。


select sno,degree from score,course  where score.cno=course.cno and course.tno= (select tno from teacher where tname='张旭' );

select degree from score where cno in (select cno from course where tno= (select tno from teacher where tname='张旭'  ) );
"""

"""
24、查询选修某课程的同学人数多于5人的教师姓名。


select tname from teacher,  course where teacher.tno=course.tno and course.cno =(select cno from score group by cno having count(*)>5);

select tname from teacher where tno=( select tno from course where cno=( 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 * from course  where cno in (select cno from course  where tno in (select tno from teacher where depart='计算机系'));
"""

"""
28、查询“计算 机系”与“电子工程系“不同职称的教师的Tname和Prof。

select tname,prof from teacher where depart ='计算机系' and prof  not in( select prof from Teacher where depart ='电子工程系')<br> union <br>select tname,prof from teacher where depart ='电子工程系' and prof  not in( select prof from teacher where depart ='计算机系');
"""

"""
30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.

all:代表括号中的所有成绩

select cno,sno,degree from score where cno='3-105' and degree >all(select degree from score where cno='3-245' ) order by degree desc;

"""

"""
31、 查询所有教师和同学的name、sex和birthday.


select tname,tsex,tbirthday from teacher union select sname,ssex,sbirthday from student;
"""

"""
32、查询所有“女”教师和“女”同学的name、sex和birthday.

select tname,tsex,tbirthday from teacher where tsex='女' union select sname,ssex,sbirthday from student where ssex='女';
"""


"""
33、 查询成绩比该课程平均成绩低的同学的成绩表。

select * from score a  where degree < (select avg(degree) from score b where b.cno=a.cno);
"""

"""
34、 查询所有任课教师的Tname和Depart.

select tname,depart from teacher where tno in (select tno from course );
"""

"""
35 、 查询所有未讲课的教师的Tname和Depart.

select tname,depart from teacher where tno not in (select tno from course where cno in (select cno from score  ));
"""

"""
36、查询至少有2名男生的班号。

select class from student where ssex='男' group by class having count(*)>1;
"""

"""
37、查询Student表中不姓“王”的同学记录。

select * from student where sname not  like '王%%';
"""

"""

38、查询Student表中每个学生的姓名和年龄。

select sname, year(now())-year(sbirthday)  from student;
"""

"""
39、查询Student表中最大和最小的Sbirthday日期值。

select Max(sbirthday ),Min(sbirthday ) from student;
"""

"""
40、以班号和年龄从大到小的顺序查询Student表中的全部记录。

select * from student  order by  class desc, sbirthday;
"""

"""
41、查询“男”教师及其所上的课程。

select tname,cname from course,teacher where course.tno= teacher.tno and teacher.tsex='男';

"""

"""
42、查询最高分同学的Sno、Cno和Degree列。


select sno,cno,degree from score where degree=(select max(degree) from score);
排序写法:

select sno,cno,degree from score order by degree desc limit 0,1;
"""

"""
43、查询和“李军”同性别的所有同学的Sname.

select sname from student where ssex = (select ssex from student where sname='李军');
"""

"""
44、查询和“李军”同性别并同班的同学Sname.


select sname from student where ssex = (select ssex from student where sname='李军' ) and class=( select class from student where sname='李军');
"""

"""
45、查询所有选修“计算机导论”课程的“男”同学的成绩表。

select  sno,cno,degree from score where cno=( select cno from course where cname='计算机导论') and sno in (select sno from student where ssex='男');
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值