第三周作业
创建学生管理数据库studentmanager
DROP DATABASE if exists studentmanager;
CREATE DATABASE if not exists studentmanager;
创建学生管理数据库studentmanager中的各表:
department(系部表)
|
字段名 |
数据类型 |
约 束 |
说明 |
|
dep_id |
char(10) |
主键 |
系部编号 |
|
dep_name |
varchar(20) |
非空、唯一 |
系部名称 |
|
dep_head |
varchar(10) |
系部主任 |
#系部表
drop table if exists department;
create table if not exists department
(
dep_id char(10) key comment '系部编号',
dep_name varchar(20) not null unique comment '系部名称',
dep_head varchar(10) comment '系部主任'
) engine=innodb;
teacher(教师表)
|
字段名 |
数据类型 |
约 束 |
说明 |
|
t_id |
char(10) |
主键 |
教师编号 |
|
t_name |
varchar(10) |
非空 |
教师姓名 |
|
t_sex |
ENUM |
取值只能为“男”或“女” |
性别 |
|
t_entrydate |
date |
默认值为当前系统日期(curdate()函数) |
入职日期 |
|
t_professor |
varchar(10) |
职称 |
|
|
t_salary |
Decimal(10,2) |
大于等于0 |
基本工资 |
|
dep_id |
char(10) |
外键,与系部表的“系部编号”关联 |
系部编号 |
注意:MySQL 日期类型及默认设置,参考如下:https://blog.csdn.net/gxy_2016/article/details/53436865
注意:解决无法创建外键问题:https://segmentfault.com/a/1190000020191540
MySQL创建表时添加外键约束:https://wubin.work/blog/articles/153
在创建表时使用enum()时,注意:https://blog.csdn.net/qq_35456045/article/details/105170880
#教师表
create table if not exists teachar
(
t_id char(10) key comment '教师编号',
t_name varchar(10) not null comment '教师名字',
t_sex ENUM('男','女') comment '性别',
t_entrydata timestamp default current_timestamp comment '入职时间',
t_professor varchar(10) comment '职称',
t_salary Decimal(10,2) unsigned comment '基本工资',
dep_id char(10) comment '系部编号',
constraint fk_t_id_dep_id
foreign key(t_id) references department(dep_id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
course(课程表)
|
字段名 |
数据类型 |
说 明 |
|
course_id |
char(10) |
课程号,主键 |
|
course_name |
varchar(20) |
课程名称,唯一键 |
|
course_credit |
Tinyint |
学分,取值范围在1-10之间 |
|
course_type |
char(10) |
课程类型 |
注意:学分的取值范围怎么表示现在还不太会。
1 #课程表 2 create table if not exists course 3 ( 4 course_id char(10) key comment '课程号', 5 course_name varchar(20) unique comment '课程名称', 6 course_credit Tinyint comment '学分', 7 course_type char(10) comment '课程类型' 8 )ENGINE=InnoDB DEFAULT CHARSET=utf8;
class(班级表)
|
字段名 |
数据类型 |
约 束 |
说明 |
|
c_id |
char(10) |
主键 |
班级编号 |
|
c_name |
varchar(20) |
非空 |
班级名称 |
|
c_mentor |
varchar(10) |
班主任 |
|
|
dep_id |
char(10) |
外键,与系部表的“系部编号”关联 |
系部编号 |
1 #班级表 2 create table if not exists class 3 ( 4 c_id char(10) key comment '班级编号', 5 c_name varchar(20) not null comment '班级名称', 6 c_mentor varchar(10) comment '班主任', 7 dep_id char(10) comment '系部编号', 8 constraint fk_id_id 9 foreign key(dep_id) references department(dep_id) 10 )engine=innodb default charset=utf8;
student(学生表)
|
字段名 |
数据类型 |
约 束 |
说明 |
|
s_id |
char(10) |
主键 |
学号 |
|
s_name |
varchar(10) |
非空 |
姓名 |
|
s_sex |
char(2) |
取值只能为“男”或“女” |
性别 |
|
s_borndate |
date |
出生日期 |
|
|
s_enrolldate |
date |
默认值为系统日期curdate() |
入学日期 |
|
s_telephone |
char(11) |
联系电话 |
|
|
s_address |
varchar(30) |
家庭住址 |
|
|
c_id |
char(10) |
外键,与班级表的班级号关联 |
班级编号 |
#学生表 create table if not exists student ( s_id char(10) key,#学号 s_name varchar(10) not null, #姓名 s_sex char(2), s_borndate timestamp, #出生日期 s_enrolldata timestamp default current_timestamp comment '入学日期', s_telephone char(11), #联系电话 s_address varchar(30), #家庭住址 c_id char(10), #班级编号, constraint fk_cid_cid foreign key(c_id) references class(c_id) )engine=innodb default charset=utf8;
s_c(选课表)
|
字段名 |
数据类型 |
约 束 |
说明 |
|
s_id |
char(10) |
与课程号组合做主键 外键,与学生表的学号关联 |
学号 |
|
course_id |
char(10) |
外键,与课程表的课程号关联 |
课程号 |
|
grade |
decimal(4,1) |
取值范围在0-100之间,默认值为0 |
成绩 |
1 #选课表 2 create table if not exists s_c 3 ( 4 s_id char(10) comment '学号', 5 course_id char(10) comment '课程号', 6 grade decimal(4,1) comment '成绩', 7 primary key(s_id,course_id), 8 constraint fk_courseId_courseID 9 foreign key(course_id) references course(course_id) 10 )engine=innodb default charset=utf8;
t_c(授课表)
|
字段名 |
数据类型 |
约 束 |
说明 |
|
t_id |
char(10) |
与课程号组合做主键 外键,与教师表的教师编号关联 |
教师编号 |
|
course_id |
char(10) |
外键,与课程表的课程号关联 |
课程号 |
|
term |
tinyint |
正整数 |
开课学期 |
1 #授课表 2 create table if not exists t_c 3 ( 4 t_id char(10) comment '教师编号', 5 course_id char(10) comment '课程号', 6 term tinyint unsigned comment '开课学期', 7 primary key(t_id,course_id), 8 constraint fk_tID_tID 9 foreign key(t_id) references teachar(t_id), 10 constraint fk_courseID_course_id 11 foreign key(course_id) references course(course_id) 12 )engine=innodb default charset=utf8;
完整代码如下
DROP DATABASE IF EXISTS studentmanager; CREATE DATABASE IF NOT EXISTS studentmanager; SHOW DATABASES; USE studentmanager;#系部表 DROP TABLE IF EXISTS department; CREATE TABLE IF NOT EXISTS department ( dep_id CHAR ( 10 ) KEY COMMENT '系部编号', dep_name VARCHAR ( 20 ) NOT NULL UNIQUE COMMENT '系部名称', dep_head VARCHAR ( 10 ) COMMENT '系部主任' ) ENGINE = INNODB DEFAULT CHARSET = utf8; SHOW TABLES; DESC department; DROP TABLE IF EXISTS teachar;#教师表 CREATE TABLE IF NOT EXISTS teachar ( t_id CHAR ( 10 ) KEY COMMENT '教师编号', t_name VARCHAR ( 10 ) NOT NULL COMMENT '教师名字', t_sex ENUM ( '男', '女' ) COMMENT '性别', t_entrydata TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '入职时间', t_professor VARCHAR ( 10 ) COMMENT '职称', t_salary DECIMAL ( 10, 2 ) UNSIGNED COMMENT '基本工资', dep_id CHAR ( 10 ) COMMENT '系部编号', CONSTRAINT fk_t_id_dep_id FOREIGN KEY ( t_id ) REFERENCES department ( dep_id ) ) ENGINE = INNODB DEFAULT CHARSET = utf8; SHOW TABLES; DESC teachar; DROP TABLE IF EXISTS course;#课程表 CREATE TABLE IF NOT EXISTS course ( course_id CHAR ( 10 ) KEY COMMENT '课程号', course_name VARCHAR ( 20 ) UNIQUE COMMENT '课程名称', course_credit TINYINT COMMENT '学分', course_type CHAR ( 10 ) COMMENT '课程类型' ) ENGINE = INNODB DEFAULT CHARSET = utf8; SHOW TABLES; DESC course; DROP TABLE IF EXISTS class;#班级表 CREATE TABLE IF NOT EXISTS class ( c_id CHAR ( 10 ) KEY COMMENT '班级编号', c_name VARCHAR ( 20 ) NOT NULL COMMENT '班级名称', c_mentor VARCHAR ( 10 ) COMMENT '班主任', dep_id CHAR ( 10 ) COMMENT '系部编号', CONSTRAINT fk_id_id FOREIGN KEY ( dep_id ) REFERENCES department ( dep_id ) ) ENGINE = INNODB DEFAULT charset = utf8; SHOW TABLES; DESC class; DROP TABLE IF EXISTS student;#学生表 CREATE TABLE IF NOT EXISTS student ( s_id CHAR ( 10 ) KEY,#学号 s_name VARCHAR ( 10 ) NOT NULL,#姓名 s_sex CHAR ( 2 ), s_borndate TIMESTAMP,#出生日期 s_enrolldata TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '入学日期', s_telephone CHAR ( 11 ),#联系电话 s_address VARCHAR ( 30 ),#家庭住址 c_id CHAR ( 10 ),#班级编号, CONSTRAINT fk_cid_cid FOREIGN KEY ( c_id ) REFERENCES class ( c_id ) ) ENGINE = INNODB DEFAULT charset = utf8; SHOW TABLES; DESC student; DROP TABLE IF EXISTS s_c;#选课表 CREATE TABLE IF NOT EXISTS s_c ( s_id CHAR ( 10 ) COMMENT '学号', course_id CHAR ( 10 ) COMMENT '课程号', grade DECIMAL ( 4, 1 ) DEFAULT 0 COMMENT '成绩', PRIMARY KEY ( s_id, course_id ), CONSTRAINT fk_courseId_courseID FOREIGN KEY ( course_id ) REFERENCES course ( course_id ) ) ENGINE = INNODB DEFAULT charset = utf8; SHOW TABLES; DESC s_c; DROP TABLE IF EXISTS t_c;#授课表 CREATE TABLE IF NOT EXISTS t_c ( t_id CHAR ( 10 ) COMMENT '教师编号', course_id CHAR ( 10 ) COMMENT '课程号', term TINYINT UNSIGNED COMMENT '开课学期', PRIMARY KEY ( t_id, course_id ), CONSTRAINT fk_tID_tID FOREIGN KEY ( t_id ) REFERENCES teachar ( t_id ), CONSTRAINT fk_courseID_course_id FOREIGN KEY ( course_id ) REFERENCES course ( course_id ) ) ENGINE = INNODB DEFAULT charset = utf8; SHOW TABLES; DESC t_c;

浙公网安备 33010602011771号