MySql多表练习

news/2024/11/9 10:02:59/
/*
多表关联 实现训练

*/
-- 创建主表:商品分类表category 字段:分类主键,分类名称
-- cid  cname
CREATE TABLE category(
cid INT PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(20) NOT NULL

);
-- 商品分类表添加数据
INSERT INTO category(cid,cname) VALUES (1,"张三") ,(2,"李四");
INSERT INTO category(cid,cname) VALUES (3,"化妆品") ,(4,"家具");
-- 更新数据表的数据

UPDATE category SET cname="服装" WHERE cid=1;

UPDATE category SET cname="家电" WHERE cid=2;

SELECT * FROM category;

-- 创建从表:商品信息表products 字段:商品主键,商品名称,商品价格,分类主键(外键)

CREATE TABLE products(
pid INT PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(30) NOT NULL,
price DOUBLE,
category_cid INT,
FOREIGN KEY (category_cid) REFERENCES category(cid)

);


SELECT * FROM products;

-- 从表商品表添加正常的数据(主表有的数据)

INSERT INTO products VALUES(1,"羽绒服",5000,1),(2,"大棉衣",200,1);
INSERT INTO products VALUES(3,"手电筒",5,2),(4,"电冰箱",2000,2);
INSERT INTO products VALUES(5,"大宝",9.9,3),(6,"香奈儿",7000,3);
INSERT INTO products VALUES(7,"充气娃娃",5000,4),(8,"芭比娃娃",200,4);

/*
添加主表分类表和从表商品表之间的主外键关系:
使用修改表结构(创建从表的时候直接添加)
alter table 从表名 add [constraint 外键名称] foreign key(从表中的外键字段) references 主表(主键);
foreign key:外键
references:引用
外键的作用:保证数据的准确性和完整性
1.主表中有的数据,从表可以有,可以没有
2.主表中没有的数据,从表也不能出现
3.删除主表的数据,必须保证从表没有使用
--语句删除外键
alter table 从表 drop foreign key 外键名称;    
*/


-- 从表商品表添加一条主表分类表没有的数据
INSERT INTO products VALUES(7,"充气娃娃",5000,5),(8,"芭比娃娃",200,5); -- 报错 Duplicate entry '7' for key 'PRIMARY'

-- 主表中删除从表中使用的数据

DELETE FROM category WHERE cid=1; -- 报错 从表中正在使用主表中使用的数据

-- 从表中的数据可以直接删除,删除category_cid是1的数据

DELETE FROM products WHERE category_cid=1;

/*
多多的表的操作 关联
*/

-- 创建主表订单表orders 字段:订单主键,商品总金额

CREATE TABLE orders(
oid INT PRIMARY KEY AUTO_INCREMENT,
totalprice DOUBLE
);

SELECT * FROM orders;

INSERT INTO orders VALUES(1,1100),(2,119.9),(3,89);

/*
创建中间表:orderitem 字段:商品主键,订单主键
创建表的同时添加外键约束
*/

CREATE TABLE orderitem(
products_pid INT,
orders_oid INT,
FOREIGN KEY(products_pid) REFERENCES products(pid),
FOREIGN KEY(orders_oid) REFERENCES orders(oid)
);

SELECT * FROM orderitem;


INSERT INTO orderitem VALUES(1,1),(5,1);
INSERT INTO orderitem VALUES (2,2),(3,2),(4,2);
INSERT INTO orderitem VALUES(3,3),(6,3);






















http://www.ppmy.cn/news/240432.html

相关文章

市场调研—全球与中国商用台下冰箱冰柜市场现状及未来发展趋势

【报告篇幅】:100 【报告图表数】:153 【报告出版时间】:2021年1月 2019年,全球商用台下冰箱&冰柜市场规模达到了xx亿元,预计2026年将达到xx亿元,年复合增长率(CAGR)为xx%。 本报告研究全球与中国市场…

数据库-单表

表 一行:一条记录 一列:一个字段 编号姓名年龄01张三2002李四2203王五21 一张表相当于java的一个类 public class Student{ 一个字段相当于一个属性String 编号;String 姓名;int 年龄: }一条记录相当于创建一个对象 Person pnew Person("01","张三",20)…

数据库应用第四章:表数据操作

一.删除表“employ”中的“employdate”列所使用的语句是什么? ALTER TABLE employ( DROP employdate) 二.在SQL Server 2008中对数据使用SSMS图形化界面进行修改,与使用T-SQL修改数据,两种方法相比较,哪一种功能更强大、更为灵活…

在有序循环链表中插入新结点

2011年844真题 某电器商场仓库中一批电视机,按其价格从低到高的次序构成了一个循环链表,表中的每个元素指出了价格、数量和链指针三个域。现在新到m台价格为h元的电视机入库。试编写出仓库电视机链表增加电视机的算法 typedef struct LNode {int num;f…

定积分的计算(分部积分法)习题

前置知识:定积分的计算(分部积分法) 习题1 计算 ∫ 1 3 arctan ⁡ x d x \int_1^{\sqrt 3}\arctan xdx ∫13 ​​arctanxdx 解: \qquad 原式 x arctan ⁡ x ∣ 1 3 − ∫ 1 3 x d ( arctan ⁡ x ) arctan ⁡ 3 − arctan ⁡…

深入理解Java多线程编程

Java的多线程编程在现代应用程序中扮演着重要的角色。它可以提高应用程序的性能、并发处理能力和响应性。然而,多线程编程也带来了一些挑战,如线程安全、死锁和资源竞争等问题。本文将深入探讨Java多线程编程的基本概念和最佳实践。 1. 理解线程和进程&…

docker常见命令合集,速查手册

查看本地镜像:docker images 启动一个容器:docker run [OPTIONS] IMAGE [COMMAND] 示例:docker run -itd --name mycontainer ubuntu /bin/bash注释: -i:交互式操作。-t::终端。-d:容器在后台运…

因果推断阶段系列20[阶段2-2]----处理效应的异质性

因果推断阶段系列20[阶段2-2]----处理效应的异质性 1. 从预测到因果推断2. 考虑异质性的原因3. 从ATE到CATE4. 预测弹性小结1. 从预测到因果推断 上一章,简要介绍了机器学习模型。机器学习模型用于估计条件期望函数 E [ Y ∣ X ] E[Y|X] E[