MySQL查询语句

来源:互联网 发布:select into mysql 编辑:程序博客网 时间:2024/05/20 13:20

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_cityFROM    fruits fINNER 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_cityFROM    fruits fleft JOIN suppliers s ON f.s_id = s.s_id;

结果:
这里写图片描述

第一条苹果没有匹配对应的供应商,苹果信息查出来了,供应商信息就为空

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

SELECT    f.f_name,    f.f_price,  s.s_name,  s.s_cityFROM    fruits fright JOIN suppliers s ON f.s_id = s.s_id;

这里写图片描述

二.MySQL联合查询

UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同.

语法:

SELECT column_name FROM table1UNIONSELECT column_name FROM table2

例:

SELECT    f_name,    f_priceFROM    fruitsUNION     SELECT        s_name,        s_city    FROM        suppliers

这里写图片描述

默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。
另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

原创粉丝点击