inner join 链表_MySQL连表操作之一对多

引入

当我们在数据库中创建表的时候,有可能某些列中值内容量很大,而且重复。

例子:创建一个学生表,按学校年纪班级分,表的内容大致如下:

id

name

partment

1

xxx

x学校x年级x班级

2

ooo

x学校x年级x班级

3

zzz

z学校x年级x班级

4

ddd

y学校x年级x班级

我们看出来对应的partment对应的值很长,而且重复量很大,这样就很不合适。

因此我们考虑将复杂重复的部分单独拿出来分成2个表:

第一张表:

id

caption

1

x学校x年级x班级

2

y学校x年级x班级

3

z学校x年级x班级

第二张表在之前的基础上修改的:

id

name

partment

1

xxx

1

2

ooo

2

3

zzz

3

4

ddd

1

这样看起来就很简洁了,我们将很长的且重复的部分拿出来,然后规定编号,创建学生表的时候,学生对应的partment只需要取学校对应的id便可,这样同时这2张表也就会关联起来。

说明:

1、他们的关联关系;表2中的partment和表1的id联系再一起。

2、表一的数据会对应表2中的多条数据,这就叫一对多。

问题:此时,两张表是相对独立的,都可以各自插入自己的数据,这样做很合适的,并没实质行的关联?

因此,必须要将其限制。表二的partment数据必须是表一中有的,不然,就不让其增加。

这里(partment)就引入了一个名词 —- 外键

外键

说明:

1、外键:一个表接收另一个表的主键。

2、partment外键的是表一中的nid。

3、当我们创建了外键,则系统变默认会为我们添加,相应的约束,如:表二中的partment数据必须是表一中nid有的&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,您需要定义一个类来表示food表中的每个行。该类应该包含与food表中的列相对应的实例变量以及它们的getter和setter方法。例如: ``` public class Food { private int id; private String name; private double price; // Constructor public Food(int id, String name, double price) { this.id = id; this.name = name; this.price = price; } // Getter and Setter methods public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } } ``` 接下来,您需要创建一个链表来存储food表中的所有行。您可以使用Java的LinkedList类来实现这个链表。例如: ``` LinkedList<Food> foodList = new LinkedList<Food>(); ``` 现在,您可以使用Java的JDBC API来连接MySQL数据库并执行SQL查询。以下是一个示例代码块,用于将food表中的所有行添加到LinkedList中: ``` try { // Load the MySQL JDBC driver Class.forName("com.mysql.jdbc.Driver"); // Create a connection to the database Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "myuser", "mypassword"); // Create a statement to execute the SQL query Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM food"); // Add each row to the foodList while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); double price = resultSet.getDouble("price"); Food food = new Food(id, name, price); foodList.add(food); } // Close the connection connection.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } ``` 现在,您可以对foodList执行各种操作,例如遍历列表并打印每个食品的名称和价格: ``` for (Food food : foodList) { System.out.println(food.getName() + ": " + food.getPrice()); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值