sql中的内联和外联(简单⽤法)有两张表:user和department
User表:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
sql语句怎么查询两张表的数据`name` varchar(30) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`birthday` date DEFAULT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO USER VALUE(NAME,age,birthday) VALUES("张三",20,"2018-10-31");
表内数据如下:
部门表:
CREATE TABLE `department` (
`id` bigint(11) NOT NULL,
`name` varchar(10) NOT NULL,
`descr` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO department (id,NAME,descr) VALUES(1,"开发部","开发⾼级产品");
表内数据如下:
⼀、正常两表联合查询的sql语句:
SELECT u.id,u.name,u.age,d.name,d.descr FROM USER u,department d WHERE u.id=d.id
查询结果
(或者:SELECT * FROM USER u,department d WHERE u.id=d.id)
⼆、左联查询sql语句:
SELECT * FROM USER u LEFT JOIN department d ON u.id=d.id
查询结果:
根据查询结果可以看出:左联查询把前⾯表(user)全部查出,右表只查出部分,左表有的右表没有就为空
三、右联查询sql语句:
SELECT * FROM USER u RIGHT JOIN department d ON u.id=d.id
查询结果:
根据结果可以看出:右联查询把后⾯表(department)全部查出,左表只查出部分,右表有的左表没有就为空
四、内联查询sql语句:
SELECT * FROM USER u INNER JOIN department d ON u.id=d.id
其结果与SELECT * FROM USER u,department d WHERE u.id=d.id查询结果⼀样,查出两表中满⾜条件的记录(是两张表同时满⾜哦)
还可以使⽤where或and带条件查询。
SELECT * FROM USER u INNER JOIN department d ON u.id=d.id AND u.age=20
查询结果:
SELECT * FROM USER u LEFT JOIN department d ON u.id=d.id WHERE u.name LIKE '%王%'
SELECT * FROM USER u RIGHT JOIN department d ON u.id=d.id AND u.age=20
查询结果:
根据以上可以看出:
1、使⽤外联查询时,添加and查询条件,不影响内外联查询的性质,只是查询的结果满⾜查询条件,添加where查询条件时,只能查到满⾜条件的记录(结果与内联查询⼀样)。
2、内联查询时,添加and或where条件时,查询结果都⼀样,只与查询条件有关
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论