下面我们练习一下数据关系,去创建两个表,然后在它们之间建立一个关系,再利用这个关系,把两个表关联在一起。
之前我们已经创建了一个 post 表 .. 上面存储的是网站用户发布的内容 .. 下面可以再去创建一个 user 表 .. 存储用户相关的数据 ..
create table user (
id int,
name text
);
成功以后再往这个 user 表里插入两条数据 ..
insert into user (id, name) values
(1, 'wanghao'),
(2, 'xiaoxue');
查看一下 user 表里的东西 ..
select * from user;
你会发现,里面有两条数据 .. 下面再查看一下 post 表 ..
describe post;
现在 post 表上有 id,title,还有 content 字段 .. 这里可以再修改一下它,给它添加一个 user_id 字段 ..
alter table post add user_id int;
再查看一下 .. 这回它就多了一个 user_id 字段 .. 在 post 表的数据记录里,可以设置 user_id 的值,这个值就是对应的 user 表里的用户的 id 号 ..
下面我们可以再修改一下 post 表里的两条记录 ..
update post set user_id = 1 where id = 1;
update post set user_id = 2 where id = 2;
再查看一下 post 表里的内容.. 你会看到,现在记录的 user_id 都有值了 ..
inner join
下面我们可以利用 post 还有 user 表的关系 .. 需要用的是 sql 里的 join 语句,比如 inner join,left join,right join 等等 .. 下面我们用一下 inner join ..
假设我们的网站需要的数据是一个内容列表,列表项目要包含内容的 id,title,content,还需要内容作者的名字 ...
查询数据用的是 select ,设置一下需要的字段 .. 这里我们同时需要来自两个表上的字段,所以为了区分一下,可以在字段名字的前面加上一个表的名字的前缀 ..
post.id 表示的就是 post 表里的 id 字段 .. post.title,post.content .. 还有来自 user 表里的 name 字段 ..
这些字段 .. from 来自, post 表 .. 然后再用一个 inner join .. join 的是 user 这个表 .. 后面用一个 on .. 设置一下合并的条件 .. 这里就是 post 表上的 user_id,等于 user 表里的 id ..
select post.id, post.title, post.content, user.name from post inner join user on post.user_id = user.id;
执行一下 .. 你会看到,返回的结果,每条记录都会有内容的 id 号,标题,正文,还有内容的作者的名字 .. 在网站或者应用里,我们可以利用执行这条 sql 语句从数据库那里返回的数据 ..