mysql多表查询&原生jdbc

本文详细介绍了MySQL的多表查询,包括内连接、外连接和子查询的使用,以及JDBC的基本概念和操作,如DriverManager、Connection、Statement和ResultSet接口的运用。此外,还提供了JDBC入门案例及工具类的实现,帮助读者掌握数据库连接和操作技巧。
摘要由CSDN通过智能技术生成

mysql多表查询&原生jdbc

  • 能够使用内连接进行多表查询
  • 能够使用外连接进行多表查询
  • 能够使用子查询进行多表查询
  • 能够理解JDBC的概念
  • 能够使用DriverManager类
  • 能够使用Connection接口
  • 能够使用Statement接口
  • 能够使用ResultSet接口

第一章 多表关系实战

1.1 实战:省和市

  • 方案1:多张表,一对多
    在这里插入图片描述
实现省份和城市一对多关系
/*
   省份和城市的1对多关系
   建表原则:从表使用主表的主键作为外键
   主表:省份表province
   从表:城市表city
*/
-- 创建主表:省份表province 字段:省份主键,省份名称,省份描述
CREATE TABLE province(
   -- 省份主键
   pid INT PRIMARY KEY AUTO_INCREMENT,
   -- 省份名称
   pname VARCHAR(20),
   -- 省份描述
   description VARCHAR(50)
);
-- 省份表添加数据
INSERT INTO province(pname,description) VALUES('河北','雾霾'),('内蒙古','草原'),('广东','经济特区');

-- 创建从表:城市表city 字段:城市主键,城市名称,城市描述,所属省份
CREATE TABLE city(
   -- 城市主键
   cid INT PRIMARY KEY AUTO_INCREMENT,
   -- 城市名称
   cname VARCHAR(20),
   -- 城市描述
   description VARCHAR(50),
   -- 所属省份(外键)
   province_pid INT,
   -- 添加province_pid字段的外键约束
   FOREIGN KEY(province_pid) REFERENCES province(pid)
);
-- 城市表添加主表省份表存在的数据
INSERT INTO city(cname,description,province_pid) VALUES('石家庄','雾霾之最',1),('承德','避暑山庄',1);
INSERT INTO city(cname,description,province_pid) VALUES('包头','草原钢城',2),('赤峰','红山文化',2);
INSERT INTO city(cname,description,province_pid) VALUES('深圳','经济特区',3),('东莞','服务行业',3);

-- 城市表添加主表省份表不存在的数据
-- Cannot add or update a child row: a foreign key constraint fails
INSERT INTO city(cname,description,province_pid) VALUES('澳门','博彩娱乐',4);

-- 删除省份表,名称是广东的数据
-- Cannot delete or update a parent row: a foreign key constraint fails
DELETE FROM province WHERE pname='广东'; 
  • 方案2:一张表,自关联一对多
    在这里插入图片描述
实现自关联表
/*
	自关联1对多关系(了解):
		本表的外键使用本表的主键
*/
-- 创建地区表:area 字段:地区主键,地区名称,地区描述,所属省份
CREATE TABLE AREA(
	-- 地区主键
	aid INT PRIMARY KEY AUTO_INCREMENT,
	-- 地区名称
	aname VARCHAR(20),
	-- 地区描述
	description VARCHAR(50),
	-- 所属省份(外键)
	area_aid INT,
	-- 添加area_aid字段的外键约束
	FOREIGN KEY(area_aid) REFERENCES AREA(aid)
);

-- 添加数据的时候,如果没有写外键字段,默认使用NULL值
INSERT INTO AREA(aname,description) VALUES('河北','雾霾'),('内蒙古','草原'),('广东','经济特区');


INSERT INTO AREA(aname,description,area_aid) VALUES('石家庄','雾霾之最',1),('承德','避暑山庄',1);
INSERT INTO AREA(aname,description,area_aid) VALUES('包头','草原钢城',2),('赤峰','红山文化',2);
INSERT INTO AREA(aname,description,area_aid) VALUES('深圳','经济特区',3),('东莞','服务行业',3);

-- 弊端,添加不存在省份的数据
INSERT INTO AREA(aname,description,area_aid) VALUES('香港','旅游购物',4);

第二章 多表查询

提供表结构如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值