实验一SPJ数据定义
(一部分图是在实验课上做时拍的,另一部分是在自己电脑上做时拍的)
1.创建用于学生管理的数据库,数据库名为XSGL,包含学生信息,课程信息和选课信息。
数据库XSGL包含下列3 个表:
(l) student:学生基本信息。
(2)course:课程信息表。
(3)sc:学生选课表。
2.用ALTER语句修改表结构;
- STUDENT表中增加一个字段入学时间scome,
- alter table student
- add scome date
- 删除STUDENT表中sdept字段;
- alter table student
- drop column sdept
- 删除创建的SC表中CNO字段和COURSE表CNO字段之间的外键约束;
- alter table sc
- DROP fk_course
- 重建3)中删除的约束
- alter table sc
- add constraint fk_course foreign key(cno) references course(cno)
- 用CREATE INDEX语句在表STUDENT的SNAME字段上创建唯一索引;
- Create unique index QU_sna on student(sname)
- 用DROP语句删除上题中创建的索引;
- drop index QU_sna on student
用SQL语句建立如下MySPJ数据库,包括S,P,J,和SPJ四个基本表(教材第二章习题6中的四个表,并添加教材示例数据),要求实现关系的三类完整性。
S(SNO,SNAME,STATUS,CITY);
P(PNO,PNAME,COLOR,WEIGHT);
J(JNO,JNAME,CITY);
SPJ(SNO,PNO,JNO,QTY)
供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。
供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
代码如下:
Create database MYSPJ;
use MYSPJ;
CREATE TABLE S
(SNO CHAR(2),
SNAME CHAR(6),
STATUS SMALLINT,
CITY CHAR(4),
);
CREATE TABLE P
(PNO CHAR(2),
PNAME CHAR(10),
COLOR CHAR(2),
WEIGHT SMALLINT,
);
CREATE TABLE J
(JNO CHAR(2),
JNAME CHAR(10),
CITY CHAR(4),
);
CREATE TABLE SPJ
(SNO CHAR(2),
PNO CHAR(2),
JNO CHAR(2),
QTY SMALLINT);
INSERT INTO S
VALUES('S1','精益',20,'天津');
INSERT INTO S
VALUES('S2','盛锡',10,'北京');
INSERT INTO S
VALUES('S3','东方红',30,'北京');
INSERT INTO S
VALUES('S4','丰盛泰',20,'天津');
INSERT INTO S
VALUES('S5','为民',30,'上海');
INSERT INTO J
VALUES('J1','三建','北京');
INSERT INTO J
VALUES('J2','一汽','长春');
INSERT INTO J
VALUES('J3','弹簧厂','天津');
INSERT INTO J
VALUES('J4','造船厂','天津');
INSERT INTO J
VALUES('J5','机车厂','唐山');
INSERT INTO J
VALUES('J6','无线电厂','常州');
INSERT INTO J
VALUES('J7','半导体厂','南京');
insert into SPJ values('s1','p1','j1',200),
('s1','p1','j3',100),
('s1','p1','j4',700),
('s1','p2','j2',100),
('s2','p3','j1',400),
('s2','p3','j2',200),
('s2','p3','j4',500),
('s2','p3','j5',400),
('s2','p5','j1',400),
('s2','p5','j2',100),
('s3','p1','j1',200),
('s3','p3','j1',200),
('s4','p5','j1',100),
('s4','p6','j3',300),
('s4','p6','j4',200),
('s5','p2','j4',100),
('s5','p3','j1',200),
('s5','p6','j2',200),
('s5','p6','j4',500);
- 用SQL语句实现对MySPJ数据库中表结构的修改
- S表的Sname属性列的取值唯一。
alter table s add unique(sname);
- P表中Weight属性列的取值范围在1-50之间。
alter table P
add check(weight>=0 and weight<=50);
- J表中Jname的取值不能为空,并且是唯一的。
alter table J
alter column Jname char(20) not null ;
alter table J add constraint UQ_Jna unique(Jname);
- SPJ表中QTY属性列的类型是int。
alter table SPJ
alter column QTY int;
- 给S表增加Sphone和Semail两列,分别用来存放供应商的电话号码和电子邮箱。
Alter table S
Add Sphone char(30);
Alter table S
Add Semail char(30);
- 删除Jname属性列的唯一约束。
alter table J
drop constraint UQ_Jna;
- 删除S表中属性列Semail。
alter table S
drop column Semail;