Mysqlデータベース操作(四)----データ照会言語(DQL)

9316 ワード

DQL–データ問合せ言語
クエリーでは、データベース・テーブルのレコードは変更されません.
一、基本クエリー
1.フィールド(列)制御
1)すべての列を問い合わせる
//  “*”       

 SELECT * FROM   ;
 SELECT * FROM emp;

2)クエリー指定列
 SELECT  1 [,  2, ...  N] FROM   ;
 SELECT empno, ename, sal, comm FROM   ;

3)完全に重複した記録は1回のみ
クエリ結果の複数行レコードが同じである場合、1行のみが表示されます.通常、すべてのカラムをクエリーする場合はめったにありませんが、1つのカラム(または数カラム)だけをクエリーする場合は、これは大きくなる可能性があります.
//         ,              !

 SELECT DISTINCT * |  1 [,  2, ...  N] FROM   ;
 SELECT DISTINCT sal FROM emp;

4)列演算
I数量タイプの列は加算、減算、乗算、除算が可能
 SELECT sal*1.5 FROM emp;
 SELECT sal+comm FROM emp;

II文字列タイプは連続演算が可能
 SELECT CONCAT('$', sal) FROM emp;

III NULL値の変換
NULLを他の値に変換する必要がある場合があります.たとえばcom+1000の場合、com列にNULL値がある場合、NULL+1000はNULLですが、NULLの現在の0を演算したい場合があります.
//IFNULL(comm, 0):  comm   NULL ,    0   。
 SELECT IFNULL(comm, 0)+1000 FROM emp;

IV列に別名を付ける
カラム演算を使用すると、クエリされた結果セットのカラム名が面白くないことに気づいたかもしれません.この場合、カラム名に別名を付ける必要があります.これにより、結果セットのカラム名に別名が表示されます.
//  AS    
 SELECT IFNULL(comm, 0)+1000 AS    FROM emp;

2.条件制御
1)条件クエリー
前述したUPDATE文やDELETE文と同様に、SELECT文はWHERE句を使用して記録を制御することもできます.
SELECT empno,ename,sal,comm FROM emp WHERE sal > 10000 AND comm IS NOT NULL;

SELECT empno,ename,sal FROM emp WHERE sal BETWEEN 20000 AND 30000;

SELECT empno,ename,job FROM emp WHERE job IN ('  ', '   ');

2)ファジイクエリ
姓張と名前の合計2文字の従業員を検索したい場合は、あいまいなクエリーを使用して曖昧なクエリーを検索するには、演算子:LIKE、そのうち_任意の文字を一致させ、複数ではなく1文字のみを一致させることに注意してください.
//         ,           。
 SELECT * FROM emp WHERE ename LIKE ' _';

//   3       
 SELECT * FROM emp WHERE ename LIKE '___'; 
//         ,               “%” 。  %  0~N     .
 SELECT * FROM emp WHERE ename LIKE ' %';
//                         ,  %  0~N   ,                    。
  SELECT * FROM emp WHERE ename LIKE '% %';
//          ,      NULL      !
  SELECT * FROM emp WHERE ename LIKE '%';

二、並べ替え
1)昇順
// sal  ,  !  ASC      
  SELECT * FROM WHERE emp ORDER BY sal ASC;

2)降順
// comm  ,  !  DESC    
 SELECT * FROM WHERE emp ORDER BY comm DESC;

3)複数の列を並べ替え条件として使用
//  sal   ,  sal   ,  comm    
 SELECT * FROM WHERE emp ORDER BY sal ASC, comm DESC;

三、集約関数
集約関数は、カラムの縦演算に使用されます.
1) COUNT
//  emp        NULL      
  SELECT COUNT(*) FROM emp;
//    emp  comm   NULL      
  SELECT COUNT(comm) FROM emp;

2) MAX
//       
  SELECT MAX(sal) FROM emp;

3) MIN
//      
  SELECT MIN(sal) FROM emp;

4) SUM
//     
  SELECT SUM(sal) FROM emp;

5) AVG
//      
  SELECT AVG(sal) FROM emp;

四、グループクエリー
パケット・クエリーは、レコードをカラムでグループ化し、グループ情報をクエリーします.
1)全部門のレコード数を表示します.
//  deptno  ,               
  SELECT deptno, COUNT(*) FROM emp GROUP BY deptno;
//  job  ,           
  SELECT job, MAX(SAL) FROM emp GROUP BY job;

2)グループ条件
  //     ,       。        3
  SELECT deptno, COUNT(*) FROM emp GROUP BY deptno HAVING COUNT(*) > 3;

五、limit句(方言)
LIMITは、クエリ結果の開始ローと合計ローの数を定義します.
1)クエリー開始動作5行目、合計3行のレコード
//  4    5   ,  3      3 。  5、6、7   。
 SELECT * FROM emp LIMIT 4, 3;

六、照会のテンプレート
select
from
where
group by
having
order by