mysqlいくつかの比較的冷たいドアのクエリー
2345 ワード
1、ビューの作成:ビューは特殊なテーブルとして、sqlクエリーを有効にカプセル化することができ、テーブルにインタフェースをカプセル化することに相当する.
ビューといえば、mysqlにはselect*from(select*from tableName)のようなクエリー構文がないと思っている人が多い.つまり、結果セットで2回フィルタリングされているが、Every derived table must have its own alias
実際には、ビューはクエリー結果セットの別名のようなものですが、彼は固化しています.二次フィルタは一時的に指定されています.
2.あるクエリ結果セットをデータベーステーブルに格納する
以上の2つの方法はいずれも可能で、1つ目の方法はもっとイメージできる説明viewは1枚の特殊な表です
でもmysqlは
方法、実は同じで、ここのtempTable Nameは存在しないテーブルでなければならなくて、私達がcreate文を使うのと同じです
また、プロシージャを書くときに、プロシージャで宣言された変数に次の構文をよく使用します.
3、クエリー結果をテーブルに挿入する:valuesがないことに注意する
4、rollupとgroup_concat():rollupとgroup_concat()はgroupbyと連用し、グループ単位を統計する必要がある
ageをグループ化し、同じageのユーザーをグループ化し、名前(group_concat)と人数をまとめ、最後に総人数と総ユーザー名をまとめます(rollup)
5、<=>関係演算子
フィールドがNULLでないデータを検索すると使用できません
使用するべきです
6、ifnull()/isnull()/nullif()
// getNameAge , user name、age ,
create view user_name_age as select name, age from user [where condition.....];
//
select * from user_name_age [where conditon....];
//
drop view user_name_age;
ビューといえば、mysqlにはselect*from(select*from tableName)のようなクエリー構文がないと思っている人が多い.つまり、結果セットで2回フィルタリングされているが、Every derived table must have its own alias
// , from
select * from (select name, age from user) as user_name_age;
実際には、ビューはクエリー結果セットの別名のようなものですが、彼は固化しています.二次フィルタは一時的に指定されています.
2.あるクエリ結果セットをデータベーステーブルに格納する
create table user_name_age as select name, age from user [where condition.....];
create table user_name_age(select name, age from user [where condition.....]);
以上の2つの方法はいずれも可能で、1つ目の方法はもっとイメージできる説明viewは1枚の特殊な表です
でもmysqlは
select * into tempTableName from tableName [where condition...]
方法、実は同じで、ここのtempTable Nameは存在しないテーブルでなければならなくて、私達がcreate文を使うのと同じです
また、プロシージャを書くときに、プロシージャで宣言された変数に次の構文をよく使用します.
//
select name into variable from tableName
//
3、クエリー結果をテーブルに挿入する:valuesがないことに注意する
//
insert into user_name_age(name, age) select name, age from user;
//
4、rollupとgroup_concat():rollupとgroup_concat()はgroupbyと連用し、グループ単位を統計する必要がある
//
select age, count(*), group_concat(name order by name desc) from user group by age with rollup;
//
ageをグループ化し、同じageのユーザーをグループ化し、名前(group_concat)と人数をまとめ、最後に総人数と総ユーザー名をまとめます(rollup)
5、<=>関係演算子
フィールドがNULLでないデータを検索すると使用できません
select * from tableName where colName = NULL;
select * from tableName where colName <> NULL;
使用するべきです
select * from tableName where colName IS NULL;
select * from tableName where colName IS NOT NULL;
select * from tableName where colName <=> NULL;
select * from tableName where NOT(colName <=> NULL);
6、ifnull()/isnull()/nullif()
// 1 null 2
select ifnull(1, 2); //1
select ifnull(null, 2); //2
// null
select isnull(1); //0
select isnull(null); //1
// null 1
select nullif(1, 1); //null
select nullif(1, 2); //1