目录
1. 表定义:创建工程项目表
2. 表定义:创建供应商表
3. 表定义:创建供应情况表
4. 表定义:创建零件表
5. 表定义:创建student表
6. 表定义:创建course表
7. 表定义:创建sc表
8. 修改表结构:修改供应情况表
9. 修改表结构:修改供应情况表
10. 修改表结构: 修改课程表
11. 修改表结构:修改零件表
1. 表定义:创建工程项目表
创建 j(工程项目表)
列名 | 说明 | 数据类型 | 约束 |
JNO | 项目号 | CHAR(6) | PRIMARY KEY |
JNAME | 项目名 | VARCHAR(20) | NOT NULL |
CITY | 城市 | VARCHAR(50) |
CREATE TABLE j(
JNO CHAR(6),
JNAME VARCHAR(20) NOT NULL,
CITY VARCHAR(50),
PRIMARY KEY(JNO)
);
2. 表定义:创建供应商表
创建 s(供应商表)
列名 | 说明 | 数据类型 | 约束 |
SNO | 供应商号 | CHAR(6) | PRIMARY KEY |
SNAME | 供应商名 | VARCHAR(20) | NOT NULL |
SSTATUS | 供应商状态 | SMALLINT(2) | 取值0或1 |
CITY | 所在城市 | VARCHAR(50) |
CREATE TABLE s(
SNO CHAR(6) PRIMARY KEY,
SNAME VARCHAR(20) NOT NULL,
SSTATUS SMALLINT(2) CHECK(SSTATUS=0 OR SSTATUS=1),
CITY VARCHAR(50)
);
3. 表定义:创建供应情况表
供应情况表spj
列名 | 说明 | 数据类型 | 约束 |
SNO | 供应商号 | CHAR(6) | 主码 |
PNO | 零件号 | CHAR(6) | 主码 |
JNO | 项目号 | CHAR(6) | 主码 |
QTY | 供应数量 | SMALLINT | DEFAULT 100 |
CREATE TABLE spj(
SNO CHAR(6),
PNO CHAR(6),
JNO CHAR(6),
QTY SMALLINT DEFAULT 100,
PRIMARY KEY(SNO,PNO,JNO)
);
4. 表定义:创建零件表
创建p(零件表)
列名 | 说明 | 数据类型 | 约束 |
PNO | 零件号 | CHAR(6) | PRIMARY KEY |
PNAME | 零件名 | VARCHAR(20) | NOT NULL |
COLOR | 颜色 | 枚举类型 | 取(红、绿、蓝)其中之一 |
WEIGHT | 重量 | DECIMAL(9,2) | 默认值1.0 |
CREATE TABLE p(
PNO CHAR(6),
PNAME VARCHAR(20) NOT NULL,
COLOR ENUM('红','绿','蓝'),
WEIGHT DECIMAL(9,2) DEFAULT 1.0,
PRIMARY KEY(PNO)
);
5. 表定义:创建student表
创建student(学生表)
列名 | 说明 | 数据类型 | 约束 |
SNO | 学号 | CHAR(7) | 主码 |
SNAME | 姓名 | CHAR(10) | NOT NULL |
SSEX | 性别 | 枚举类型 | 取“男”或“女” |
SAGE | 年龄 | SMALLINT | |
SDEPT | 所在系 | VARCHAR(20) | 默认“计算机系” |
6. 表定义:创建course表
创建course(课程表)
列名 | 说明 | 数据类型 | 约束 |
CNO | 课程号 | CHAR(10) | 主码 |
CNAME | 课程名 | VARCHAR(20) | NOT NULL,惟一约束 |
CCREDIT | 学分 | SMALLINT | >0 |
SEMSTER | 学期 | SMALLINT | >0 |
PERIOD | 学时 | SMALLINT | >0 |
CREATE TABLE course(
CNO CHAR(10),
CNAME VARCHAR(20) NOT NULL,UNIQUE(CNAME),
CCREDIT SMALLINT CHECK(CCREDIT>0),
SEMSTER SMALLINT CHECK(SEMSTER>0),
PERIOD SMALLINT CHECK(PERIOD>0),
PRIMARY KEY(CNO)
);
7. 表定义:创建sc表
创建sc(选课表)
列名 | 说明 | 数据类型 | 约束 |
SNO | 学号 | CHAR(7) | 主码 引用Student的外码,设置删除限制,更新级联 |
CNO | 课程号 | CHAR(10) | 主码,引用Course的外码,设置删除限制,更新级联 |
GRADE | 成绩 | SMALLINT |
CREATE TABLE sc(
SNO CHAR(7),
CNO CHAR(10),
GRADE SMALLINT,
PRIMARY KEY(SNO,CNO),
FOREIGN KEY(SNO) REFERENCES student(SNO)
ON DELETE RESTRICT ON UPDATE CASCADE,
FOREIGN KEY(CNO) REFERENCES course(CNO)
ON DELETE RESTRICT ON UPDATE CASCADE
);
8. 修改表结构:修改供应情况表
已知供应情况表spj
列名 | 说明 | 数据类型 | 约束 |
SNO | 供应商号 | CHAR(6) | NOT NULL |
PNO | 零件号 | CHAR(6) | NOT NULL |
JNO | 项目号 | CHAR(6) | NOT NULL |
QTY | 供应数量 | SMALLINT | DEFAULT 100 |
ALTER TABLE spj
ADD id INT auto_increment PRIMARY KEY;
9. 修改表结构:修改供应情况表
为供应情况表spj添加参照完整性约束(无需设置规则,采用默认约束规则)
spj的SNO列参照s表SNO列,采用默认规则;
spj的PNO列参照p表PNO列,设置删除级联;
spj的JNO列参照j表JNO列,设置更新级联;
ALTER TABLE spj
ADD FOREIGN KEY (SNO) REFERENCES s(SNO),
ADD FOREIGN KEY (PNO) REFERENCES p(PNO)
ON DELETE CASCADE,
ADD FOREIGN KEY (JNO) REFERENCES j(JNO)
ON UPDATE CASCADE;
10. 修改表结构: 修改课程表
修改课程表course的CNAME属性列的类型为VARCHAR(30);
ALTER TABLE course
MODIFY CNAME VARCHAR(30);
11. 修改表结构:修改零件表
为零件表:p 增加一个规格(GUIGE)列,数据类型为字符,长度50;
ALTER TABLE p
ADD GUIGE CHAR(50);