Code:
create table categories
( catid smallint not null auto_increment
, catname varchar(30) not null
, primary key (catid)
) type=innodb
;
insert into categories (catname)
values
('dogs')
,('cats')
,('elephants')
,('fish')
;
create table articles
( artid smallint not null auto_increment
, artname varchar(30) not null
, artcat smallint null
, primary key (artid)
, index artcatindex (artcat)
, foreign key (artcat) references categories (catid)
ON DELETE CASCADE
) type=innodb
;
insert into articles (artname,artcat)
values
( 'rover', 1)
,( 'ralph', 1)
,( 'garfield', 2)
,( 'morris', 2)
,( 'myguppy', 4)
;
select *
from categories c
left outer
join articles a
on c.catid = a.artcat
;
/*
catid,catname,artid,artname,artcat
1,dogs,1,rover,1
1,dogs,2,ralph,1
2,cats,3,garfield,2
2,cats,4,morris,2
3,elephants,NULL,NULL,NULL
4,fish,5,myguppy,4
*/
delete from categories
where catname='cats'
;
select *
from categories c
left outer
join articles a
on c.catid = a.artcat
;
/*
catid,catname,artid,artname,artcat
1,dogs,1,rover,1
1,dogs,2,ralph,1
3,elephants,NULL,NULL,NULL
4,fish,5,myguppy,4
*/
select * from articles
;
/*
artid,artname,artcat
1,rover,1
2,ralph,1
5,myguppy,4
*/
Bookmarks