Mysql数据库入门二

来源:互联网 发布:阿里云对个人有什么用 编辑:程序博客网 时间:2024/05/29 16:29

多表操作

外键约束:

一个实体的某个字段指向另一个实体的主键, 就称为外键被指向的实体

它的作用: 用于约束处于关系内的实体. 保证引用完整性, 也就是说数据的准确

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

内连接: 关键字 [INNER, 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;结果如下:

这里写图片描述

外连接: 关键字 [LEFT JOIN, LEFT OUTER JOIN, RIGHT JOIN, RIGHT OUTER JOIN, UNION]

左外连接:
以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 = '小明');

分页查询: 关键字 [LIMIT]

我们在百度查询某个关键字的时候, 比如页面会给我显示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;