MySQL查詢語句

MySQL查詢語句

創建水果表:

CREATE TABLE fruits
(
f_id    char(10)        NOT NULL,
s_id    INT         NOT NULL,
f_name  char(255)   NOT NULL,
f_price decimal(8,2)    NOT NULL,
PRIMARY KEY(f_id) 
);

插入數據:

INSERT INTO fruits (f_id, s_id, f_name, f_price)
VALUES
    ('1', 108, 'apple', 5.2),
    ('2', 101, 'blackberry', 10.2),
    ('3', 102, 'orange', 11.2),
    ('4', 105, 'melon', 8.2),
    ('5', 102, 'banana', 10.3),
    ('6', 102, 'grape', 5.3),
    ('7', 103, 'coconut', 9.2),
    ('8', 101, 'cherry', 3.2),
    ('9', 103, 'apricot', 2.2),
    ('10', 104, 'lemon', 6.4),
    ('11', 104, 'berry', 7.6),
    ('12', 106, 'mango', 15.6);

創建供應商表:


CREATE TABLE suppliers (
    s_id INT NOT NULL AUTO_INCREMENT,
    s_name CHAR (50) NOT NULL,
    s_city CHAR (50) NULL,
    s_zip CHAR (10) NULL,
    s_call CHAR (50) NOT NULL,
    PRIMARY KEY (s_id)
);

插入數據:

INSERT INTO suppliers (
    s_id,
    s_name,
    s_city,
    s_zip,
    s_call
)
VALUES
    (
        101,
        'FastFruit Inc.',
        'Tianjin',
        '300000',
        '48075'
    ),
    (
        102,
        'LT Supplies',
        'Chongqing',
        '400000',
        '44333'
    ),
    (
        103,
        'ACME',
        'Shanghai',
        '200000',
        '90046'
    ),
    (
        104,
        'FNK Inc.',
        'Zhongshan',
        '528437',
        '11111'
    ),
    (
        105,
        'Good Set',
        'Taiyuang',
        '030000',
        '22222'
    ),
    (
        106,
        'Just Eat Ours',
        'Beijing',
        '010',
        '45678'
    ),
    (
        107,
        'DK Inc.',
        'Zhengzhou',
        '450000',
        '33332'
    );

一.MySQL連接查詢

(1).內連接查詢

SELECT
    f.f_name,
    f.f_price,
    s.s_name,
    s.s_city
FROM
    fruits f
INNER JOIN suppliers s ON f.s_id = s.s_id;

查詢結果:
這裏寫圖片描述
“on” 作爲兩張表內連的條件,如果沒有這個條件會產生一個笛卡爾集的結果。

(2).左連接查詢
左連接的結果包括LEFT JOIN子句中指定的左表的所有行,而不僅僅是連接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果行中,右表的所有選擇列表列均爲空值。

SELECT
    f.f_name,
    f.f_price,
  s.s_name,
  s.s_city
FROM
    fruits f
left JOIN suppliers s ON f.s_id = s.s_id;

結果:
這裏寫圖片描述

第一條蘋果沒有匹配對應的供應商,蘋果信息查出來了,供應商信息就爲空

(3).右連
右連接是左連接的反向連接,將返回右表的所有行。如果右表的某行在左表中沒有匹配行,左表將返回空值。

SELECT
    f.f_name,
    f.f_price,
  s.s_name,
  s.s_city
FROM
    fruits f
right JOIN suppliers s ON f.s_id = s.s_id;

這裏寫圖片描述

二.MySQL聯合查詢

UNION 用於合併兩個或多個 SELECT 語句的結果集,並消去表中任何重複行。UNION 內部的 SELECT 語句必須擁有相同數量的列,列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同.

語法:

SELECT column_name FROM table1
UNION
SELECT column_name FROM table2

例:

SELECT
    f_name,
    f_price
FROM
    fruits
UNION 
    SELECT
        s_name,
        s_city
    FROM
        suppliers

這裏寫圖片描述

默認地,UNION 操作符選取不同的值。如果允許重複的值,請使用 UNION ALL。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重複行。
另外,UNION 結果集中的列名總是等於 UNION 中第一個 SELECT 語句中的列名。

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