【MySQL】实验一 数据定义
目录
1. 表定义:创建student表
创建student(学生表)
列名 | 说明 | 数据类型 | 约束 |
SNO | 学号 | CHAR(7) | 主码 |
SNAME | 姓名 | CHAR(10) | NOT NULL |
SSEX | 性别 | 枚举类型 | 取“男”或“女” |
SAGE | 年龄 | SMALLINT |
|
SDEPT | 所在系 | VARCHAR(20) | 默认“计算机系” |
2. 表定义:创建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)
);
3. 表定义:创建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
);
4. 表定义:创建供应商表
创建 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)
);
5. 表定义:创建零件表
创建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)
);
6. 表定义:创建工程项目表
创建 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)
);
7. 表定义:创建供应情况表
供应情况表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)
);
8. 修改表结构:修改课程表
修改课程表course的CNAME属性列的类型为VARCHAR(30);
ALTER TABLE course
MODIFY CNAME VARCHAR(30);
9. 修改表结构:修改零件表
为零件表:p 增加一个规格(GUIGE)列,数据类型为字符,长度50;
ALTER TABLE p
ADD GUIGE CHAR(50);
10. 修改表结构:修改供应情况表
已知供应情况表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;
11. 修改表结构:修改供应情况表
为供应情况表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;
相关文章
- 定时读取mysql的数据
- 简述C#中IO的应用 RabbitMQ安装笔记 一次线上问题引发的对于C#中相等判断的思考 ef和mysql使用(一) ASP.NET/MVC/Core的HTTP请求流程
- mysql自连接求累计金额
- 【MySQL高级】Mysql复制及Mysql权限管理
- 【MySQL进阶-07】深入理解mysql性能优化以及解决慢查询问题
- MySQL数据直接实时同步到ES
- 【mysql报错】ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘
- 【mysql】MySQL的sql_mode模式说明及设置
- 《PHP和MySQL Web开发从新手到高手(第5版)》一2.6 将数据插入到表中
- MariaDB/MySQL备份和恢复(二):数据导入、导出
- pt-table-checksum工具MySQL主从复制数据一致性
- MySQL SELECT语句中只能输出1000行数据的原因
- 记录一次mysql使用load into命令导入csv格式数据的过程
- Mysql 没有nvl()函数,却有一个类似功能的函数ifnull()
- MySQL 使用 比较函数 INTERVAL() 函数 实现数据按区间分组
- MySQL数据的主从复制、半同步复制和主主复制详解-转
- 分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节
- mysql如何通过主库查看从库信息?
- mysql timestamp
- SpringBoot+MyBatis+MySQL读写分离(实例)