版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shb2058/article/details/78085360
由于测试需要,不符合逻辑的建两张表,表内容如下:
user表:userid,name,age;
inClass表示:userid,className;表示该id所在的班级信息
基本操作:建表、增删改插
建表:
-- CREATE table InClass(
-- userid int NOT NULL PRIMARY KEY AUTO_INCREMENT,
-- className VARCHAR(4)
-- );
增:
INSERT INTO user VALUES(0,'小白','30');
删:
DELETE FROM user where name='赵日天';
改:
UPDATE user set name='赵日天' where userid=1;
SELECT * FROM user;
user:
inClass:
多表联查:查询名字叫小红的,所在的班级
两种方法:
第一种:傻瓜式--
SELECT user.name,inClass.className FROM user,inclass where user.userid=inClass.userid AND
user.name='小红';
因为两张表关联的地方是ID,其次需要查询的是user中的小红
第二种:join 内连接
SELECT user.name,inClass.className FROM user INNER JOIN inClass ON user.userid=inClass.userid AND
user.name='小红';
对于join的四种方式:join/left join/right join/full join
join是如果有满足条件的就返回符合条件的;
left join是在如果右侧没有匹配的数据,返回左侧的信息;
举个栗子:user表有ID为1,2,3,4的数据,class表有ID为1,2,3,5的数据,如果sql数据为select user.name,class,name from user left join class on user.id=class.id;
呢么返回的数据会是:
id为1的名字 id为1的班级
id为2的名字 id为2的班级
id为3的名字 id为3的班级
id为4的名字
right join 是在如果左侧没有匹配的数据,返回右侧的信息;同样是上面的例子,返回的数据会是这样的:
id为1的名字 id为1的班级
id为2的名字 id为2的班级
id为3的名字 id为3的班级
id为5的班级
接下来对于full join,就是返回两边的了,上面的例子,数据如下:
id为1的名字 id为1的班级
id为2的名字 id为2的班级
id为3的名字 id为3的班级
id为4的名字
id为5的班级