【MySQL】实验一 数据定义
创始人
2025-05-28 04:43:44

目录

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);

相关内容

热门资讯

2025最新消息“华彩棋牌开挂... 亲,华彩棋牌有的,ai轻松简单,又可以获得无穷的乐趣,华彩棋牌是你和朋友度过闲暇时光的不二选择,赶紧...
2025最新消息“中至二人开挂... 无需打开直接搜索微信:中至二人有挂吗本司针对手游进行,选择我们的四大理由:1、软件助手是一款功能更加...
2025最新消息“来来竞技开挂... 2025最新消息“来来竞技开挂辅助器工具”难怪经常输有猫腻,亲,有的,ai轻松简单,又可以获得无穷的...
2025最新消息“大同麻将开挂... 您好:大同麻将这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,...
2025最新消息“壹号娱乐开挂... 【无需打开直接搜索微信;29290261】 操作使用教程:1.亲,实际上壹号娱乐是可以开挂的,确实有...