一、创建表
1. 用SQL语言创建Student表
create table Student(
Sno char(10) not null,
Sname varchar(10),
Ssex char(2),
Sbirthday date,
Sdept char(16) ,
Speciality varchar(20) ,
Sclass char(8)
);
2. 用SQL语言创建Course表
create table Course(
Cno char(5) not null,
Cname varchar(20) not null
);
3. 用SQL语言创建SC表
create table SC(
Sno char(10) not null,
Cno char(8) not null,
Degree decimal(5,1)
);
4. 用SQL语言创建Teacher表
create table Teacher(
Tno char(10) not null,
Tname varchar(10),
Tsex char(2),
Tbirthday date,
Tdept char(16)
);
5. 用SQL语言创建Teaching表
create table Teaching(
Cno char(3) not nul1,
Tno char(3) not null,
Cterm tinyint(1)
);
二、添加表内容
1. 添加student表内容
insert into `student`(Sno, Sname,Ssex,Sbirthday, dept ,Speciality,sclass) values
( 's1','李勇',17,'男','1987-01-12','CS','计算机应用','01311'),
( 's2','刘晨',18, '女','1988-06-04','IS','电子商务','01311 '),
( 'S3','王敏',18,'女','1988-12-23','MA','数学','01312'),
( 'S4','张立',18,'男','1988-08-25','IS','电子商务','01312');
select * from Student;
2. 添加Course表内容
insert into Course(Cno,Cname) values
('C01','数据库'),
('C02','数学'),
('C03','信息系统'),
('C04','操作系统');
select * from Course;
3. 添加sc表内容
insert into sc(Sno,Cno,Degree) values
('S1','C01',92),
('S2','C01',85),
('S2','C03',88),
('S3','C03',90),
('S1','C03',80),
('S2','C01',91),
('S4','C02',75),
('S4','C01',87);
select * from SC;
4. 添加Teacher表内容
insert into Teacher(Tno,Tname,Tsex,Tbirthday,Tdept) values
( '101','李新','男','1977-01-12','CS'),
( '102','钱军','女','1968-06-04','CS'),
( '201','王小花','女','1979-12-23','IS'),
( '202','张小青','男', '1968-08-25','IS');
select * from Teacher;
5. 添加Teaching表内容
insert into Teaching(Cno,Tno,Cterm) values
( 'Co1','101',2),
( 'Co2','102',1),
( 'Co3','201',3),
( 'Co4','202',4);
select * from Teaching;
三、查询
(1) 找出所有被学生选修了的课程号
(2) 找出 01311 班女学生的个人信息
(3) 找出 01311 班和 01312 班的学生姓名,性别,出生年份
(4) 找出所有姓李的学生的个人信息
(5) 找出学生李勇所在班级的学生人数
写法1:查询与李勇班级号相同的 Student 即学生元组个数
写法2:查询 Class 的班级人数属性 Number
注:两种写法的区别在于如何理解题目要求的“学生人数”:
前者是数据库中的学生数据个数,后者是班级的人数数据
显然是题目设计缺陷导致了两者的一致性无法得到保证
(6) 找出名为操作系统的课程平均成绩,最高分,最低分
(7) 找出选修了课程的学生人数
(8) 找出选修了课程操作系统的学生人数
(9) 找出 2000 级计算机软件班的成绩为空的学生姓名
四、SELECT语句的嵌套
(1)找出与李勇在同一个班级的学生信息
(2)找出所有与李勇有相同选修课程的学生信息
(3)找出年龄介于学生李勇和 25 岁之间的学生信息(已知李勇年龄小于 25 岁)
BETWEEN...AND...查询结果包含范围左右边界
(4)找出选修了课程操作系统的学生学号和姓名;
(5)找出没有选修1号课程的学生姓名;
(6)找出选修了全部课程的学生姓名。
五、升降序
(1)查询选修了 3 号课程的学生学号及其成绩,并按成绩降序排列
(2)查询全体学生信息,查询结果按班级号升序排列,同一班级学生按年龄降序排列
(3)求每个课程号及相应的选课人数
(4)查询选修了 3 门以上课程的学生学号
六、增删改查综合
⑴向Student表中插入迁录("20050203"."张静","1981-3-21","女","CS","电子商务")
⑵插入学号为“20050302”、姓名为“李四”的学生信息
(3)将学号为“20050202”的学生姓名改为"张华".系别改为"CS",专业改为"多媒体技术"
(4)将“李勇”同学的专业改为“计算机信息管理”
(5)删除学号为“20050302”的学生记录
(6)删除“计算机系”所有学生的选课记录
(7)删除SC表中尚无成绩的选课记录
(8)把“张晨”同学的成绩全部删除