数据库多数据库三表联合查询询

PHP+MySQL数据库教程 列表
相关参考课程MySQL JOIN 多表连接MySQL JOIN 多表连接
除了常用的两个表连接之外,SQL(MySQL) JOIN 语法还支持多表连接。多表连接基本语法如下:
... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON condition INNER|LEFT|RIGHT JOIN table3 ON condition ...
JOIN 多表连接实现了从多个表中获取相关数据,下面是三个原始数据表:
article 文章表:
文章1正文内容...
文章2正文内容...
文章3正文内容...
文章5正文内容...
user 用户表:
type 文章类型表:
MySQL INNER JOIN 多表
列出三个表中都具有关联关系的数据:
SELECT article.aid,article.title,user.username,type.typename FROM article INNER JOIN user
ON article.uid=user.uid INNER JOIN type ON article.tid=type.tid
返回查询结果如下:
MySQL LEFT JOIN 多表
三个表查询:
SELECT article.aid,article.title,user.username,type.typename FROM article LEFT JOIN user
ON article.uid=user.uid LEFT JOIN type ON article.tid=type.tid
返回查询结果如下:
MySQL RIGHT JOIN 多表
三个表查询:
SELECT article.aid,article.title,user.username,type.typename FROM article RIGHT JOIN user
ON article.uid=user.uid RIGHT JOIN type ON article.tid=type.tid
返回查询结果如下:
可见,在 RIGHT JOIN 右连接中,只是列出最后一个右连接表的所有数据。
对于 MySQL 多表 JOIN,还可以 INNER、LEFT 和 RIGHT 混用,其返回结果与各关键字顺序有关,感兴趣可自行测试。
本章节内容共分 5 部分:1.
MySQL JOIN 多表连接5.
<(我爱开发网) — 提供最好的 、、、 及Java连接数据库,多表查询57
上亿文档资料,等你来发现
Java连接数据库,多表查询57
Java以编程的形式连接数据库,并实现多表查询,;packageP;importjava.sql.*;;//建立类,连接MySQL数据库,数据库多表查询;publicclassConn{;publicstaticvoidmain(Str;//声明Connection对象;C;//数据库驱动;StringDRIVER=&q
Java以编程的形式连接数据库,并实现多表查询,查询条件是三年级2班,语文成绩大于80分的学生,并打出名单。代码如下:package Pimport java.sql.*;//建立类,连接MySQL数据库,数据库多表查询。public class Conn {public static void main(String[] args) {//声明Connection对象C// 数据库驱动String
DRIVER = &com.mysql.jdbc.Driver&;// 3306后面为数据库名字 测试时可以删除String
url = &jdbc:mysql://localhost:3306/stu_glxt&;
String username = &root&;// 数据库密码String
password =&123456& ;try {// 注册驱动Class.forName(DRIVER);//1.getConnection()方法,连接MySQL数据库!!con = DriverManager.getConnection(url, username, password);if(!con.isClosed())System.out.println(&Succeeded connecting to the Database!&);//2.创建statement类对象,用来执行SQL语句!!Statement statement = con.createStatement();//要执行的SQL语句,查询三年级2班语文成绩大于80分的学生
String sql = &select A.sName,B.ame,D.sGrade,D.sClass& +& from tb_student AS A,tb_score AS B,tb_course AS C,tb_grade AS D & +& where A.sNo=B.sNo o
andA.sNo=D.sNo and & +& D.sGrade='三年级' and D.sClass=2 and<o=000002 and B.score&=80&;//3.ResultSet类,用来存放获取的结果集!!ResultSet rs = statement.executeQuery(sql); System.out.println(&----------------------------------&);
System.out.println(&执行结果如下所示:&); System.out.println(&----------------------------------&);
System.out.println(& 姓名& + &\t& + & 分数&+&\t&+&课程名&+&\t&+&年级&+&\t&+&班级&); System.out.println(&----------------------------------&);String sName =String score =String cName=String grade =String sclass =while(rs.next()){//获取sName这列数据sName = rs.getString(&sName&);//获取sNo这列数据score = rs.getString(&score&);cName = rs.getString(&cName&);grade = rs.getString(&sGrade&);sclass = rs.getString(&sClass&);//输出结果System.out.println(sName + &\t& +score+&\t&+cName+&\t&+grade+&\t&+ sclass);}rs.close();con.close();} catch(ClassNotFoundException e) {//数据库驱动类异常处理System.out.println(&Sorry,can`t find the Driver!&);
e.printStackTrace();} catch(SQLException e) {//数据库连接失败异常处理e.printStackTrace();}catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally{System.out.println(&数据库数据成功获取!!&);
}}}包含各类专业文献、行业资料、高等教育、生活休闲娱乐、专业论文、应用写作文书、Java连接数据库,多表查询57等内容。
 数据库多表连接查询_IT/计算机_专业资料。左连接,右连接,全连接,内连接,交叉连接,自连接最近公司在招人,同事问了几个自认为数据库可以的应聘者关于库连接的问题,...  Java应用数据库:Hibernate对多表关联查询_计算机软件及应用_IT/计算机_专业资料。...多个表进行查询时,查询结 果是多个表的笛卡尔积, 或者称为 “交叉” 连接。...  可能有的地方写的不够好,请多指教Java 连接 MySql 数据库,并且实现增删改查.../** * 对数据库表中的记录进行删除操作 * @param tableName * @param ...  SQL 数据库查询语句/连接查询/多表连接查询一、 简单查询 简单的 Transact-SQL 查询只包括选择列表、FROM 子句和 Where 子句。它们分别说明所查 询列、查询的表...  一、问题引入 在 java 程序中,需要访问数据库,做增删改查等相关操作。如何访问数据库,做数据 库的相关操作呢? 二、Java 连接数据库方法概述 java.sql 提供了...  目前的方法是创建 Java bean 作为伪装的数据库对象,将它们的属性映射到关系表中...与此类似的任务可以通过在 set 子句中使用多列子查询而在一 个 UPDATE 命令中...  java连接数据库课程设计_工学_高等教育_教育专区。jdbc...基本信息表中 点击“查询”中的“按姓名查询”选项...“查询”菜单中的“按姓名查询”可能会出现多条结果...  学生信息查询JAVA连接数据库_计算机软件及应用_IT/计算机_专业资料。根据页面BUTTON的点击事件连接SQLserver数据库,并将结果以表格形式显示import...  Java 连接数据库全过程 第一次用 java 连接数据库,开始竟然不知道从哪里下手,后看了很多书,请教 了很多高手, 忙了一天才连接上, 所以我把这个详细的过程整理...!your_mobile_browser! |
& 数据库大能进,数据库的多表大数据查询连接应如何优化? ...
查看: 1522|回复: 23
性别男&UID489592&帖子1000&主题13&精华0&龙晶0 &龙威0 &积分3&阅读权限70&好友0&注册时间&最后登录&
精华0&龙威0 &积分3&好友0&注册时间&
本帖最后由 xylcxyfc 于
11:02 编辑
oracle数据库中现有10张客户信息表,其中5张表是每张400万条记录,另5张表是每张10万条记录,每张表都有一个通用主键cust_id(客户号),业务数据每天定时更新。
现在前台需要显示每个客户的所有信息,也就是说根据客户号查询这10张表,但只取其中的部分有用字段,由于表太多数据量太大,肯定不能在前台直接查询原表,那么问题来了:
1,是在数据库中建立合并的视图好还是实表好;
2,建立实表的话在过程中应如何优化,不可能一个劲地连接吧。
现有方案不知道好不好:
建立实表,然后在过程中建立5张临时表,这5张临时表分别存储一张400w与一张10w的数据,最后再把这5张表合并到那张实表。
性别男&UID489592&帖子1000&主题13&精华0&龙晶0 &龙威0 &积分3&阅读权限70&好友0&注册时间&最后登录&
精华0&龙威0 &积分3&好友0&注册时间&
建立合并的实表,然后在过程中建立4张临时表,第一张临时表加载两张表的数据(配合随意),第二张临时表加载第一张临时表与另外两张业务表连接后的数据,第三张再加载第二张连接两张业务表的数据,这样以此类推,最后合并的实表正好加载完。
性别男&UID578990&帖子2087&主题77&精华0&龙晶1 &龙威0 &积分5&阅读权限90&好友0&注册时间&最后登录&
精华0&龙威0 &积分5&好友0&注册时间&
汗……当年学的时候就没弄明白,貌似有Hash Index什么的
不过既然Key都一样,为何有5张10w而另5张是400w?
性别男&UID489592&帖子1000&主题13&精华0&龙晶0 &龙威0 &积分3&阅读权限70&好友0&注册时间&最后登录&
精华0&龙威0 &积分3&好友0&注册时间&
汗……当年学的时候就没弄明白,貌似有Hash Index什么的& && && & & & 不过既然Key都一样,为何有5张10w而另5张是400w?& & ...key(cust_id)一样是因为都是相关的客户信息表啊,比如这张是客户账号信息,这张是客户爱好信息,都要用客户号关联的。
性别男&UID489592&帖子1000&主题13&精华0&龙晶0 &龙威0 &积分3&阅读权限70&好友0&注册时间&最后登录&
精华0&龙威0 &积分3&好友0&注册时间&
汗……当年学的时候就没弄明白,貌似有Hash Index什么的& && && & & & 不过既然Key都一样,为何有5张10w而另5张是400w?& & ...我明白你意思了,这是因为某些业务有些客户有,有些客户没有
性别男&UID591233&帖子206&主题0&精华0&龙晶0 &龙威0 &积分2&阅读权限70&好友0&注册时间&最后登录&
精华0&龙威0 &积分2&好友0&注册时间&
这数据量并不太大啊,直接为这几个表按 cust_id 和相关的查询字段建立索引应该完全可以解决问题吧。。。。
当年我们在一个 2G内存的服务器上,查询单表近 1亿条数据(每天产生约 300W条记录)中的某些结果,平均耗时也不超过 2s呢。
性别男&UID489592&帖子1000&主题13&精华0&龙晶0 &龙威0 &积分3&阅读权限70&好友0&注册时间&最后登录&
精华0&龙威0 &积分3&好友0&注册时间&
这数据量并不太大啊,直接为这几个表按 cust_id 和相关的查询字段建立索引应该完全可以解决问题吧。。。。
当年我们在一个 2G内存的服务器 ...因为这边是多表连接,1张400w+,两张笛卡尔积就是4万亿的数量级了。
性别男&UID591233&帖子206&主题0&精华0&龙晶0 &龙威0 &积分2&阅读权限70&好友0&注册时间&最后登录&
精华0&龙威0 &积分2&好友0&注册时间&
因为这边是多表连接,1张400w+,两张笛卡尔积就是4万亿的数量级了。这种情况下我觉得使用存储过程之类的会更适合一些。。。。
是的,前台直接查询与视图都不现实.
总评分:&龙币 + 2&
性别男&UID470400&帖子13684&主题20&精华0&龙晶0 &龙威0 &积分15&阅读权限100&好友0&注册时间&最后登录&
精华0&龙威0 &积分15&好友0&注册时间&
本帖最后由 每食四簋 于
11:18 编辑
不用复杂的数据库调用。
在每个表上加个时间戳,每次更新时用触发器更新时间戳。
查时间戳就知道那些值更新没有。
性别男&UID470400&帖子13684&主题20&精华0&龙晶0 &龙威0 &积分15&阅读权限100&好友0&注册时间&最后登录&
精华0&龙威0 &积分15&好友0&注册时间&
如果是查询。按关键字表一个个查就行。然后用程序在后台凑成一整条数据。
写入也是这样。
根本不需要视图。不会是用hibernate吧?
性别男&UID489592&帖子1000&主题13&精华0&龙晶0 &龙威0 &积分3&阅读权限70&好友0&注册时间&最后登录&
精华0&龙威0 &积分3&好友0&注册时间&
本帖最后由 每食四簋 于
11:18 编辑& && & & && &不用复杂的数据库调用。& && && & & && &在每个表上加个时间戳,每次更新时用触发器更新时间 ...谢谢,还是不太明白你意思,业务数据是每天定时用过程加载的,所以新添加的过程只要放在原来过程后面就行了,不用担心新表的更新问题。前台的连接使用hibernate做的。
现在的主要问题是如何优化才能更快?
性别男&UID470400&帖子13684&主题20&精华0&龙晶0 &龙威0 &积分15&阅读权限100&好友0&注册时间&最后登录&
精华0&龙威0 &积分15&好友0&注册时间&
谢谢,还是不太明白你意思,业务数据是每天定时用过程加载的,所以新添加的过程只要放在原来过程后面就行了,不用担心新表的更新问题。前 ...
hibernate这种渣框架肯定不适合复杂表查询。
这是要系统大改的节奏啊,放弃原先持久化层的代码,重新写一套吧。
性别男&UID269279&帖子16690&主题564&精华4&龙晶7 &龙威0 &积分51&阅读权限150&好友7&注册时间&最后登录&
精华4&龙威0 &积分51&好友7&注册时间&
本帖最后由 mytxxm 于
12:22 编辑
因为这边是多表连接,1张400w+,两张笛卡尔积就是4万亿的数量级了。
不懂为什么是笛卡尔积。
这多表连接又不是Cross Join,理论上最后的数量级不就是客户数么?
性别男&UID489592&帖子1000&主题13&精华0&龙晶0 &龙威0 &积分3&阅读权限70&好友0&注册时间&最后登录&
精华0&龙威0 &积分3&好友0&注册时间&
本帖最后由 mytxxm 于
12:22 编辑& && & & && && & & && && & & & & & & && &不懂为什么是笛卡尔积。&&& & & && && & & && && & & & & & & && && & & & & & & & & & & && &这多表连接又不是Cross Join,理论上 ...确实是我想多了,full join才会那么多,现在用的是客户主表left join其他业务表
性别男&UID489592&帖子1000&主题13&精华0&龙晶0 &龙威0 &积分3&阅读权限70&好友0&注册时间&最后登录&
精华0&龙威0 &积分3&好友0&注册时间&
hibernate这种渣框架肯定不适合复杂表查询。& && && & & & 这是要系统大改的节奏啊,放弃原先持久化层的代码,重新写一套吧。& & ...我之前在源码里见过hibernate,所以才说是它,刚才问了一下做前台的,说单表是hibernate,多表就是ibatis了,ibatis没用过不了解
性别男&UID21968&帖子11462&主题149&精华1&龙晶5 &龙威0 &积分26&阅读权限100&好友0&注册时间&最后登录&
精华1&龙威0 &积分26&好友0&注册时间&
如果只说数据库,那么正确建立索引是个好主意……
比如子表删掉默认建立的主键聚集索引,改成用主表关系代码来建立聚集索引
子曰:城堅弗破則萬民來朝,破璧不穿乃貽笑大方
性别男&UID21968&帖子11462&主题149&精华1&龙晶5 &龙威0 &积分26&阅读权限100&好友0&注册时间&最后登录&
精华1&龙威0 &积分26&好友0&注册时间&
建立实表那属于跟自己过不去
解决方法一个是建视图
还有个办法是给数据表分区,比如类似这种办法
子曰:城堅弗破則萬民來朝,破璧不穿乃貽笑大方
性别男&UID21968&帖子11462&主题149&精华1&龙晶5 &龙威0 &积分26&阅读权限100&好友0&注册时间&最后登录&
精华1&龙威0 &积分26&好友0&注册时间&
具体到你的那个复杂查询,我觉得你可以用数据库自带工具来看一下查询开销的分布
比如sql2008的 sql server profiler
子曰:城堅弗破則萬民來朝,破璧不穿乃貽笑大方
性别男&UID489592&帖子1000&主题13&精华0&龙晶0 &龙威0 &积分3&阅读权限70&好友0&注册时间&最后登录&
精华0&龙威0 &积分3&好友0&注册时间&
具体到你的那个复杂查询,我觉得你可以用数据库自带工具来看一下查询开销的分布
比如sql2008的 sql server profiler&&...谢谢
我现在的业务表有些已经做了日期字段的表分区了,还能做cust_id的索引吗?
性别男&UID269279&帖子16690&主题564&精华4&龙晶7 &龙威0 &积分51&阅读权限150&好友7&注册时间&最后登录&
精华4&龙威0 &积分51&好友7&注册时间&
我现在的业务表有些已经做了日期字段的表分区了,还能做cust_id的索引吗?
可以加索引的。
龙空站务公告
Powered byMYSQL数据库多表联查如何排序_百度知道
select&*&form&(&&select&*&from&表A&&union&all&&select&*&form&表B)&t&order&by&t.评论时间&desc这样你试试
) t order by t.评论时间 desc这两个T用什么替换
起的别名,你用别的a或者b或者起个别的名字只要不是关键字就行
其他类似问题
为您推荐:
mysql数据库的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁SQL数据库查询语句连接查询多表连接查询_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
SQL数据库查询语句连接查询多表连接查询
S&#8203;Q&#8203;L&#8203;数&#8203;据&#8203;库&#8203;查&#8203;询&#8203;语&#8203;句&#8203;连&#8203;接&#8203;查&#8203;询&#8203;多&#8203;表&#8203;连&#8203;接&#8203;查&#8203;询
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢}

我要回帖

更多关于 数据库多表查询 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信