MySQL多表的关系是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
表与表之间的关系,说的就是表与表之间数据的关系。
一对一关系
在实际工作中,一对一在开发中应用不多,因为一对一完全可以创建成一张表
案例:一个丈夫只能有一个妻子
一对多关系
案例:一个分类对应多个商品
总结:有外键的就是多的一方。
1.注意事项:
一对多关系和一对一关系的创建很类似,唯一区别就是外键不唯一。
2.一对多关系创建:
添加外键列
添加外键约束
3.注意事项:
Ø需要中间表去完成多对多关系的创建
Ø多对多关系其实就是两个一对多关系的组合
多对多关系创建:
Ø创建中间表,并在其中创建多对多关系中两张表的外键列
Ø在中间表中添加外键约束
Ø在中间表中添加联合主键约束
6.1
交叉连接的关键字:CROSSJOIN
1.隐式交叉连接
SELECT*FROMA,B
2.显式交叉连接
SELECT*FROMACROSSJOINB
内连接
内连接的关键字:INNERJOIN
内连接也叫等值连接,内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。
1.隐式内连接
SELECT*FROMA,BWHEREA.id=B.id
2.显式内连接
SELECT*FROMAINNERJOINBONA.id=B.id
外连接
外联接可以是左向外联接、右向外联接或完整外部联接。也就是说外连接又分为:左外连接、右外连接、全外连接
外连接需要有主表或者保留表的概念。
在FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:
1.左外连接:LEFTJOIN或者LEFTOUTERJOIN
SELECT*FROMALEFTJOINBONA.id=B.id
2.右外连接::RIGHTJOIN或者RIGHTOUTERJOIN
SELECT*FROMARIGHTJOINBONA.id=B.id
3.全外连接(MySQL不支持):FULLJOIN或FULLOUTERJOIN
SELECT*FROMAFULLJOINBONA.id=B.id
外连接总结:
l通过业务需求,分析主从表
l如果使用LEFTJOIN,则主表在它左边
l如果使用RIGHTJOIN,则主表在它右边
查询结果以主表为主,从表记录匹配不到,则补null
分页查询
MySQL的分页关键字是:LIMIT
格式:
SELECT*FROMtableLIMIT[offset,]rows
子查询
定义:
子查询允许把一个查询嵌套在另一个查询当中。
子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询。
子查询可以包含普通select可以包括的任何子句,比如:distinct、groupby、orderby、limit、join和union等;
但是对应的外部查询必须是以下语句之一:select、insert、update、delete。
位置:
select中、from后、where中.
groupby和orderby中无实用意义。
MySQL事务主要用于处理操作量大,复杂度高的数据。
Ø在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务。
Ø事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。
Ø事务用来管理DML操作,比如insert,update,delete语句
一般来说,事务是必须满足4个条件(ACID):
Atomicity(原子性)
构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行。
Consistency(稳定性)
数据库在事务执行前后状态都必须是稳定的。
Isolation(隔离性)
事务之间不会相互影响。
Durability(可靠性)
事务执行成功后必须全部写入磁盘。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。