SQL语句练习一/学生选课系统查询

原创 2018年04月17日 19:23:01

学生选课系统

1.创建学生选课系统

2.切换数据库

3.创建学生表 tbstudent

主键stuid ,姓名stuname,性别stusex,生日stubirth,电话stutel,住址stuaddr,照片shuphoto(以二进制存)

4.创建课程表tbcourse

主键cosid,班级名称cosname,学分coscredit,课程描述cosintro

5.学生选课记录表tbsc

主键scid,学生外键sid,班级外键cid,创建日期scdate,分数score

-----------------------------------------------------------------------------------------------------------------------------

查看MySQL服务器所有数据库

show databases;

删除数据库srs

drop database if exists srs;

创建学生选课系统srs数据库并制定默认字符集

create database srs default charset urf8;

切换至srs数据库

use srs;

查看当前数据库中所有表

show tables;

创建学生表

create table tbstudent (stuid int primary key auto_increment, 
stuname varchar(10) not null, stusex int(1) default 0, stubirth date not NULL

, stutel varchar(11) not null, stuaddr varchar(10), stuphoto blob);

    修改表中stuaddr的结构

    alter table tbstudent change stuaddr stuaddr varchar(50);

    修改学生表删除stutel列

    alter table tbstudent drop stutel;

创建课程表

create table tbcourse (cosid int primary key auto_increment, cosname varchar(10)
, coscredit int(3), cosintro text);

创建学生选课记录表

create table tbsc (scid int primary key auto_increment, sid int not null, cid 
int not null, scdate date, score decimal(3,1),foreign key(sid) references tbstudent(stuid)

, foreign key(cid) references tbcourse(cosid))

多种方式添加学生记录:

insert into tbstudent values(1001,'张三丰', default,'1978-1-1','成都市一环路西二段17号',
null);
insert into tbstudent (stuid,stuname,stubirth) values (1002, '郭靖', '1980-2-2');
insert into tbstudent (stuid, stuname,stusex,stubirth, stuaddr) values(1003,
'黄蓉', 0, '1982-3-3', '成都市二环路南四段123号');
insert into tbstudent values (1004,'张无忌', 1,'1990-4-4', null,null);
insert into tbstudent values
(1005,'丘处机', 1, '1983-5-5','北京市海淀区宝盛北里西区28号',null),
(1006,'王处一', 1, '1985-6-6', '深圳市宝安区宝安大道5010号', null),
(1007,'刘处玄', 1, '1987-7-7', '郑州市金水区纬五路21号', null),
(1008,'孙不二', 0, '1989-8-8', '武汉市光谷大道61号', null),
(1009, '平一指', 1, '1992-9-9', '西安市雁塔区高新六路52号', null),
(1010, '老不死', 1, '1993-10-10', '广州市天河区元岗路310号', null),
(1011, '王大锤', 0, '1994-11-11', null, null),
(1012, '隔壁老王', 1, '1995-12-12', null, null),

(1013, '郭啸天', 1, '1977-10-25', null, null);

删除学生记录

delete from tbstudent where stuid=1004;

更新学生记录

update tbstudent set stubirth='1980-12-12',

stuaddr='上海市宝山区同济支路199号' where stuid=1002;

添加课程记录

insert into tbcourse values(1111,'C语言程序设计',3,'大神级讲师授课需要抢座'),
(2222, 'java程序设计', 3, null),
(3333, '数据库盖伦', 2, null),

(4444, '操作系统原理', 4, null);

添加学生选课记录

insert into tbsc VALUES
(default, 1001, 1111, '2016-9-1', 95),
(default, 1002, 1111, '2016-9-1', 94),
(default, 1001, 2222, now(), null),
(default, 1001, 3333, '2017-3-1', 85),
(default, 1001, 4444, now(), null),
(default, 1002, 4444, now(), null),
(default, 1003, 2222, now(), null),
(default, 1003, 3333, now(), null),
(default, 1005, 2222, now(), null),
(default, 1006, 1111, now(), null),
(default, 1006, 2222, '2017-3-1', 80),
(default, 1006, 3333, now(), null),
(default, 1006, 4444, now(), null),
(default, 1007, 1111, '2016-9-1', null),
(default, 1007, 3333, now(), null),
(default, 1007, 4444, now(), null),
(default, 1008, 2222, now(), null),

(default, 1010, 1111, now(), null);

-----------------------------------------以上为建表语句----------------------------------------------------------

1.查询所有学生信息

select * from tbstudent;

2.查询所有课程名称及学分

select cosname,coscredit from tbcourse;

3.查询所有女学生的姓名和出生日期

select stuname,stusex,stubirth from tbstudent where stusex=0;

4.查询所有80后学生姓名,性别和出生日期

select stuname,stusex,stubirth from tbstudent where stubirth < '1990-01-01' and stubirth >='1980-01-01';

5.查询姓王的学生姓名和性别.

select stuname,stusex from tbstudent where stuname like '王%';

6.查询姓郭的总共两个字的学生的姓名.

select stuname,stusex from tbstudent where stuname like '郭_';

7.查询姓郭的总共三个字的学生的姓名.

select stuname,stusex from tbstudent where stuname like '郭__';

8.查询名字中没有王字的学生的姓名

select stuname from tbstudent where stuname not like '王%';

9.查询没有录入家庭住址和照片的学生姓名.

