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

顯示結果:

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章