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 語句中的列名。