MySql--基本クエリー

8667 ワード

My SQLの基本クエリー
一、SQLの分類
      (DQL Data Query Language):select
      (DML Data Manipulation Language):insert,delete,update(       )
      (DDL Data Definition Language):create,drop,alter(      )
      (TCL Transactional Control Language):commit,rollback
      (DCL Data Control Language):grant,revoke 

二、常用命令
                  :show databases;
     :create database     ;
     :use     ;
    :source   ;
     :drop database     ;
          :select database();
          :show tables;
     :desc   ;
     :exit/ctrl+c/quit
        :show tables from     ;
        :show create table   ;

三、DQL
クエリーフィールド:
select     from   ;

  :select ename from emp;
  :select empno,ename from emp;
  :select * from emp;

別名の使用:
select empno,ename,sal*12 as yearsal from emp;
as       
     ,    ''
select empno,ename,sal*12 '  ' from emp;

  :SQL     select,           ,
            ;

1、条件照会:
My SQLの基本クエリー
whereキーの使用:
      5000     :
select empno,ename,sal from emp where sal=5000;

   double  ,     '';     
select empno,ename,sal from emp where sal>'3000';

      3000      5000:
select empno,ename,sal from emp where sal>=3000 and sal<=5000;
 :select empno,ename,sal from emp where sal between 3000 and 5000;

  :between...and...       ,     

between...and..       :    :
select ename from emp where ename between 'A' and 'K';
     A    K

null:値ではありません.何でもないことを示します.空です.
           :
select ename,comm from emp where comm is null;

          :
select ename,comm from emp where comm is not null;

and:or:または(and優先度がorより高い)
    salesman manage   
select ename,job from emp where job='salesman' or job='manager';

      1800   ,       20  30 
select empno,ename,sal,deptno 
from emp 
where sal>1800 and (deptno=20 or deptno=30);

in:ある範囲で検索
       manager      salesman   :
select ename,job
from emp
where job='manager' or job='salesman';

  in:
select ename,job 
from emp 
where job in('manager','salesman');

     1500 5000   :
select ename,sal
from emp
where sal in(1500,5000);

      1500 5000   :
select ename,sal
from emp
where sal not in(1500,5000);

Like:ファジイクエリ
%:0~N     
_:      

       O   :
select ename from emp where ename like '%O%';

        S   :
select ename from emp where ename like'S%';

         T   :
select ename from emp where ename like '%T';

        A   :
select ename from emp where ename like '_A%';

        A   :
select ename from emp where ename like '__A%';

          N   :
select ename from emp where ename like '%N_';

2、並べ替え:
ソートはorder by句を採用し、order byの後ろにソートフィールドをフォローし、ソートフィールドは複数配置でき、複数はカンマ間隔を採用し、order byのデフォルトは昇順(asc)を採用し、where句が存在する場合、order byはwhere文の後ろに置かなければならない.
      :
select ename,sal from emp order by sal;

      (  ):
select ename,sal from emp order by sal desc;

      ,       ,       
select ename,sal from emp order by sal desc,ename asc;

          (ename,sal  sal)
               , 1  
select ename,sal from emp order by 2;

3、データ処理関数/単行処理関数:
≪単行処理関数|Single Processing Function|oem_src≫:現在の行のみを処理します.
   :(       ,            )
select lower(ename) from emp;

   :
select upper(ename) as ename from emp;

substr:
select substr(ename,1,1) from emp;

            A   :
select ename from emp where substr(ename,2,1)='A';

length:
select length(ename) from emp;

trim:
select ename from emp where ename =trim('  smith   ');

      :
select round(123.456,2);

     :(0    )
select round(123.456,0);

     ,  ,  :-1,-2,-3
select round(123.456,-1)   120
select round(123.456,-2)   100
select round(153.456,-2)   200

     :
select rand();  

ifnull:
        0:
select ename,ifnull(comm,0) from emp;

  :null    ,    null

     ,   100:
select sal + ifnull(comm,100) from emp;

    :
select ename,(sal+ifnull(comm,0))*12 as yearsal from emp;

