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);

显示结果:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值