赞
踩
由于毕业设计里面需要多表的数据关联
现在复习一下数据库的多表联合的知识
主键
外键
索引
定义:
唯一标识一条记录,不能有重复的,不允许为空
表的外键是另一表的主键, 外键可以有重复的, 可以是空值
该字段没有重复值,但可以有一个空值
作用:
用来保证数据完整性
用来和其他表建立联系用的
是提高查询排序的速度
个数:
主键只能有一个
一个表可以有多个外键
一个表可以有多个惟一索引
先了解这三个的区别
自己设计数据库添加一行外键
思考了很久 我还是运用联合查询
select name FROM u_work a where a.id in ( SELECT work_id from u_user where nickname ="本王");
这个SQL语句我卡了很久了
还是准备联合查询了
外连接
外连接可分为:左连接、右连接、完全外连接。
建立两个简单的表
表student
表score
现在
1、左连接 left join 或 left outer join
mysql> select * from student left join score on student.id=score.id;
mysql> select * from student left outer join score on student.id=score.id;
左外连接包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为空(NULL).
注:此时我们不能说结果的行数等于左表数据的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。
2、右连接 right join 或 right outer join
mysql> select * from student right join score on student.id=score.id;
类似的我就举一个例子就 ok
右外连接包含right join右表所有行,如果左表中某行在右表没有匹配,则结果中对应左表的部分全部为空(NULL)。
注:同样此时我们不能说结果的行数等于右表的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。
3、完全外连接 full join 或 full outer join
类似这个样子
完全外连接包含full join左右两表中所有的行,如果右表中某行在左表中没有匹配,则结果中对应行右表的部分全部为空(NULL),如果左表中某行在右表中没有匹配,则结果中对应行左表的部分全部为空(NULL)。
二、内连接 join 或 inner join
mysql> select * from student join score on student.id=score.id;
inner join 是比较运算符,只返回符合条件的行。
此时相当于:select * from student,course where student.ID=course.ID
三、交叉连接 cross join
1.概念:没有 WHERE 子句的交叉联接将产生连接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。
今天就把这个弄明白了(参考文档)
主要是今天自己设计业务逻辑涉及到表的结构的问题,需要用到多表查询的方式
感觉还是有收获的今天的思考虽然走了些弯路,但是还是对后面的设计有清晰的一个思路帮助(明天继续设计业务逻辑和权限控制访问)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。