個人全部的表都是沒有關聯關係的,解耦java
一共是四個表 tb_user 用戶表sql
CREATE TABLE `tb_user` (
`id` int(100) NOT NULL AUTO_INCREMENT COMMENT 'Id',
`name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`age` double(255,0) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
tb_order 訂單表數據庫
CREATE TABLE `tb_order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`price` double(255,0) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
tb_goods 商品表設計
CREATE TABLE `tb_goods` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`weight` double(11,0) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;code
他們的關係是 用戶表和訂單表是一對多,一個用戶能夠建立多個訂單,數學
訂單和商品是多對多,一個訂單能夠擁有多個商品,固然一個商品也能夠擁有多個訂單,這裏的商品是類級別的商品table
他們是多對多關係因此說必須擁有一箇中間表,也就是tb_order_goodsclass
CREATE TABLE `tb_order_goods` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_id` int(11) DEFAULT NULL,
`goods_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
中間表就是用來關聯Order和User的im
這個是我全部的表
數據
SELECT*from tb_goods;
SELECT*from tb_order;
SELECT*from tb_order_goods;
SELECT*from tb_user;
如今咱們根據用戶ID查詢用戶全部的訂單,和訂單相關的信息
分析能夠知道如今求的是交集,
inner join 和 left join ,right join的關係就是交集,和補集的關係
SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name
這個表很直觀,剛剛的需求也就是要交集
因此如今開始寫sql
SELECT g. NAME FROM tb_order o INNER JOIN tb_order_goods og ON o.id = og.order_id INNER JOIN tb_goods g ON og.order_id = g.id WHERE o.user_id = 1
這個sql就是說的是獲取user_id =1 購買的全部商品
其餘兩個的話是求補給
如今讓那個咱們來試一試,看看結果咯
SELECT * FROM tb_order o LEFT JOIN tb_order_goods og ON og.order_id = o.id LEFT JOIN tb_goods g ON g.id = og.goods_id WHERE o.user_id = 1
如今咱們看看right join ,其實很簡單,高中數學好的話,基本沒有問題,有問題確定是智商問題
看圖
這個就是咯,如今看sql 語句咯,其實很簡單的啦,設計數據庫的時候最好不要有管理關係,這樣遷移還有拓展很差,你懂得
SELECT * FROM tb_order o RIGHT JOIN tb_order_goods og ON og.order_id = o.id RIGHT JOIN tb_goods g ON g.id = og.goods_id WHERE o.user_id = 1
這個是結果