データベースの日付処理について
データベースごとに日付を処理する際に採用されるメカニズムは異なり、日付処理には独自のメカニズムがあるため、実際の開発ではテーブルのフィールドがdateタイプとして定義されることは少ない.日付タイプを使用するとjavaプログラムは通用しないからです.実際の開発では、「日付文字列」を使用して日付を表すのが一般的です.
mysqlデータベース管理システムでは、日付の処理に2つの重要な関数があります.
str_to_date
date_format

JAvaの日付フォーマット:
YYYY  
MM    
dd    
HH    
mm    
ss    
SSS    

JAvaで
           :
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse("1970-10-10");

     :
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date nowTime = new Date();
String strTime = sdf.format(nowTime);

mysqlの日付フォーマット:
%Y   
%m   
%d   
%H   
%i   
%s   

str_to_date関数:
  : “     ”   “    ”  。(varchar--->date)
    : date  
    :str_to_date('     ','    ')

例:
   1980-12-17     (hiredate date  ):
select ename,hiredate from emp where hiredate='1980-12-17';
     :mysql       :%Y-%m-%d,        '1980-12-17'            ,
         ,                ,             。

select ename,hiredate from emp where hiredate='12-17-1980';
    :
'12-17-1980'      mysql         ,
hiredate date  ,'12-17-1980'      varchar  ,
     ,       ,    。

  :
select ename,hiredate from emp where hiredate=str_to_date('12-17-1980','%m-%d-%Y');

str_to_date関数は通常、挿入操作で使用されます.フィールドはdateタイプで、文字列varcharタイプは受信されません.この関数でvarcharをdateにしてからデータを挿入する必要があります.成功することができます.
date_format関数:
  :     date               varchar(date--->varchar)
    :varchar  (       )
  :date_format(      ,'    ')

例:
         , '10-12-1980'     
select ename,date_format(hiredate,'%m-%d-%Y') as hiredate from emp;

         , '10/12/1980'     
select ename,date_format(hiredate,'%m/%d/%Y') as hiredate from emp;

    DQL         :
select ename,hiredate from emp;(hiredate     varchar  ,  '%Y-%m-%d'  )
select ename,date_format(hiredate,'%Y-%m-%d') as hiredate from emp;

結論:date_format関数は主にクエリー操作で使用されます.お客様が特定のフォーマットで日付を表示する必要がある場合は、この関数を使用する必要があります.
4、グループ化関数/集約関数/複数行処理関数:
count sum max min avg:(nullを自動的に無視)
  :select sum(sal) from emp;
    :select avg(sal) from emp;
    :select max(sal) from emp;
    :select min(sal) from emp;
  :select count(ename) from emp;

注意:count
        null     :select count(comm) from emp;
             :select count(*) from emp where comm is null;

パケット関数はwhere句で直接使用できません.
select ename,sal from emp where sal>avg(sal);  !

distinct:重複レコードを除去し、すべてのフィールドの一番前にのみ表示されます.
select distinct job from emp;
           :
select count(distinct job) from emp;

グループクエリー:
主に2つの句に関連します:groupbyとhaving
group by:              

having: where  ,           ,
        where having        
        where group by      
        having group by      

例:
             :
         ,  max           :
select max(sal) from emp group by job;

         select  ,          5     
select job,max(sal) from emp group by job;

ename     select  ,         
select ename,job,max(sal) from emp group by job;
--mysql   ,          ,   ,          
--oracle    ,    ,       。

要約:文にgroupby句がある場合、selectの後にはグループに参加するフィールドとグループ関数しかありません.
例:
           (        ,         ):
select deptno,avg(sal) as avgsal from emp group by deptno;

                    :
select deptno,job,max(sal) from emp group by deptno,job;
//deptno,job          。

             , manager  :
select job,max(sal) from emp where job<>'manager' group by job;

             ,          1500:
select job,avg(sal) from emp where avg(sal)>1500 group by job;
  !where              
              ,     group by, group by where    
  having:
select job,avg(sal) from emp group by job having avg(sal)>1500;

注意:できるだけwhereでフィルタリングし、フィルタリングできないデータは、通常はグループ化してからフィルタリングする必要がありますが、この場合はhavingを使用することができます.(効率の問題)
まとめ:DQL文の完全なまとめ:
select ...
from ...
where ...
group by ..
having ...
order by...

  :           ,    
  :    :
1.from               
2.where              
3.group by      
4.having              
5.select        
6.order by