在使用之前 先創兩張表如下↓↓
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...