主键和唯一的区别
主键 | 唯一 | |
---|---|---|
保证唯一性 | √ | √ |
是否为空 | × | √ |
一个表中可以有多少个 | 最多一个 | 可以有多个 |
是否允许组合 | √,但不推荐 | √ ,但不推荐 |
外键
外键特点:
- 要求在从表来设置外键关系
- 从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称要求
- 主表的关联列必须是一个key(一般是主键或者是唯一键)
- 插入数据时,应该先插入主表的数据,在插入从表的数据。
连接查询(JOIN)
内连接
- 等值连接
- select vend_name,pro_name,pro_price from vendors,products WHERE vendors.vend_id = products.vend_id;
- 非等值连接
- select salary,grad_level from employee e,job_grads g where salary BETWEEN g.‘lowest_sal’ AND g.‘highest_sal’;
- 自连接
- 只有一个表,有特殊字段才可以自连接
- select e.employee_id,e.employee_name, m.employee_id,m.employee_name FROM employee e,employee m WHERE
e.employee_id
=m.employee_id
- 例二
外连接
- 左外连接
- select * from student stu
LEFT JOIN
score scoON
stu.id=sco.student_id;
- select * from student stu
- 右外连接
- select * from score sco
RIGHT JOIN
student stuON
stu.id=sco.student_id;
- select * from score sco
- 全外连接
- select * from score sco
FULL JOIN
student stuON
stu.id=sco.student_id;
- select * from score sco
- 左连接和右连接的区别
- 左外连接就是以左边的表为主表,在显示内容时,左表会全部显示,而右表只会显示与左表重叠的部分
- 右外连接就是以右边的表为主表,在显示内容时,右表会全部显示,而左表只会显示与左表重叠的部分
交叉连接
- SELECT b.*, bo.id from beauty b CROSS JOIN boys bo;