发表于: 2017-11-14 22:46:08
1 747
今天完成的事情:
一、联结表基础知识
1、关系表
把信息分解成多个表,一类数据一个表,各表通过某些常用值(即关系设计中的关系(relational))互相关联;
2、外键(foreign key):外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系
3、联结表的优点:
①数据信息不重复,从而不浪费时间和空间
②如果某个数据信息变动,可以只更新该表中的某个记录,相关表数据不用变更
③数据无重复,可以更有效的存储和方便的处理,伸缩性强(能够适应不断增加的工作量而不失败,设计良好的数据库或者应用程序称为可伸缩性好(scale well))
PS:联结是一种机制,用来在一条select语句中关联表,因此称之为联结(联结在运行时关联表中正确的行)
二、创建联结
例如:select A_name,B_name,B_mobile
from A, B
where A.A_id = B.B_id
order by A_name, B_name;
该SQL语句中,select语句指定要检索的列(因为是创建关联,所以指定了3个列,区别在于A_name在A表中,B_name和B_mobile在另一个表);from语句列出了2个表分别是A和B,A和B表使用where子句正确联结,
where子句指示MySQL匹配A表中的A_id和B表中的B_id相匹配,要匹配的两列以A.A_id和B.B_id完全限定表名(当引用的列可能存在二义性,必须使用完全限定表名(用一个点分隔的表名和列名))
PS:where子句的重要性
在一条select语句中联结几个表时,相应的关系是在运行中构造的;在联结两个甚至多个表时,实际上是将第一个表中的每一行与第二个表中的每一行配对,where子句作为过滤条件,它只包含匹配的给定条件的行。
没有where子句,第一个表中每个行将与第二个表中的每个行匹配,而不管逻辑上是否可以配在一起。
1、笛卡尔积
由没有联结条件的表关系返回的结果称为笛卡尔积(检索出的行的数目将是第一个表中的行数乘以第二个表中的行数);
例如:select A_name,B_name,B_mobile
from A, B
order by A_name, B_name;
PS:应保证所有联结都有where子句,否则MySQL将返回比想要的数据多得多的数据,还应保证where子句的正确性。
2、内部联结
等值联结(equijoin):基于两个表之间的相等测试,也称为内部联结
例如:select A_name,B_name,B_mobile
from A inter join B
on A_name = B_name;
这条SQL语句中,select语句与之前的相同,相较于上面的from,这里使用了inter join指定(当使用inter join时,联结条件用on子句而不是where子句,在这里on等同于where)
3、联结多个表
SQL对一条select语句中可以联结的表的数目没有限制,创建规则也基本相同(首先列出所有表,然后定义表之间的关系)
PS:MySQL在运行时关联指定的每个表以处理联结,这样很耗费资源,因此使用中应注意,不要联结不必要的表。
明天计划完成的事情:
明天还是定接口.准备小课堂
遇到的问题:发现自己还是学的不扎实
收获:查漏补缺
评论