请用mysql语句设计一个简易的商城库表,给每一个列加上合适的数据类型以及约束。 其中会涉及以下几张表: 用户表:id主键,name姓名,username账号,password密码,sex性别,amount余额。 地址表:id主键,address地址,longitude经度,latitude纬度,name收货人姓名,phone收货人电话号码,default是否是默认地址。
时间: 2024-03-25 18:40:30 浏览: 21
以下是一个简易的商城库表设计,包括用户表和地址表,使用MySQL语句创建:
```sql
-- 用户表
CREATE TABLE user (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
sex ENUM('男', '女', '保密') NOT NULL,
amount DECIMAL(10, 2) DEFAULT 0.00 NOT NULL
);
-- 地址表
CREATE TABLE address (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
address VARCHAR(255) NOT NULL,
longitude FLOAT(10, 6) NOT NULL,
latitude FLOAT(10, 6) NOT NULL,
name VARCHAR(50) NOT NULL,
phone VARCHAR(20) NOT NULL,
default_address TINYINT(1) DEFAULT 0 NOT NULL,
user_id INT UNSIGNED,
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE
);
```
在用户表中,`id`列设置为自增主键,`name`和`username`列使用`VARCHAR`类型,`password`列使用`VARCHAR`类型,`sex`列使用`ENUM`类型,`amount`列使用`DECIMAL`类型。其中,`sex`列使用`ENUM`类型可以限定输入值,只能输入指定的值。
在地址表中,`id`列设置为自增主键,`address`列、`name`列和`phone`列使用`VARCHAR`类型,`longitude`列和`latitude`列使用`FLOAT`类型,`default_address`列使用`TINYINT`类型,用于表示是否是默认地址,`user_id`列设置为外键,参考用户表的`id`列,并设置级联删除和更新。