A. 数据库 实现两个表的连接
怀疑你有没有连接的必要,我认为没有,一个是分散,一个是求和
难道你想在每条select bno...的后面都加上sum(btotal),sum(bprice)... ??这样会数据冗余
非要这样的结果,有2个方法
1,select bno,bname,btotal,bprice ,
(select sum(btotal) from from book
where bclass='计算机类) as totalall ,
(select sum(bprice) from from book
where bclass='计算机类) as priceall
from book
where bclass='计算机类'
2,一起执行你那2个sql语句,用 set rs = conn.execute(sql).nextRecordSet
得到第二条SQL就结果
B. mysql数据库表之间是怎么关联的请详解
left join
join
主外键是两种对表的约束。
例如:
学生表student(学号(id),姓名(name),性别(sex))
表内有:1,aa,女
课程表subject(课程编号(id),课程名(name))
表内有:1,语文
成绩表grade(成绩编号(id),学号(stu_id),课程号(sub_id),成绩(grade))
表内有:1,1,1,90
成绩表的学号就是学生表的学号相对应,并且为学生表的主键,这样就称成绩表中的学号是学生表的外键,同理,成绩表中的课程号是课程表的外键。
select * from student as s inner join subject as su on su.stu_id=s.id inner join grade as g on g.sub_id=su.id where 1.
(2)数据库表连接表解析扩展阅读:
注意事项
SQL 连接(JOIN) 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。连接的结果可以在逻辑上看作是由SELECT语句指定的列组成的新表。
左连接与右连接的左右指的是以两张表中的哪一张为基准,它们都是外连接。外连接就好像是为非基准表添加了一行全为空值的万能行,用来与基准表中找不到匹配的行进行匹配。
假设两个没有空值的表进行左连接,左表是基准表,左表的所有行都出现在结果中,右表则可能因为无法与基准表匹配而出现是空值的字段。
不同的 SQL JOIN可以使用的不同的 SQL JOIN 类型:
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行(MySQL不支持FULL JOIN)
例如:
mysql> select * from access_log;
+-----+---------+-------+------------+
| aid | site_id | count | date |
+-----+---------+-------+------------+
| 1 | 1 | 45 | 2016-05-10 |
| 2 | 3 | 100 | 2016-05-13 |
| 3 | 1 | 230 | 2016-05-14 |
| 4 | 2 | 10 | 2016-05-14 |
| 5 | 5 | 205 | 2016-05-14 |
| 6 | 4 | 13 | 2016-05-15 |
| 7 | 3 | 220 | 2016-05-15 |
| 8 | 5 | 545 | 2016-05-16 |
| 9 | 3 | 201 | 2016-05-17 |
+-----+---------+-------+------------+
9 rows in set
C. 现在已经建立了数据库的连接,但需要读取数据库中表的信息,例如:读取User表中UserName的信息,如何读取
connect = 你建议的连接的驱动.getConnect();
Statement stmt = connect.createstatement();
String sql = "select UserName from User"
ResultSet rs = stmt.executeQuery(sql);
while(rs.next){
rs.getString("UserName");
}
conn.close();
rs = null;
stmt = null;
rs.getString()获取出来的就是你要的.
不知道你用的什么语言,但是大致都是这个过程.
用连接串和数据据驱动连接数据库
用数据库驱动获取连接对像
用连接对像获取Statement
用Statement执行sql,获取ResultSet
用ResultSet获取结果
释放
当然,如果你查询中有条件的,最好是用PreparedStatment 来占位.
D. SQL数据库的表与表之间的关系怎么连接
表与表之间是通过主外键链接的
可以通过‘数据库关系图’进行链接
将要连接的表选中,然后用鼠标拖动
列
例如
定义表Student、Course和SC之间的关系图。
要求:先要定义好三个表的主键SNO、CNO、(SNO,CNO)
(1) 展开数据库“学生管理”节点,在“数据库关系图”上击右键,选择“新建数据库关系图”命令,弹出新建数据库关系图向导,选择要添加到关系图中的表Student、Course和SC,这三个表将出现在新关系图窗口中。每个表显示包含的属性和定义的主键,拖动标题栏可以改变它们在窗口中的位置。
(2) 将Student表的属性SNO拖动到SC表的SNO上,松开鼠标弹出“创建关系”窗口,设置后单击“确定”按钮。在Student表和SC表之间会自动出现一条连线,说明创建关系成功。同样的方法可以创建Course表和SC表之间的关系。
(3) 单击关闭按钮保存。
(4) 试着修改或删除Student、Course和SC表中的数据,看看定义关系后有何作用。
E. 数据库多表查询时表于表之间的连接方式有哪些请说出它们的特别.
1-1,1-多,多-多
F. 数据库在连接表的过程中内部是怎么处理的
数据库在连接表的过程中内部是怎么处理的
加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
这通过java.lang.Class类的静态方法forName(String className)实现。
G. 数据库一对多、连接表问题
楼主这种,是多对多的关系,我一般是这么处理的。
学生表 (一个主键 学生ID)
课程表 (一个主键 课程ID)
学生选课表
主键为2个字段 学生ID、课程ID
同时建立外键约束
学生选课表中的 学生ID,必须在学生表中存在。
学生选课表中的 课程ID、必须在课程表中存在。
因为 一个学生,选一门课程,是唯一的了。 可以作为主键了。
没有必要再去折腾一个 “选课ID” 作为主键。 然后再给 学生ID 与 课程ID 创建个唯一性的索引。
--
除非是这种情况:
这个 中间的 选课表, 还包含 时间信息的字段.
例如 学生 张三
2010年 选修 Oracle 数据库课程
2011年,又选修 Oracle 数据库课程
2012年,还选修 Oracle 数据库课程
那么,这种情况下, 可以设置 一个由数据库管理的 自增的 "选课ID" 来确保唯一性。
H. SQL数据库一个表可以通过定义什么逻辑连接到另一个表
定义两个字段产生关联关系,如a表id和等于b表id这样就产生关联了
I. sql2000数据库里的表是怎样发生连接的
通过外键连接,实体之间用外键去联系,在表之间通过外键的外联结,自联结,内连接,全连接,进行关联。
J. 在数据库中如何把两个自由表连接成一个表
select * from table1,table2 where table1.id=table2.id这样也可以表连接。
select * from table1inner join table2 on table1.id=table2.id内链接也可以。