mysqlいくつかの比較的冷たいドアのクエリー


1、ビューの作成:ビューは特殊なテーブルとして、sqlクエリーを有効にカプセル化することができ、テーブルにインタフェースをカプセル化することに相当する.
//    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