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

相关内容

热门资讯

重大消息:“掌心麻将圈怎么装挂... 重大消息:“掌心麻将圈怎么装挂”[太坑了果然有挂]亲.掌心麻将圈这款游戏是可以开挂的,确实是有挂的,...
总算了解!川蜀汇有猫腻吗(好像... 自定义川蜀汇系统规律,只需要输入自己想要的开挂功能,一键便可以生成出川蜀汇专用辅助器,不管你是想分享...
玩家攻略科普:“冲关游戏有挂吗... 玩家攻略科普:“冲关游戏有挂吗”[太坑了果然有挂]亲,冲关游戏这个游戏其实有挂的,确实是有挂的,需要...
总算了解!福气有猫腻吗(好像是... 您好:福气这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是...
总算了解!盛游有猫腻吗(好像是... 亲,盛游这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好...