create table person( pid int primary key auto_increment, -- 编号 pname varchar(20) not null, -- 姓名 psex char(2) default "男", -- 性别 page int not null, -- 年龄 pfriends varchar(100), -- 朋友 phome varchar(100) -- 家乡 ); insert into person values (null,'张三',default,20,'李四,王五,赵六','河南省郑州市'); */ -- 一个人,多个朋友,属于一个字段带多个数据 -- 再设计一个表作为朋友表(通过外键来设计关系) create table person( pid int primary key auto_increment, -- 编号 pname varchar(20) not null, -- 姓名 psex char(2) default "男", -- 性别 page int not null, -- 年龄 pfriends varchar(100), -- 朋友 sheng varchar(50), -- 省 shi varchar(50) -- 市 ); -- 朋友表 CREATE TABLE friends( fid int PRIMARY KEY auto_increment, fname VARCHAR(20) not null, pid int not null, FOREIGN KEY(pid) REFERENCES person(pid) ); insert into person values (null,'张三',default,20,'李四,王五,赵六','河南省','郑州市'); -- 查询测试 select * from person; -- 插入测试数据 INSERT INTO friends VALUES(null,'李四',1); INSERT INTO friends VALUES(null,'王五',1); INSERT INTO friends VALUES(null,'赵六',1); -- 查询测试 select * from friends; /* 联表查询 select 字段 from 表1,表2 where 连接条件 内连接: select 字段 from 表1 inner join 表2 on 连接条件 外连接: select 字段 from 表1 left join 表2 on 连接条件 select 字段 from 表1 right join 表2 on 连接条件 */ SELECT * FROM person,friends WHERE person.pid=friends.pid; SELECT * FROM person p,friends f WHERE p.pid=f.pid; SELECT * FROM person p left JOIN friends f on p.pid=f.pid; SELECT * FROM person p inner JOIN friends f on p.pid=f.pid; SELECT * FROM person p RIGHT JOIN friends f on p.pid=f.pid; SELECT pname,fname FROM person p,friends f WHERE p.pid=f.pid; SELECT CONCAT(pname,"的朋友有",fname) from person p inner JOIN friends f on p.pid=f.pid;