mysql連線查詢

2021-09-21 14:17:06 字數 3373 閱讀 8949

在使用之前 先創兩張表如下↓↓

concrete_class表 :是具體的某一類

drop table if exists `concrete_class`;

create table `concrete_class` (

`o_id` int(11) not null auto_increment,

`f_id` int(11) default null,

`o_name` varchar(255) character set utf8 default null,

primary key (`o_id`)

) engine=innodb auto_increment=10 default charset=latin1;

-- ----------------------------

-- records of concrete_class

-- ----------------------------

insert into `concrete_class` values ('1', '1', '廣橘');

insert into `concrete_class` values ('2', '1', '葡萄');

insert into `concrete_class` values ('3', '2', '牛肉');

insert into `concrete_class` values ('4', '2', '豬肉');

insert into `concrete_class` values ('5', '3', '黃瓜');

insert into `concrete_class` values ('6', '4', '白鷺');

insert into `concrete_class` values ('7', '4', '麻雀');

insert into `concrete_class` values ('8', '4', '烏鴉');

insert into `concrete_class` values ('9', '1', '香蕉');

what_class表:這一物屬於的那個種類

drop table if exists `what_class`;

create table `what_class` (

`f_id` int(11) not null auto_increment comment '水果id',

`f_name` varchar(255) character set utf8 default null,

`f_state` varchar(255) character set utf8 default null comment '狀態',

primary key (`f_id`)

) engine=innodb auto_increment=5 default charset=latin1;

-- ----------------------------

-- records of what_class

-- ----------------------------

insert into `what_class` values ('1', '水果類', '新鮮');

insert into `what_class` values ('2', '肉類', '不動的');

insert into `what_class` values ('3', '蔬菜類', '剛摘的');

insert into `what_class` values ('4', '鳥類', '會飛的');

1.內連線查詢:

1.1第一種不使用inner join on:

select f.f_name,o.o_name from what_class f,concrete_class o where f.f_id=o.f_id
1.2第二種使用 inner join on:

select f.f_name,o.o_name from what_class f inner join concrete_class o on f.f_id=o.f_id
注:inner join 語法是ansi sql的標準規範,使用inner join連線語法能夠確保不會忘記連線條件,使用where在某些時候回影響查詢效能

自連線查詢

如果在乙個連線查詢中,涉及的兩張表都是同乙個表,這種查詢稱為自連線查詢 是一種特殊的內連線

select c1.f_id,c1.o_name from concrete_class as c1,concrete_class as c2 where c1.o_id = c2.o_id and c2.f_id=1
2.外連線查詢

查詢前新增幾個空資料

insert into `concrete_class` values ('10', null, '野馬');

insert into `concrete_class` values ('11', null, '雞蛋');

insert into `what_class` values ('5', '魚類', null);

insert into `what_class` values ('6', null, null);

2.0 外連線查詢將查詢多個表中相關聯的行,內連線時,返回查詢結果集合中的只是符合查詢條件和連線條件的行,但有時候需要包含沒有關聯的行的資料,即返回查詢結果集合中的不僅包含符合連線條件的行,而且還包括左表或右表的所有資料行,外連線分為左外連線和右外連線

left join(左連線):返回包括左表中的所有記錄和右表中連線字段相等的記錄

right join(右連線):返回包括右表中的所有記錄和左表中連線字段相等的記錄

left join:

select f.f_name,o.o_name from what_class f left join concrete_class o on f.f_id=o.f_id
right join:

select f.f_name,o.o_name from what_class f right join concrete_class o on f.f_id=o.f_id
3.復合條件連線查詢 只為查詢更加的準確

select f.f_name,o.o_name from what_class f inner join concrete_class o on f.f_id=o.f_id and o.o_id=o.f_id

mysql連線查詢例項 MySQL連線查詢例項詳解

建立表suppliers 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...

mysql連線查詢例項 MySQL連線查詢例項詳解

建立表suppliers 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...

mysql連線查詢on MySQL連線查詢例項詳解

建立表suppliers 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...