mysql单表查询

创建表并插入数据
学生信息表student
CREATE TABLE STUDENT

SNO VARCHAR(3) NOT NULL COMMENT '学号',
SNAME VARCHAR(4) NOT NULL COMMENT '姓名',
SSEX VARCHAR(2) NOT NULL COMMENT '性别' ,
SBIRTHDAY DATETIME COMMENT '生日',
CLASS VARCHAR(5) COMMENT '班级号'
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生信息表';


课程信息表course
CREATE TABLE COURSE
(CNO VARCHAR(5) NOT NULL COMMENT '课程编号',
CNAME VARCHAR(10) NOT NULL COMMENT '课程名称',
TNO VARCHAR(10) NOT NULL COMMENT '授课老师编号'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='课程信息表';

成绩表score
CREATE TABLE SCORE
(SNO VARCHAR(3) NOT NULL COMMENT '学员编号',
CNO VARCHAR(5) NOT NULL COMMENT '课程编号',
DEGREE NUMERIC(10, 1) NOT NULL COMMENT '成绩'
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='成绩表';

讲师表teacher
CREATE TABLE TEACHER
(TNO VARCHAR(3) NOT NULL COMMENT '讲师编号',
TNAME VARCHAR(4) NOT NULL COMMENT '讲师姓名', 
TSEX VARCHAR(2) NOT NULL COMMENT '讲师性别',
TBIRTHDAY DATETIME NOT NULL COMMENT '出生日期', 
PROF VARCHAR(6) COMMENT '职称',
DEPART VARCHAR(10) NOT NULL COMMENT '所属院系'
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='讲师表';

INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,'曾华' ,'男'
,'1977-09-01',95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,'匡明' ,'男'
,'1975-10-02',95031);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,'王丽' ,'女'
,'1976-01-23',95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,'李军' ,'男'
,'1976-02-20',95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,'王芳' ,'女'
,'1975-02-10',95031);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,'陆君' ,'男'
,'1974-06-03',95031);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-105' ,'计算机导论',825);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-245' ,'操作系统' ,804);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('6-166' ,'数据电路' ,856);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('9-888' ,'高等数学' ,100);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-245',86);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,'3-245',75);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,'3-245',68);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-105',92);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,'3-105',88);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,'3-105',76);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,'3-105',64);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,'3-105',91);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,'3-105',78);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,'6-166',85);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,'6-166',79);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,'6-166',81);
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (804,'李诚','男','1958-12-02','副教授','计算机系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (856,'张旭','男','1969-03-12','讲师','电子工程系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (825,'王萍','女','1972-05-05','助教','计算机系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (831,'刘冰','女','1977-08-14','助教','电子工程系');


查询Score表中成绩在60到80之间的所有记录。
 select * from Score where DEGREE between 60 and 80;     
查询Score表中成绩为85,86或88的记录。
select * from Score where DEGREE  IN (85,86,88);
查询Student表中“95031”班或性别为“女”的同学记录。
select * from Student where class="95031" or ssex="女";
查询学习"计算机导论"的人数
select count(SNO) as "人数" from SCORE where CNO=(select CNO from COURSE where CNAME="计算机导论");

insert into student values
(901,"张老大","男",1985,"计算机系","北京市海淀区"), 
(902,"张老二","男",1986,"中文系","北京市昌平区"), 
(903,"张三","女",1990,"中文系","湖南省永州市"), 
(904,"李四","男",1990,"英语系","辽宁省阜新市"), 
(905,"王五","女",1991,"英语系","福建省厦门市"), 
(906,"王六","男",1988,"计算机系","湖南省衡阳市");


insert into score values
(1,901,"计算机",98),
(2,901,"英语",80),
(3,902,"计算机",65),
(4,902,"中文",88),
(5,903,"中文",95),
(6,904,"计算机",70),
(7,904,"英语",92),
(8,905,"英语",94),
(9,906,"计算机",90),
(10,906,"英语",85);

3、使用适当的sql语句查询下列内容
查询student表的所有记录
select * from student;
查询student表的第2条到4条记录
select * from student limit 1,3;
从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息
select id,NAME,department from student;
从student表中查询计算机系和英语系的学生的信息
> select * from student where department IN ("计算机系","英语系");
select * from student where department="计算机系" or department="英语系";

从student表中查询年龄30~35岁的学生信息
select * from student where birth between 1988  and 1993;
select * from student where birth>=1988  and birth<=1993;

从student表中查询每个院系有多少人
select department,count(1) from student group by department;

从score表中查询每个科目的最高分
select c_name,max(grade) from score group by c_name;

======================================================================================
1、查询李四的考试科目(c_name)和考试成绩(grade)
    结果  考试科目(c_name)
          考试成绩(grade)     ---> 表score
    条件  李四                  ===> 表student
          
    关联条件
        student.id=score.stu_id
    
select NAME,c_name,grade from student left join score on student.id=score.stu_id where NAME="李四";    

2、用连接的方式查询所有学生的信息和考试信息
select * from student left join score on student.id=score.stu_id;

3、计算每个学生的总成绩
select NAME,sum(grade) from student left join score on student.id=score.stu_id group by NAME;

4、计算每个考试科目的平均成绩
select c_name,format(avg(grade),2) from student left join score on student.id=score.stu_id group by c_name;


5、查询计算机成绩低于95的学生信息
条件: 查询计算机成绩低于95的  score
结果: 学生信息  student
    关联条件
        student.id=score.stu_id

select * from student left join score on student.id=score.stu_id where c_name="计算机" and grade<95;

6、查询同时参加计算机和英语考试的学生的信息
 select xx from xxxx where 参加英语 and id in(select id from xxx where 参加计算机 )

 select * from student left join score on student.id=score.stu_id  where c_name="英语" and student.id in (select student.id from student left join score on student.id=score.stu_id where c_name="计算机");

!!!!!!
name,group_concat(c_name)
select * from 
(select NAME,group_concat(c_name) goudan from student left join score on student.id=score.stu_id group by NAME) as a
where goudan="英语,计算机" or goudan="计算机,英语"


7、将计算机考试成绩按从高到低进行排序
select * from student left join score on student.id=score.stu_id where c_name="计算机" order by grade desc;

8、查询姓张或者姓王的同学的姓名、院系和考试科目及成绩
select NAME,department,c_name,grade from student left join score on student.id=score.stu_id where NAME LIKE "张%" or NAME
ME LIKE "王%";


9、查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩
select NAME,year(now())-birth as "年龄",department,c_name,grade from student left join score on student.id=score.stu_id where address like "湖南%"; 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邢函数

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值