select stuname from tbstudent where stuaddr is null and stuphoto is null;

10.查询学生选课的所有日期.

select distinct scdate from tbsc ;

11.查询学生姓名和生日按年龄从大到小排列

select stuname, stubirth from tbstudent order by stubirth asc;

12.查询所有录入了家庭住址的男学生的姓名,出生日期和家庭住址按年龄从小到大排列.

select stuname, stubirth, stuaddr from tbstudent WHERE
stusex=1 and stuaddr is not null order by stubirth;

13.查询年龄最大的学生的出生日期.

select s1.stubirth, s1.stuname from
(select min(stubirth) m from tbstudent) s
join tbstudent s1 on s1.stubirth = s.m;

14.查询年龄最小的学生的出生日期.

select s1.stubirth, s1.stuname from
(select max(stubirth) m from tbstudent) s
join tbstudent s1 on s1.stubirth = s.m;

15.查询男女学生的人数.

select stusex as '性别', count(*) from tbstudent  group by stusex;

16.查询课程编号为1111的课程的平均成绩.

select avg(score) from tbsc where cid=1111;

17.查询学号为1001的学生所有课程的总成绩

select sum(score) from tbsc where sid=1001;

18.查询每个学生的学号和平均成绩,null值处理为0

select sid,ifnull(avg(score),0) from tbsc group by sid;

19.查询平均成绩大于等于90分的学生的学好和平均成绩.

select t.sid, t.a from
(select sid,avg(score) a from tbsc group by sid) t
 where t.a>=90; 

20.查询年龄最大的学生的姓名.

select t1.stuname, t1.stubirth from
(select min(stubirth) m from tbstudent) t
join tbstudent t1 on t.m=t1.stubirth;

21.查询选了两门以上的课程的学生姓名

select t2.stuname, t1.x as '课程数目' from
(select count(*) x,sid  from tbsc group by sid) t1
join tbstudent t2 on t1.x >= 2 and t1.sid=t2.stuid;

22.查询选课学生的姓名和平均成绩

select t2.stuname, t1.x as '平均成绩' from
(select avg(score) x,sid  from tbsc group by sid) t1
join tbstudent t2 on t1.sid=t2.stuid;

23.查询学生姓名,所选课程名称和成绩

select t1.stuname, t2.cosname, t3.score from tbstudent 
t1 join tbsc t3 on t3.sid=t1.stuid join tbcourse t2 ON
t2.cosid=t3.cid order by t1.stuid;

24.查询每个学生的姓名和选课数量

select t2.stuname,ifnull(t1.c,0) as '课程数目'from
(select sid,count(*) c from tbsc group by sid) t1 right
join tbstudent t2 on t2.stuid=t1.sid;

mysql sql语句调优

-
  • 1970年01月01日 08:00

查询每个学生的各科成绩sql语句

数据库中有三个表 Student , Course, Grade 分别表示 学生, 课程,成绩 表的结构如下: Student( studentId, name, sex) 分别表示: 学号,姓名...
  • Java_WuYY
  • Java_WuYY
  • 2016-03-22 16:22:17
  • 3624

关于学生成绩的sql server 查询操作 经典实用实例

关于三个表: 学生信息表, 成绩表,课程表进行组合查询的操作 ,话不多说,先上表信息。 学生成绩表 学生信息表 课程信息表 方便大家操作,附上创建表格记录代码,直接摘取就好CREA...
  • qq_32543377
  • qq_32543377
  • 2017-05-08 16:57:52
  • 1837

mysql统计-关于学生成绩

转载地址http://blog.csdn.net/suntanyong88/article/details/7683089 问题: 1.   计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)...
  • mayanyun2013
  • mayanyun2013
  • 2016-03-10 13:00:14
  • 5094

查询学生平均成绩及其名次

 查询学生平均成绩及其名次Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,...
  • wang4721
  • wang4721
  • 2009-11-13 18:22:00
  • 1307

SQL语句练习一/学生选课系统查询

学生选课系统1.创建学生选课系统2.切换数据库3.创建学生表 tbstudent主键stuid ,姓名stuname,性别stusex,生日stubirth,电话stutel,住址stuaddr,照片...
  • qq_41637554
  • qq_41637554
  • 2018-04-17 19:23:01
  • 33

学生各门课程成绩统计SQL语句大全

学生成绩表(stuscore): 姓名:name 课程:subject 分数:score 学号:stuid 张三 数学 89 1 张三 语文...
  • OceanRay1230
  • OceanRay1230
  • 2013-06-25 17:45:52
  • 2525

mysql查询练习

Sutdent表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id ...
  • qq_27991659
  • qq_27991659
  • 2016-05-22 09:58:52
  • 3579

mysql经典查询练习

一、设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2...
  • qq_23994787
  • qq_23994787
  • 2017-08-14 15:01:20
  • 1276

MySQL的空值查询

数据表中,某些列的值可能为空值——NULL,空值不同于0,也不同于空字符串。 MySQL中,使用IS NULL来判断字段的值是否为空值。 SELECT * | 字段名1,字段名2,…… FROM...
  • nangeali
  • nangeali
  • 2017-07-01 20:13:32
  • 1213
收藏助手
不良信息举报
您举报文章:SQL语句练习一/学生选课系统查询
举报原因:
原因补充:

(最多只允许输入30个字)