目录
2. 数据库设计
3. 表的关系
4. 表关系的实现
5. 多表查询
5.1 内连接
(1)隐式内连接
(2)显式内连接
5.2 外连接
(1)左外连接
(2)右外连接
2. 数据库设计
数据库设计就是设计建哪些表,表里有哪些字段,表与表是什么关系;
3. 表的关系
一对一:比如每个人都有一张身份证,每张身份证都对应着唯一确定的人;
一对多(多对一):比如一个人都有多个QQ账号,多个QQ账号对应着同一个人;
多对多:比如一位老师有多个学生,一个学生有多位老师;
4. 表关系的实现
一对一:任意一张表建立外键关联另一张表的主键,并设置外键唯一;
一对多(多对一):在多的那张表建立外键,关联另一张表的主键;
多对多:建立第三张表,该表至少包含两个外键,分别关联两个表的主键;
5. 多表查询
SQL语言:select * fom 表1 ,表2 ;
表与表之间建立关系后,可以多表查询。多表查询分为内连接和外连接;
笛卡尔积:查询结果的列数是两张表列数的和,行数是量表行数的乘积;
5.1 内连接
SQL语句:select * from 表1,表2 where 表1.列名 = 表2.列名 ;
内连接就是查询两表相交的信息;
如查询员工表的emp,部门表的dept,条件为两表的主外键相同;
内连接又分为显示内连接,隐式内连接;
也就是将内连接得到的结果当做一个表,在此基础上再进行查询;
不过这两没有本质区别,仅仅是SQL语句上的不同;
(1)隐式内连接
SQL语句:select 表1.列名,表2.列名 from 表1,表2 where 表1.列名1 = 表2.列名2 ;
如下为查询员工表的姓名和性别,员工表的部门名称 ;
为了区别字段来自哪一个表,使用表名.字段名来区分;
又因为某些表的名字较长,为了方便,给表起别名即可;
(2)显式内连接
SQL语句:select 表1.列名,表2.列名 from 表1(inner) join 表2 on 表1.列名=表2.列名 ;
5.2 外连接
外连接分为左外连接,右外连接;
(1)左外连接
SQL语句:select * from 表1 left join 表2 on 表1.列名 = 表2.列名 ;
(2)右外连接
SQL语句:select * from 表1 right join 表2 on 表1.列名 = 表2.列名 ;