WebプログラマのMysqlステップ3のsqlマルチテーブルデータ削除、サブクエリ、連合クエリ
1227 ワード
テーブル構造を次のように仮定します.
複数のデータを同時に挿入するとします.
マルチテーブルデータ削除:xiaoという名前の2つのテーブルのデータを同時に削除する必要があるとします.
もちろん、次のように書くこともできます.
サブクエリ:テーブルtestでtest 1の同名nameの情報をクエリする必要があると仮定すると、別のクエリの条件としてサブクエリが必要になる場合、コードは次のようになります.
連合クエリー:2つのテーブルの結果をクエリーする必要があると仮定します.つまり、数学的に言われている並列セットであり、重くないと仮定すると、union allです.
結果は重複していない集合になります.重複する場合は、次のようになります.
create table test(
name varchar(10),
sex varchar(10)
);
create table test1(
name varchar(10),
sex varchar(10)
);
複数のデータを同時に挿入するとします.
insert into test (name,sex) values('xiao','nan'),('xiao1','nan1'),('xiao2','nan2');
insert into test1 (name,sex) values('xiao','nan'),('xiao1','nan1'),('xiao2','nan2');
マルチテーブルデータ削除:xiaoという名前の2つのテーブルのデータを同時に削除する必要があるとします.
delete t,t1 from test t,test1 t1 where t.name=t1.name and t.name='xiao'
もちろん、次のように書くこともできます.
delete t,t1 from test t,test1 t1 where t1.name='xiao' and t.name='xiao'
サブクエリ:テーブルtestでtest 1の同名nameの情報をクエリする必要があると仮定すると、別のクエリの条件としてサブクエリが必要になる場合、コードは次のようになります.
select * from test where name in(select name from test1);
連合クエリー:2つのテーブルの結果をクエリーする必要があると仮定します.つまり、数学的に言われている並列セットであり、重くないと仮定すると、union allです.
select * from test
union all
select *from test1;
結果は重複していない集合になります.重複する場合は、次のようになります.
select * from test
union
select *from test1;