LeetCode : 175. Combine Two Tables

175. Combine Two Tables

Table: Person

+-------------+---------+
| Column Name | Type | +-------------+---------+
| PersonId    | int     |
| FirstName   | varchar |
| LastName | varchar | +-------------+---------+
PersonId is the primary key column for this table.

Table: Address

+-------------+---------+
| Column Name | Type | +-------------+---------+
| AddressId   | int     |
| PersonId    | int     |
| City        | varchar |
| State | varchar | +-------------+---------+
AddressId is the primary key column for this table.

Write a SQL query for a report that provides the following information for each person in the Person table, regardless if there is an address for each of those people:

FirstName, LastName, City, State

1. 创建数据库,创建表,添加主键和外键:

-- 创建数据库
CREATE DATABASE leetcode;

-- 
USE leetcode;

-- 创建person表
CREATE TABLE person ( personid int(10) NOT NULL, firstname varchar(50) NULL, lastname varchar(50) NULL );

-- 创建person表的主键
ALTER TABLE person ADD PRIMARY KEY (personid);

-- 创建Address表
CREATE TABLE address ( addressid int(10) NOT NULL, personid int(10) NOT NULL, city varchar(50) NULL, state varchar(50) NULL );

-- 创建address表的主键
ALTER TABLE address ADD primary key (addressid);
-- 创建外键
ALTER TABLE address ADD CONSTRAINT FK_ADDRESS_PERSON foreign key (personid) references person (personid);

2. 添加数据

-- 为表中添加数据
INSERT INTO person(personid, firstname, lastname) VALUES (1, 'Hong', 'Wang');
INSERT INTO person(personid, firstname, lastname) VALUES (2, 'Te', 'Bane');
INSERT INTO person(personid, firstname, lastname) VALUES (3, 'Sing', 'Song');
INSERT INTO person(personid, firstname, lastname) VALUES (4, 'Yang', 'Zhang');
INSERT INTO person(personid, firstname, lastname) VALUES (5, 'King', 'Liao');

INSERT INTO address(addressid, personid, city, state) VALUES (1,1,'Xian','Changan');
INSERT INTO address(addressid, personid, city, state) VALUES (2,2,'hanzhong','a2');
INSERT INTO address(addressid, personid, city, state) VALUES (3,3,'shanxi','a3');
INSERT INTO address(addressid, personid, city, state) VALUES (4,4,'beijing','chaoyang');
INSERT INTO address(addressid, personid, city, state) VALUES (5,5,'Xian','weiyang');

3. 查询

-- 内联结查询
SELECT firstname, lastname, city, state FROM person, address WHERE person.personid = address.personid;

-- 左向外联接查询
SELECT person.firstname, person.lastname, address.city, address.state FROM person person left outer join address address using (personid);

显示结果:

LeetCode : 175. Combine Two Tables_第1张图片

你可能感兴趣的:(LeetCode,sql)