python-wen

  先创建以下3张基本表

1、学生信息表(Student):

2、课程表(Course):

 

 3、成绩表(Score):

 

 4、 将下列数据输入各个表中

 

 

 

 

 

建表SQL:

CREATE DATABASE Studentdb;
//学生信息表
CREATE TABLE Student (
Sno char(4) not null PRIMARY KEY,
Sname varchar(8) not null,
Sgender enum (\'男\',\'女\'),
Sbirth date,
Saddr varchar(50),
Sheight decimal(3,2),
Memo text
) character set utf8;

//课程表
CREATE TABLE Course(
Cno char(4) not null,
Cname varchar(50) not null,
Ccredit int 
)character set utf8;

//成绩表
CREATE TABLE Score (
Sno char(4) not null,
Cno char(4) not null,
Cscore decimal(3,1)
)character set utf8; 

//插入学生信息表
INSERT INTO Student(Sno,Sname,Sgender,Sbirth,Saddr,Sheight) values 
(0001,\'刘一平\',\'男\',\'1990-10-1\',\'温州市环城西路201号\',\'1.78\'),
(0002,\'张得民\',\'男\',\'1990-12-2\',\'杭州市下沙路22号\',\'1.65\'),
(0003,\'马东\',\'男\',\'1990-7-4\',\'宁波市中山北道20号\',\'1.71\'),
(0004,\'肖海燕\',\'女\',\'1990-3-15\',\'温州市越秀北路43号\',\'1.65\'),
(0005,\'张民华\',\'女\',\'1991-5-15\',\'宁波市艮山路7号\',\'1.63\'); 

//插入课程信息
INSERT INTO Course values 
(0001,\'计算机基础\',\'2\'),
(0002,\'管理学原理\',\'3\'),
(0003,\'数据库技术\',\'3\'),
(0004,\'项目管理\',\'2\'),
(0005,\'毕业论文\',\'10\'); 

//插入学生成绩信息
INSERT INTO Score values
(0001,0001,80.0), 
(0001,0002,90.0),
(0001,0003,70.0),
(0001,0004,85.0),
(0002,0001,78.0),
(0002,0002,NULL),
(0002,0003,77.0),
(0002,0004,67.0),
(0003,0001,66.0), 
(0003,0002,76.0),
(0003,0003,NULL),
(0003,0004,73.0);

  

 

熟练度练习:

1、使用SQL语句修改学生信息表(Student)中字段属性如下:姓名 varchar 20 N    

ALTER table Student MODIFY Sname varchar(20) not null;

2、使用SQL语句删除学生信息表(Student)中“备注”字段

ALTER table Student drop Memo;

3、查询全体学生的详细记录

SELECT * FROM Student;

4、查询学生信息表中学生的姓名和地址信息

SELECT Sname,Saddr FROM Student;

5、查询学生信息表中“刘”姓学生的信息

SELECT * FROM Student where Sname LIKE \'刘%\';

6、查询学生信息表中姓名含“民”的学生的信息

SELECT * FROM Student where Sname LIKE \'%民%\'; 

7、查询所有身高1.75以上的男学生的学号和姓名

SELECT Sno,Sname FROM Student where Sgender=\'男\' and Sheight>1.75;

8、查询所有来自“宁波”的学生姓名、性别和年龄

SELECT Sname,Sgender,2020-YEAR(Sbirth) as Sage from Student where Saddr LIKE \'%宁波%\';

9、查询没有考试成绩的学生学号和课程编号

SELECT Sno,Cno from Score where Cscore is NULL;

10、查询所有参加过考试的学生学号

SELECT DISTINCT(Sno) from Score where Cscore is not null;

11、查询所有学分不小于3的课程名

SELECT Cname from Course where Ccredit>=3;

12、查询学分在1~5范围内的课程编号和课程名

SELECT Cno,Cname FROM Course where Ccredit BETWEEN 1 AND 5;
//
SELECT Cno,Cname FROM Course where Ccredit >=1 and Ccredit <=5;

13、查询“数据库技术”课程的信息

SELECT * FROM Course where Cname=\'数据库技术\';

14、计算“0003”号课程中所有参加过考试的学生平均分

SELECT AVG(Cscore) FROM Score where Cno=0003;

15、查询选修“0002”号课程的学生的成绩最高分

SELECT MAX(Cscore) FROM Score where Cno=0002;

16、统计参加“0001”号课程考试的学生人数

SELECT count(*) FROM Score Where Cno=0001;

17、查询每个学生及其选修课程的情况(包括没有选修课程的学生)

SELECT * FROM Student LEFT OUTER JOIN Score ON (Student.Sno=Score.Sno);  #LEFT OUTER JOIN=LEFT JOIN

18、查询每门选修课以及选修该课程的学生信息

SELECT Course.Cname,Student.* FROM Student,Course where Student.Sno=Course.Cno;

 

  

  

  

 

  

  

  

  

 

  

  

  

  

  

  

  

  

 

 

分类:

技术点:

相关文章: