订单案例
抽象出来5张表
- Users 用户表
- Products:商品表
- types:商品类型表
- Orders:订单表
- Details:订单详情表
分别设计这5张表
-
创建数据库
create database mall;
-
Types表
create table types(tid varchar(32) primary key, name varchar(20) not null unique); insert into types values(replace(uuid(), '-', ''), 'house'),(replace(uuid(), '-', ''), 'digit'), (replace(uuid(), '-', ''), 'sports');
-
Users表
create table users(uid int primary key auto_increment, name varchar(20) not null unique, pass varchar(20) not null, phone varchar(11) ); insert into users values(null, 'wukong', '888888', '13333333333'); insert into users values(null, 'bajie', '888888', '13999999999');
-
Products表
create table products(pid varchar(32) primary key, name varchar(20), img varchar(40), price double, tid varchar(32) references types(tid)); insert into products values(replace(uuid(), '-', ''), 'mac pro', 'mac.jpg', 21999, 'dd6501cb628111eaad320242ac110003');
-
Details表
create table details (did varchar(32), count int, pid varchar(32) references products(pid));
-
整个命令行的结果如下
mysql> create database mall -> ; Query OK, 1 row affected (0.00 sec) mysql> use mall Database changed mysql> create table typestid varchar(32) primary key, name varchar(20) not null ; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varchar(32) primary key, name varchar(20) not null' at line 1 mysql> mysql> insert into types values(replace(uuid(), '-', ''), 'house'),(replace(uuid(), '-', ''), 'digit'), (replace(uuid(), '-', ''), 'sports'); ERROR 1146 (42S02): Table 'mall.types' doesn't exist mysql> create table typestid varchar(32) primary key, name varchar(20) not null ; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varchar(32) primary key, name varchar(20) not null' at line 1 mysql> create table types(tid varchar(32) primary key, name varchar(20)); Query OK, 0 rows affected (0.02 sec) mysql> insert into types values(replace(uuid(), '-', ''), 'house'), (replace(uuid(), '-', ''), 'digit'); Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> drop table types; Query OK, 0 rows affected (0.02 sec) mysql> create table types(tid varchar(32) primary key, name varchar(20) not null unique); Query OK, 0 rows affected (0.02 sec) mysql> insert into types values(replace(uuid(), '-', ''), 'house'), (replace(uuid(), '-', ''), 'digit'); Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from types; +----------------------------------+-------+ | tid | name | +----------------------------------+-------+ | dd6501cb628111eaad320242ac110003 | digit | | dd64fd48628111eaad320242ac110003 | house | +----------------------------------+-------+ 2 rows in set (0.00 sec) mysql> create table users(uid int primary key auto_increment, name varchar(20) not null unique, pass varchar(20) not null, phone varchar(11) ); Query OK, 0 rows affected (0.02 sec) mysql> insert into users values(null, 'wukong', '888888', '13333333333'); Query OK, 1 row affected (0.01 sec) mysql> insert into users values(null, 'bajie', '888888', '13999999999'); Query OK, 1 row affected (0.00 sec) mysql> create table products(pid varchar(32) primary key, name varchar(20), img varchar(40), price double, tid varchar(32) references types(tid)); Query OK, 0 rows affected (0.01 sec) mysql> insert into products values(replace(uuid(), '-', ''), 'mac pro', 'mac.jpg', 21999, 'dd6501cb628111eaad320242ac110003') -> ; Query OK, 1 row affected (0.01 sec) mysql> select * from products; +----------------------------------+---------+---------+-------+----------------------------------+ | pid | name | img | price | tid | +----------------------------------+---------+---------+-------+----------------------------------+ | f07de571628211eaad320242ac110003 | mac pro | mac.jpg | 21999 | dd6501cb628111eaad320242ac110003 | +----------------------------------+---------+---------+-------+----------------------------------+ 1 row in set (0.00 sec) mysql> insert into products values(replace(uuid(), '-', ''), 'mac pro', 'mac.jpg', 21999, 'dd6501cb628111eaad320242ac11000333') -> ; ERROR 1406 (22001): Data too long for column 'tid' at row 1 mysql> insert into products values(replace(uuid(), '-', ''), 'mac pro', 'mac.jpg', 21999, 'dd6501cb628111eaad32024eeee') -> ; Query OK, 1 row affected (0.01 sec) mysql> select * from products; +----------------------------------+---------+---------+-------+----------------------------------+ | pid | name | img | price | tid | +----------------------------------+---------+---------+-------+----------------------------------+ | f07de571628211eaad320242ac110003 | mac pro | mac.jpg | 21999 | dd6501cb628111eaad320242ac110003 | | fe12cc63628211eaad320242ac110003 | mac pro | mac.jpg | 21999 | dd6501cb628111eaad32024eeee | +----------------------------------+---------+---------+-------+----------------------------------+ 2 rows in set (0.00 sec) mysql> delete from products where pid = 'fe12cc63628211eaad320242ac110003'; Query OK, 1 row affected (0.00 sec) mysql> select * from products; +----------------------------------+---------+---------+-------+----------------------------------+ | pid | name | img | price | tid | +----------------------------------+---------+---------+-------+----------------------------------+ | f07de571628211eaad320242ac110003 | mac pro | mac.jpg | 21999 | dd6501cb628111eaad320242ac110003 | +----------------------------------+---------+---------+-------+----------------------------------+ 1 row in set (0.00 sec) mysql> create table details (did varchar(32), count int, pid varchar(32) references products(pid)); Query OK, 0 rows affected (0.02 sec) mysql> create table orders(oid varchar(32) primary key, price double, addr varchar(50), paytype varchar(20), uid int references Users(uid), did varchar(32) references Details(did)); Query OK, 0 rows affected (0.02 sec) mysql> show tables; +----------------+ | Tables_in_mall | +----------------+ | details | | orders | | products | | types | | users | +----------------+ 5 rows in set (0.00 sec) mysql>