5.11总结

Drop TABLE IF EXISTS tb_order;
Drop TABLE IF EXISTS tb_goods;

-- 订单表
-- 表实现多对多
-- 实现方式:建立第三方中间表,中间表至少包含两个外键,分别关联两方主键
CREATE TABLE tb_order(
id INT primary key auto_increment,
payment DOUBLE(10,2),
payment_type TINYINT,
status TINYINT
);

-- 商品表
CREATE TABLE tb_goods(
id int PRIMARY key auto_increment,
title VARCHAR(100),
price DOUBLE(10,2)
);

-- 订单商品中间表.
CREATE TABLE tb_order_goods(
id int PRIMARY KEY auto_increment,
order_id int,
goods_id int,
count INT
);

-- 建完表后,添加外键
ALTER TABLE tb_order_goods add CONSTRAINT fk_order_id FOREIGN KEY(order_id) REFERENCES tb_order(id);
ALTER TABLE tb_order_goods add CONSTRAINT fk_goods_id FOREIGN KEY(order_id) REFERENCES tb_goods(id);

-- 表关系一对一
-- 实现方式,在任意一方加入外键,关联另一方主键,并设置外键为唯一的unique

DROP TABLE if EXISTS emp;
DROP TABLE if EXISTS dept;

创建部门表

CREATE TABLE dept(
did int PRIMARY key auto_increment,
dname VARCHAR(20)
);

创建员工表

CREATE TABLE emp(
id int PRIMARY KEY auto_increment,
name VARCHAR(10),
gender char(1),-- 性别
salary DOUBLE,-- 工资
join_date date,-- 入职日期
dep_id int,
FOREIGN KEY (dep_id) REFERENCES dept(did)-- 外键,关联部门表的主键
);

-- 添加部门数据
INSERT INTO dept (dname) VALUES('研发部'),('市场部'),('财务部'),('销售部');
-- 添加员工数据
INSERT INTO emp(name,gender,salary,join_date,dep_id) VALUES
('孙悟空','男',7200,'2013-02-24',1),
('猪八戒','男',3600,'2010-12-02',2),
('唐三藏','男',9000,'2008-08-08',2),
('白骨精','女',5000,'2015-10-07',3),
('蜘蛛精','女',4500,'2011-03-14',1),
('小白龙','男',2500,'2011-02-14',null);

SELECT * FROM emp;

-- 多表查询

SELECT * FROM emp,dept;	-- 笛卡尔积

-- 消除无效数据,查询emp和dept的数据,emp.dep_id=dept.did

SELECT * FROM emp , dept where emp.dep_id = dept.did;
posted @   奉禾  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示
主题色彩