一个实体的某个字段指向另一个实体的主键, 就称为外键被指向的实体
它的作用: 用于约束处于关系内的实体. 保证引用完整性, 也就是说数据的准确
tips: 1.外键一定要指向主键, 有主键才有外键 2.外键列的类型和长度一定要和参照的主键的类型和约定长度一致有两张表分别为student表和score表: student表为: sex表为:
// 把student中的sex做为外键 ALTER TABLE student ADD CONSTRAINT fk_sex FOREIGN KEY(sex) REFERENCES sex(sid);通过student表中的sex列找到sex表中对应的sex列的字段值, 应该会很好理解吧
多表的分类有3种, 分别为:
A)内连接:join,inner join
B)外连接:left join,left outer join,right join,right outer join,union
C)交叉连接:cross join
隐式内连接:
SELECT a.*, b.* FROM a, b WHERE 连接条件; // a为表a, b为表b 或者: SELECT * FROM a, b WHERE 连接条件;显示内连接:
SELECT a.*, b.* FROM a [INNER] JOIN b ON 连接条件; SELECT * FROM a [INNER] JOIN b ON 连接条件 WHERE 其他条件; SELECT * FROM student u JOIN sex s ON u.sex = s.sid; 结果如下:左外连接: 以JOIN左边的表为主表,展示主表的所有数据,根据条件查询连接右边表的数据,若满足条件则展示,若不满足则以null显示
SELECT a.*, b.* FROM a LEFT [OUTER] JOIN b ON 连接条件; SELECT * FOMR a LEFT [OUTER] JOIN b ON 连接条件; SELECT * FROM student u LEFT JOIN sex s ON u.sex = s.sid; 结果如下:右外连接: 以JOIN右边的表为主表,展示它的所有数据,根据条件查询JOIN左边表的数据,若满足则展示,若不满足则以null显示
SELECT a.*, b.* FROM a RIGHT [OUTER] JOIN b ON 连接条件; SELECT * FOMR a RIGHT [OUTER] JOIN b ON 连接条件;什么书子查询?
一个SELECT语句中包含另一个完整的SELECT语句。子查询就是嵌套查询,即SELECT中包含SELECT,如果一条语句中存在两个,或两个以上SELECT,那么就是子查询语句了。需求: 查询成绩比小明高的所有同学信息
-- 按以前的做法我们可以分为2个步骤去完成 -- 首先我们要知道小明的成绩 SELECT score from student WHERE name = '小明'; -- 比如查询到小明成绩为80 -- 得到小明的成绩80后, 可用80来查询比小明成绩高的同学信息 SELECT * FROM student WHERE score > 80; -- 下面用子查询来完成这个需求 SELECT * FROM student WHERE SCORE > (SELECT score FROM student WHERE name = '小明');我们在百度查询某个关键字的时候, 比如页面会给我显示15条相关信息, 在页面最下面会有一条分页按钮 当我按下2按钮时, 页面上会继续显示不同的15条相关信息. 这就是分页.
比如我们想要在页面上每页显示5条信息, 我们来模拟一下
SELECT * FROM info LIMIT 0,5; -- 第一页显示5个 SELECT * FROM info LIMIT 5,5; -- 第二页显示5个 SELECT * FROM info LIMIT 10,5; -- 第三页显示5个 ...LIMIT A, B; A为从第几个开始显示, B为显示的个数; 通过上面的代码我们可以发现一个规律; A = (当前页数 - 1) * B;