本片文章分两个部分,将实现表的定义,基本表的修改操作和基于以上内容的巩固复习。
实验1.1
--1.参照课本40页“学生选课”数据库示例,判断各个关系的主码,外码和各属性的数据类型,进行S、C、SC三个表格的定义。
如下图所示:
首先进行学生表S的定义:
-- 定义学生表 S
CREATE TABLE S (
Sno CHAR(8) PRIMARY KEY, -- 学号,主码
Sname VARCHAR(20) UNIQUE, -- 学生姓名
Ssex CHAR(6), -- 学生性别
Sbirthday DATE, -- 学生生日
Smajor VARCHAR(20)--主修专业
);
接着进行course(C)表的定义:
CREATE TABLE C (
Cno CHAR(5) PRIMARY KEY, -- 课程号,主码
Cname VARCHAR(40) NOT NULL, -- 课程名称
Ccredit SMALLINT, -- 课程学分
Cpno CHAR(5),
FOREIGN KEY (Cpno) REFERENCES C(Cno)
);
最后进行SC表的定义:
CREATE TABLE SC (
Sno CHAR(8), -- 学号
Cno CHAR(5), -- 课程号
Grade SMALLINT, -- 成绩
Semester CHAR(5), --开课学期
Teachingclass CHAR(8), --学生选修一门课所在的选修班
PRIMARY KEY (Sno, Cno), -- 主码为 (Sno, Cno)
FOREIGN KEY (Sno) REFERENCES S(Sno), -- 外码,引用 S 表的 Sno
FOREIGN KEY (Cno) REFERENCES C(Cno) -- 外码,引用 C 表的 Cno
);
增加列操作:
-- 2. A. 为 S 表增加新的一列 sage
ALTER TABLE S
ADD sage SMALLINT;
EXEC sp_help 'SC';
删除表:
-- 2. B在SQLServer2008环境下,删除S表
DROP TABLE SC;
DROP TABLE S;
注意:在SQLServer2008的运行环境下,由于SC表引用了S表的主键,所以不能直接删除,需要先删除SC表才能删除S表。
完整代码如下:
-- 1. 定义 S、C、SC 三个表格
-- 定义学生表 S
CREATE TABLE S (
Sno CHAR(8) PRIMARY KEY, -- 学号,主码
Sname VARCHAR(20) UNIQUE, -- 学生姓名
Ssex CHAR(6), -- 学生性别
Sbirthday DATE, -- 学生生日
Smajor VARCHAR(20)--主修专业
);
EXEC sp_help 's';
-- 定义课程表 C
CREATE TABLE C (
Cno CHAR(5) PRIMARY KEY, -- 课程号,主码
Cname VARCHAR(40) NOT NULL, -- 课程名称
Ccredit SMALLINT, -- 课程学分
Cpno CHAR(5),
FOREIGN KEY (Cpno) REFERENCES C(Cno)
);
EXEC sp_help 'C';
-- 定义选课表 SC
CREATE TABLE SC (
Sno CHAR(8), -- 学号
Cno CHAR(5), -- 课程号
Grade SMALLINT, -- 成绩
Semester CHAR(5), --开课学期
Teachingclass CHAR(8), --学生选修一门课所在的选修班
PRIMARY KEY (Sno, Cno), -- 主码为 (Sno, Cno)
FOREIGN KEY (Sno) REFERENCES S(Sno), -- 外码,引用 S 表的 Sno
FOREIGN KEY (Cno) REFERENCES C(Cno) -- 外码,引用 C 表的 Cno
);
EXEC sp_help 'SC';
-- 2. A. 为 S 表增加新的一列 sage
ALTER TABLE S
ADD sage SMALLINT;
EXEC sp_help 'SC';
-- 2. B在SQLServer2008环境下,删除S表
DROP TABLE SC;
DROP TABLE S;
实验1.2(需新建数据库,内容重复不做讲解)
3.参照课本64-65页“SPJ”数据库的关系模式和各属性之间的关系,判断各个关系的主码,外码和各属性的数据类型,进行S、P、J、SPJ四个表格的定义。
内容如下图所示:
完整代码如下:
-- 创建供应商表 S
CREATE TABLE S (
SNO CHAR(2) PRIMARY KEY,
SNAME VARCHAR(20),
SSTATUS SMALLINT,
CITY VARCHAR(5)
);
-- 创建零件表 P
CREATE TABLE P (
PNO CHAR(2) PRIMARY KEY,
PNAME VARCHAR(4),
COLOR CHAR(1),
PWEIGHT SMALLINT
);
-- 创建项目表 J
CREATE TABLE J (
JNO CHAR(2) PRIMARY KEY,
JNAME VARCHAR(4),
CITY CHAR(2)
);
-- 创建供应关系表 SPJ
CREATE TABLE SPJ (
SNO CHAR(2),
PNO CHAR(2),
JNO CHAR(2),
QTY SMALLINT,
PRIMARY KEY (SNO, PNO, JNO),
FOREIGN KEY (SNO) REFERENCES S(SNO),
FOREIGN KEY (PNO) REFERENCES P(PNO),
FOREIGN KEY (JNO) REFERENCES J(JNO)
);