/*建库语句如果错误或者没有写,扣5分*/
create database student;
use student;
/*所有的建表语句:
1、create table语法不通过,每个扣对应80%分数,否则:
2、类型长度太大(正常值5倍以上),每个扣1分
3、忘记写primary key关键字,或者关键字定义错误,每个扣3分
4、缺少foreign key,或者外键定义错误,每个扣1分
*/
/*本表分数5分*/
CREATE TABLE CLASS(
CLSNO CHAR(2) NOT NULL ,
CLSNM VARCHAR(50) NOT NULL ,
PRIMARY KEY (CLSNO)
);
/*本表分数10分*/
CREATE TABLE COURSE(
CNO CHAR(3) NOT NULL ,
CLSNO CHAR(2) NOT NULL ,
CNM VARCHAR(30) NULL ,
TNM VARCHAR(30) NULL ,
CREDIT NUMERIC(2,1) NULL,
FCNO CHAR(3) NULL,
PRIMARY KEY (CNO,CLSNO),
FOREIGN KEY(CLSNO) REFERENCES CLASS(CLSNO)
);
/*本表分数5分*/
CREATE TABLE GRP(
GRPNO SMALLINT NOT NULL ,
GRPNM VARCHAR(40) NOT NULL ,
GRPADM CHAR(10) NULL ,
PRIMARY KEY (GRPNO)
);
/*本表分数15分,如果没有实现性别取值约束,扣5分*/
CREATE TABLE STU(
SNO CHAR(10) NOT NULL ,
SNM VARCHAR(10) NOT NULL ,
SEX CHAR(2) CHECK(SEX='男' OR sex='女'), # 如果是低版本的mysql,类型直接用 ENUM('男','女')
MOBILE CHAR(11) NULL ,
BIRTHDAY DATE NULL ,
NATNM VARCHAR(30) NOT NULL ,
CLSNO CHAR(2) NULL,
GRPNO SMALLINT NULL,
PRIMARY KEY (SNO),
FOREIGN KEY(CLSNO) REFERENCES CLASS(CLSNO),
FOREIGN KEY(GRPNO) REFERENCES GRP(GRPNO)
);
/*本表分数10分*/
CREATE TABLE STUDY (
SNO CHAR(10) NOT NULL,
CNO CHAR(3) NOT NULL,
SCORE INT NULL,
PRIMARY KEY(SNO,CNO),
FOREIGN KEY(SNO) REFERENCES STU(SNO),
FOREIGN KEY(CNO) REFERENCES COURSE(CNO)
);
/*10分,每个字段5分,分开写不算错,但扣1分*/
ALTER TABLE GRP
ADD BEAUTY INT NULL ,
ADD BEAST INT NULL;
/*5分*/
ALTER TABLE STUDY
MODIFY SCORE DECIMAL (4, 0) NULL;
/*可分开成多条insert语句,5分*/
INSERT INTO `class` VALUES ('01','软件工程2001班'),('02','软件工程2002班'),('03','软件工程2003班'),('04','软件工程2004班'),('05','软件工程2005班'),('06','软件工程2006班'),('07','软件工程2007班'),('08','软件工程2008班'),('09','软件工程2009班'),('10','软件工程2010班'),('11','软件工程2011班'),('12','软件工程2012班'),('13','软件工程2013班'),('14','软件工程2014班'),('15','软件工程2015班'),('20','其他班');
/*可分开成多条insert语句,5分*/
INSERT INTO `grp` VALUES (1,'第1组',NULL,NULL,NULL),(2,'第2组',NULL,NULL,NULL),(3,'第3组',NULL,NULL,NULL),(4,'第4组',NULL,NULL,NULL),(5,'第5组',NULL,NULL,NULL),(6,'第6组',NULL,NULL,NULL),(7,'第7组',NULL,NULL,NULL),(8,'第8组',NULL,NULL,NULL),(9,'第9组',NULL,NULL,NULL),(10,'第10组',NULL,NULL,NULL),(11,'第11组',NULL,NULL,NULL),(12,'第12组',NULL,NULL,NULL),(13,'第13组',NULL,NULL,NULL);
/*可分开成多条insert语句,10分,数据可以是任何符合要求的数据*/
INSERT INTO `course` VALUES
('C01','05','数据库原理','曾长清',3.5,NULL),
('C02','05','Web应用技术(JavaEE)实验','邹华兴',2.0,NULL),
('C03','05','单片机原理与接口技术','邹春华',3.0,NULL),
('C04','09','操作系统','陈悦',3.5,NULL),
('C05','09','计算机通信与网络','林德钰',3.5,NULL),
('C06','05','思想道德修养与法律基础','王萍',3.0,NULL),
('C07','05','马克思主义基本原理','黎环',3.0,NULL),
('C09','05','学术英语','Purugganan Jeffy',2.0,NULL),
('C10','20','数据结构(C语言)版','闵卫东',4.0,NULL),
('C11','20','高级语言程序设计','张三',4.0,NULL),
('C12','20','C语言程序设计','李四',4.0,NULL),
('C13','20','Java语言程序设计','周翔',4.0,NULL);
/*写入个人信息,10分*/
INSERT INTO stu(SNO,SNM,SEX,BIRTHDAY,NATNM) VALUES ('9999999999','曾长清','男','19XX-XX-XX','江西-临川');
/*
4.附加题(数据修改,UPDATE命令)
自学课本P62,尝试完成(注意where条件):
①将STU表中的手机号字段MOBILE、班级号CLSNO字段用update命令修改为自己的手机号及所在的班级编号
update stu set mobile='13900000000',clsno='20' where sno='9999999999';
②将自己的分数减少2分(没有数据,只写语句)
update study set score = score - 2 where sno='9999999999';
评分:
如果写了且正确,每个加5分;如果写了但不正确,每个加1~2分;注意:加分后整个上机作业不得超过100分
*/
/*5.删除所有表格的数据 (5分)
顺序不对,扣除2分
*/
delete from study; /*这条必须为第1个被删除的*/
delete from stu;
delete from grp; /*这条必须在删除stu之后*/
delete from course;
delete from class; /*这条必须在删除stu之后*/
/*6.删除所有表,顺序要求跟上面删除数据一样(5分)
顺序不对,扣除2分*/
drop table study;
drop table stu;
drop table grp;
drop table course;
drop table class;
/*7.删除数据库*/
drop database student;