本文是由YuDrag独家创作的————————作业
如有错误之处,还请各位大佬指正,小弟课下之余将认真修改。感谢各位!!!
下次作业再见!!!
学生信息管理数据库:面对学生和教师信息进行存储和进行相关的操作
面对不同的用户对象,将存储的不同的信息,没有权限管理!!!
学生:学生的基础信息:姓名,性别,年龄,电话,班级以及选课信息
老师:老师的基础信息:姓名,性别,年龄,电话,以及教授科目
这里的学生与科目之间是一对多的关系,一个学生可以选择多个科目
老师和科目则是一对一的关系,一个老师教授一个科目
接下来进行ER图:
将ER图转化为关系模式:
学生(姓名,性别,学号,科目,班级,电话,年龄)
教师(姓名,性别,教师编号,电话,年龄,教授科目)
设计表格:
Student表
字段名 |
数据类型 |
长度 |
是否主键 |
说明 |
stu_num |
int |
4 |
是 |
学生表主键 |
stu_name |
varchar |
20(一个汉字三个字节) |
否 |
学生姓名 |
stu_gender |
varchar |
4 |
否 |
学生性别 |
stu_cla |
varchar |
20 |
否 |
学生班级 |
stu_tel |
int |
4 |
否 |
学生电话 |
stu_age |
int |
4 |
否 |
学生年龄 |
Teacher表
字段名 |
数据类型 |
长度 |
是否主键 |
说明 |
tea_num |
int |
4 |
是 |
教师表主键 |
tea_name |
varchar |
20 |
否 |
教师姓名 |
tea_gender |
varchar |
4 |
否 |
教师性别 |
tea_tel |
int |
4 |
否 |
教师电话 |
tea_age |
int |
4 |
否 |
教师年龄 |
Course表
字段名 |
数据类型 |
长度 |
是否主键 |
说明 |
Cou_id |
int |
4 |
是 |
主键 |
cou_name |
varchar |
20 |
否 |
课程名称 |
tea_num |
int |
4 |
否 |
教师编号 |
Score表
字段名 |
数据类型 |
长度 |
是否主键 |
说明 |
stu_num |
varchar |
20 |
是 |
学生编号 |
tea_num |
int |
4 |
否 |
教师编号 |
score |
int |
4 |
否 |
分数 |
Pickcourse表:
字段名 |
数据类型 |
长度 |
是否主键 |
说明 |
Id |
int |
4 |
是 |
主键 |
stu_id |
int |
4 |
否 |
学生编号 |
cou_id |
int |
4 |
否 |
课程编号 |
创建表格:
2.创建student表:
mysql> create table student(
-> stu_num int(4) primary key auto_increment,
-> stu_name varchar(20),
-> stu_gender varchar(4),
-> stu_age int(4)
-> stu_tel int(4),
-> stu_cla varchar(20)
2.创建teacher表:
mysql> create table teacher(
-> tea_num int(4),
-> tea_name varchar(20),
-> tea_gender varchar(4),
-> tea_tel int(4),
-> tea_age int(4),
mysql> ALTER TABLE teacher ADD PRIMARY KEY(tea_num);
3.创建course表:
mysql> create table course(
-> cou_name varchar(20),
-> tea_num int(4));
mysql> ALTER TABLE course add cou_id int(4) primary key FIRST;
4.创建score表:
mysql> create table score(
-> stu_num int(4),
-> tea_num int(4),
-> score int(4));
mysql> ALTER TABLE score ADD PRIMARY KEY(tea_num,stu_num);
插入数据:
1.向student表插入多条数据:
INSERT INTO student(stu_name,stu_gender,stu_age,stu_tel,stu_cla) VALUES('张一','男',18,12345678,'java'),('张二','男',19,123458,'c++'),('张三','男',20,1345678,'java'),('张四','女',22,125678,'java'),('张五','女',24,15678,'c++'),('张六','男',54,1234345678,'java'),('张七','男',43,1234538,'c++');
2.向course表插入多条数据:
mysql> INSERT INTO course(
-> cou_name,tea_num) values(
-> '数学',01),('语文',02),('英语',03);
3.向teacher表中插入多条数据:
mysql> INSERT INTO teacher(
-> tea_name,tea_gender,tea_tel,tea_age) values(
-> '数学老师','男','123',54),('语文老师','男','143',34),('英语老师','男','145',65);
4.向scores表中插入多条数据:
Insert into score values (1,1,78),(1,2,54),(1,3,70),(2,1,38),(2,2,8),(2,3,48),(3,1,98),(3,2,78),(3,3,68),(4,1,99),(4,2,78),(4,3,98),(5,1,28),(5,2,58),(5,3,58),(6,1,88),(6,2,74),(6,3,18),(7,3,34),
(7,2,72),(7,1,89);
基础的数据操作:
#5.1 查询学生所有信息
SELECT * FROM student;
#5.2 查询老师所有信息
SELECT * FROM teacher;
#5.3 查询选课了XX科目的学生信息
SELECT c.cou_name 科目, s.* FROM student s,pickcourse p,course c WHERE s.stu_num = p.stu_id AND p.cou_id = c.cou_id AND c.cou_id = 1;
#5.4 对应科目的老师信息
SELECT c.cou_name 科目,t.* FROM teacher t,course c WHERE t.tea_num = c.tea_num AND c.cou_id = 1;
#5.5 修改学生信息
UPDATE student SET stu_name = '张二二', stu_age = 45 WHERE stu_num = 2;
#5.6 删除学号为xx的学生信息
DELETE FROM student WHERE stu_num = 6;
#5.7 学号为xx的学生选择xx课程
SELECT p.cou_id 学科编号, c.cou_name 学科名称 FROM student s,pickcourse p,course c WHERE s.stu_num = 1 AND s.stu_num = p.stu_id AND p.cou_id = c.cou_id;
#5.8 查询年龄大于20岁的学生信息
SELECT student.* FROM student WHERE stu_age > 20;
#5.9 学号为xx的学生修改其电话号码
UPDATE student SET stu_tel = 1213234 WHERE stu_num = 2;