请自己的姓名座号(如张们213)创建一个数据库。$1% 2、请在新建的数据库下创建三个表•表一为商品(商品编号 char(⑦,商品名称 varcbar(40) 单价 decima(8.2)生产日期 datetime,规格 varcbar(so),表二 顾客(颐客編号 char⑨). 顾客姓名 char(s)电话char(12),地址 varchar(40),负责人char(8)),表三为销售(商品編号da②_顾客编号chaz(⑨,销售数量 it,销售日期 date):并为这三个表创建王键和外键啟关联。<15%4 3、请在商品表上校商品名称,单价上创建复合素引:在销售表上的销售日期上创建默认 值为$2021-6-1575<4%)4 4在商品表上的单价上创建 CHECK 约束,要求单价大于等手 0。
时间: 2024-02-23 20:02:21 浏览: 59
1. 创建数据库
首先,登录 MySQL,使用以下命令创建一个名为 `mydb` 的数据库:
```sql
CREATE DATABASE mydb;
```
2. 创建表和关联
在 `mydb` 数据库中创建三个表:商品表、顾客表和销售表,并为它们创建主键和外键关联:
```sql
-- 创建商品表
CREATE TABLE 商品 (
商品编号 CHAR(7) PRIMARY KEY,
商品名称 VARCHAR(40) NOT NULL,
单价 DECIMAL(8,2) NOT NULL,
生产日期 DATETIME,
规格 VARCHAR(50)
);
-- 创建顾客表
CREATE TABLE 顾客 (
顾客编号 CHAR(9) PRIMARY KEY,
顾客姓名 VARCHAR(20) NOT NULL,
电话 CHAR(12),
地址 VARCHAR(40),
负责人 CHAR(8)
);
-- 创建销售表
CREATE TABLE 销售 (
商品编号 CHAR(7),
顾客编号 CHAR(9),
销售数量 INT NOT NULL,
销售日期 DATE NOT NULL,
PRIMARY KEY (商品编号, 顾客编号),
FOREIGN KEY (商品编号) REFERENCES 商品(商品编号),
FOREIGN KEY (顾客编号) REFERENCES 顾客(顾客编号)
);
```
在以上语句中,我们使用 `CREATE TABLE` 命令分别创建了商品表、顾客表和销售表,并为它们创建了主键和外键关联。具体地:
- 商品表中,`商品编号` 列作为主键,不为空;`商品名称` 和 `单价` 列也不为空;
- 顾客表中,`顾客编号` 列作为主键,不为空;`顾客姓名` 列也不为空;
- 销售表中,`商品编号` 和 `顾客编号` 两列作为联合主键,不为空;同时,`商品编号` 列和 `顾客编号` 列分别作为外键,参照商品表和顾客表的 `商品编号` 和 `顾客编号` 列。
3. 创建索引和默认值
接下来,我们在商品表和销售表上创建索引和默认值:
```sql
-- 在商品表上创建复合索引(商品名称、单价)
CREATE INDEX idx_商品_名称_单价 ON 商品 (商品名称, 单价);
-- 在销售表上创建默认值(销售日期)
ALTER TABLE 销售
MODIFY COLUMN 销售日期 DATE DEFAULT '2021-06-15';
```
在以上语句中,我们使用 `CREATE INDEX` 命令在商品表上创建了一个复合索引,包括了商品名称和单价两列;同时,我们使用 `ALTER TABLE` 命令修改了销售表的销售日期列,为其设置了默认值。
4. 创建 CHECK 约束
最后,我们在商品表上创建 CHECK 约束,要求单价大于等于 0:
```sql
-- 在商品表上创建 CHECK 约束
ALTER TABLE 商品
ADD CONSTRAINT chk_商品_单价 CHECK (单价 >= 0);
```
在以上语句中,我们使用 `ALTER TABLE` 命令在商品表上创建了一个 CHECK 约束,限制单价必须大于等于 0。
阅读全文