Mysql_项目5:左连接

项目5:组合两张表 (难度:简单) 

在数据库中创建表1和表2,并各插入三行数据(自己造)

表1: Person

+-------------+---------+ 

| 列名 | 类型 |

+-------------+---------+

| PersonId | int |

| FirstName | varchar |

| LastName | varchar |

+-------------+---------+ 

PersonId 是上表主键

 

 -- 创建person表并插入数据

-- 创建表
CREATE TABLE person (
personid int(11) NOT NULL,
firstName varchar(50) NOT NULL,
lastName varchar(50) NOT NULL,
PRIMARY KEY (`personid`)) ;

-- 插入数据
INSERT INTO `person` VALUES ('1', 'xiao', 'ming');
INSERT INTO `person` VALUES ('2', 'xiao', 'hei');
INSERT INTO `person` VALUES ('3', 'xiao', 'long');
INSERT INTO `person` VALUES ('4', 'xiao', 'hong');
INSERT INTO `person` VALUES ('5', 'xiao', 'lei');

 

表2: Address

+-------------+---------+

| 列名 | 类型 |

+-------------+---------+

| AddressId | int |

| PersonId | int |

| City | varchar |

| State | varchar | 

+-------------+---------

AddressId 是上表主键

 

  -- 创建address表并插入数据

-- 创建表
CREATE TABLE address (
addressId int(11) NOT NULL,
personId int(11) NOT NULL,
city varchar(255) NOT NULL,
state varchar(255) NOT NULL,
PRIMARY KEY ('addressId')) ;

-- 插入数据
INSERT INTO address VALUES ('1', '1', 'hangzhou', 'zhejiang');
INSERT INTO address VALUES ('2', '3', 'shenzheng', 'guangdong');
INSERT INTO address VALUES ('3', '4', 'shijiazhuang', 'hebei');
INSERT INTO address VALUES ('4', '5', 'heifei', 'anhui');

 

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State

SELECT p.firstName,p.lastName,a.city,a.state
FROM person p
LEFT JOIN
          address a
on  p.personid = a.personId

 

 

 

 

 

posted @ 2019-04-14 19:41  后来的后来123  阅读(269)  评论(0编辑  收藏  举报