创建学生成绩数据库
一、新建数据库
数据库名为XSCJ。
create database XSCJ;
二、进入新建的库中,复制并执行以下SQL语句完成建表操作
表1:student表
student表的创建
CREATE TABLE student (
sno char(9) NOT NULL COMMENT ‘学号’,
sname varchar(10) NOT NULL COMMENT ‘姓名’,
ssex char(2) default NULL COMMENT ‘性别’,
sbirthday date default NULL COMMENT ‘年龄’,
sdept varchar(8) NOT NULL COMMENT ‘系部’,
PRIMARY KEY (sno)
);
表2:course表
–course表的创建
CREATE TABLE course (
cno char(5) NOT NULL COMMENT ‘课程编号’,
cname varchar(10) NOT NULL COMMENT ‘课程名称’,
ccredit char(5) NOT NULL COMMENT ‘学分’,
PRIMARY KEY (cno)
);
表3:sc表
–sc表的创建
CREATE TABLE sc (
sno char(9) NOT NULL COMMENT ‘学号’,
cno char(4) NOT NULL COMMENT ‘课程编号’,
grade float default NULL COMMENT ‘成绩’,
PRIMARY KEY (sno,cno)
);
三、复制以下SQL语句,分别向三个表中插入数据
–向student表插入数据
INSERT INTO student VALUES
(‘’, ‘赵菁菁’, ‘女’, ‘1994-08-10’, ‘网络系’),
(‘’, ‘李勇’, ‘男’, ‘1993-02-24’, ‘网络系’),
(‘’, ‘张力’, ‘男’, ‘1992-06-12’, ‘网络系’),
(‘’, ‘张衡’, ‘男’, ‘1995-01-04’, ‘软件系’),
(‘’, ‘张向东’, ‘男’, ‘1992-12-24’, ‘软件系’),
(‘’, ‘张向丽’, ‘女’, ‘1994-04-12’, ‘软件系’),
(‘’, ‘王芳’, ‘女’, ‘1993-10-05’, ‘网络系’),
(‘’, ‘王明生’, ‘男’, ‘1991-09-16’, ‘通信系’),
(‘’, ‘王小丽’, ‘女’, ‘1993-08-18’, ‘通信系’),
(‘’, ‘李晨’, ‘女’, ‘1993-12-01’, ‘通信系’),
(‘’, ‘张毅’, ‘男’, ‘1993-02-24’, ‘外语系’),
(‘’, ‘杨丽华’, ‘女’, ‘1994-02-01’, ‘英语系’),
(‘’, ‘李芳’, ‘女’, ‘1992-05-03’, ‘通信系’),
(‘’, ‘张丰毅’, ‘男’, ‘1995-05-05’, ‘网络系’),
(‘’, ‘李雷’, ‘女’, ‘1994-03-02’, ‘英语系’),
(‘’, ‘刘杜’, ‘男’, ‘1992-07-02’, ‘中文系’),
(‘’, ‘刘星耀’, ‘男’, ‘1994-06-17’, ‘数学系’),
(‘’, ‘李贵’, ‘男’, ‘1994-02-17’, ‘英语系’),
(‘’, ‘林自许’, ‘男’, ‘1991-07-23’, ‘网络系’),
(‘’, ‘马翔’, ‘男’, ‘1993-09-24’, ‘网络系’),
(‘’, ‘刘峰’, ‘男’, ‘1994-01-18’, ‘网络系’),
(‘’, ‘朱晓鸥’, ‘女’, ‘1994-01-01’, ‘软件系’),
(‘’, ‘牛站强’, ‘男’, ‘1993-07-28’, ‘中文系’),
(‘’, ‘李婷婷’, ‘女’, ‘1993-01-29’, ‘通信系’),
(‘’, ‘严丽’, ‘女’, ‘1992-07-12’, ‘数学系’);
–向course表中插入数据
INSERT INTO course VALUES
(‘1’,‘数据库’,‘4’),
(‘10’,‘人工智能’,‘2’),
(‘2’,‘数学’,‘2’),
(‘3’,‘信息系统’,‘4’),
(‘4’,‘操作系统’,‘3’),
(‘5’,‘数据结构’,‘4’),
(‘6’,‘数据处理’,‘2’),
(‘7’,‘PASCAL语言’,‘4’),
(‘8’,‘大学英语’,‘4’),
(‘9’,‘计算机网络’,‘4’);
–向sc表中插入数据
INSERT INTO sc VALUES
(‘’, ‘1’, 75),
(‘’, ‘4’, 62),
(‘’, ‘5’, 58),
(‘’, ‘7’, 70),
(‘’, ‘1’, 85),
(‘’, ‘3’, 53),
(‘’, ‘4’, 85),
(‘’, ‘1’, 86),
(‘’, ‘1’, 74),
(‘’, ‘2’, 46),
(‘’, ‘1’, 58),
(‘’, ‘10’, 65),
(‘’, ‘2’, 89),
(‘’, ‘1’, 84),
(‘’, ‘2’, 65),
(‘’, ‘2’, 72),
(‘’, ‘2’, 76),
(‘’, ‘2’, 96),
(‘’, ‘8’, 96),
(‘’, ‘8’, 72),
(‘’, ‘8’, 10),
(‘’, ‘8’, 0),
(‘’, ‘8’, 0),
(‘’, ‘8’, 68),
(‘’, ‘6’, 58),
(‘’, ‘9’, 54);
1、select sname, sno, ssex from student where sname like ‘张%’;
查询所有姓“张”学生的姓名、学号和性别。
2、select sname from student where sname like ‘李____’;
查询姓“李”且全名为三个汉字的学生的姓名。
3、select sname, sno from student where sname like ‘__丽%’;
查询名字中第2个字为“丽”字的学生的姓名和学号。
4、select sname, sno from student where sname not like ‘陈%’;
查询所有不姓“陈”的学生姓名。
5、select sno, cno from sc where grade is not null;
查所有有成绩的学生学号和课程号。
6、select sno,grade from sc where cno = ‘1’ order by grade desc;
查询选修了1号课程的学生的学号及其成绩,查询结果按分数降序排列。
7、select * from student order by sdept asc,sbirthday asc;
查询全体学生情况,查询结果按所在系号升序排列,同一系中的学生按年龄降序排列。
8、select count() from student;
查询学生总人数。
9、select count() from sc, course where course.cname =‘数学’ and course.cno = sc.cno;
查询选修了数学课程的学生人数。
10、select avg(grade), max(grade) from sc where cno = ‘1’;
计算1号课程的学生平均成绩,最高成绩。
11、Select cno, count(*) from sc group by cno;
求各个课程号及相应的选课人数。
12、select sno from sc group by sno having count(sno)>3;
查询选修了3门以上课程的学生学号。