主键和外键
主键(primary key):一列(或一组列),其值能够唯一区分表中每个行 。
外键(foreign key) 外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系
例: select iname,vname from class.words,info.words where class.words.iname = info.words.vname order by iname,vname;
笛卡尔乘积
没有联结条件的表,检索出的行的数目将是第一个表中的行数乘以第二个表中的行数
可以理解为 A表 有1,2,3行数据 B表有a, b, c数据
搜索出来的就是1-a 1-b 1-c 2-a 2-b 2-c 3-a -3-b 3-c
内联结
两个表之间的相等测试
select 列 from 表INNER JOIN 想要测试关系的表 ON 条件
多表联结
select语句中可以联结的表数目没有限制,创建联结的基本规则也相同,首先列出所有表,燃火定义表之间的关系
例: select iname,vname,jname from i,v,j where iid = vid and iid=vid;
自联结
在同一个表中做联结操作 自联结的执行效率高于子查询
左联结
一左边表为基准,按照过滤条件查询右边表的记录,匹配到,那么久组合成一行显示结果
没有匹配到,只显示左边表的字段,右边用空值表示
例如
select * from s left join c on s.id=c.id
右联结
以右边表为基准
select * from s right join c on s.id=c.id
联合查询
union
将结果组合成单个结果集
使用union的每个查询必须包含相同的列,列数据内容必须兼容。
select * from s left join c on s.id=c.id
union
select * from s right join c on s.id=c.id