从关系数据库中检索数据
Posted
技术标签:
【中文标题】从关系数据库中检索数据【英文标题】:Retrieving data from a relational database 【发布时间】:2012-04-08 18:12:11 【问题描述】:我在 phpmyadmin 中设置了 2 个两个表 - 表用户 ID 和表数据。 userid 表由单列 - id 组成,表数据由以下列组成 - id|name|price
。我在表 userid 的列 id 中添加了一个索引,以指向表数据的 id。现在我有一个用户在 android 应用程序中进行某些选择。我想将此数据插入到表数据中。我知道我必须使用 jdbc 并且知道如何在没有任何索引的情况下为表输入数据。但是我对如何在相关表的情况下进行操作感到困惑。用户 ID 是从这个链接http://android-developers.blogspot.in/2011/03/identifying-app-installations.html 获得的。有人可以告诉我如何使用java输入数据。 (困惑的是如何输入用户标识和相应的数据)。
【问题讨论】:
当你说你在表userid的列id中添加了一个索引来指向表数据的id,你的意思是data
.id
是@的外键987654325@.id
?如果是这样,那么如果在userid
中没有相应的记录,就无法插入data
。还是我没听懂你的问题?
【参考方案1】:
只要您在将新记录插入数据表时知道用户 ID,这就是您所需要的。基本上你会有:
Statement stmt = conn.createStatement();
stmt.executeUpdate( "INSERT INTO data (id, name, price) VALUES ('id from userid table', 'a name', 'a price')");
显然参数没有正确转义(它们确实应该如此)并且没有测试错误,但这会让你开始。
然后,例如,选择与给定用户 ID 相关的所有数据,您可以执行以下操作:
Statement stmt = conn.createStatement();
stmt.executeQuery( "SELECT * FROM userid LEFT JOIN data WHERE userid.id = data.id" );
【讨论】:
我认为索引表会提高速度并减少重复。或者我在这里弄错了。 @user1092042 当然可以,但是您要问的问题可以通过在 user 表的 id 字段上添加索引来处理,该索引不需要存储在单独的表中。跨度> 但是需要正确识别数据。如果我有很多用户,那么我需要知道哪些数据属于谁。对不起,如果我看起来很愚蠢,但我很新。(索引作为外键存储在数据表中) 更新了我的答案,因为我认为我最初误解了你的问题。 @user1092042 您可以将其抽象到另一个表中并使用 auto_incremented id。但是,16 个字符并不是很多,除非您拥有真正大量的数据,否则它不会成为您的重大瓶颈。考虑一下,如果您将该字段适当地设置为 varchar(16),您将使用每个字段 17 个字节(每个 mysql 文档)。这意味着即使有 100 万条记录,我们仍然只为您的 id 谈论 17MB。另外,如果您认为我的回答有帮助,请接受。以上是关于从关系数据库中检索数据的主要内容,如果未能解决你的问题,请参考以下文章