MySql--基本クエリー
My SQLの基本クエリー
一、SQLの分類
二、常用命令
三、DQL
クエリーフィールド:
別名の使用:
1、条件照会:
My SQLの基本クエリー
whereキーの使用:
null:値ではありません.何でもないことを示します.空です.
and:or:または(and優先度がorより高い)
in:ある範囲で検索
Like:ファジイクエリ
2、並べ替え:
ソートはorder by句を採用し、order byの後ろにソートフィールドをフォローし、ソートフィールドは複数配置でき、複数はカンマ間隔を採用し、order byのデフォルトは昇順(asc)を採用し、where句が存在する場合、order byはwhere文の後ろに置かなければならない.
3、データ処理関数/単行処理関数:
≪単行処理関数|Single Processing Function|oem_src≫:現在の行のみを処理します.
データベースの日付処理について
データベースごとに日付を処理する際に採用されるメカニズムは異なり、日付処理には独自のメカニズムがあるため、実際の開発ではテーブルのフィールドがdateタイプとして定義されることは少ない.日付タイプを使用するとjavaプログラムは通用しないからです.実際の開発では、「日付文字列」を使用して日付を表すのが一般的です.
mysqlデータベース管理システムでは、日付の処理に2つの重要な関数があります.
JAvaの日付フォーマット:
JAvaで
mysqlの日付フォーマット:
str_to_date関数:
例:
str_to_date関数は通常、挿入操作で使用されます.フィールドはdateタイプで、文字列varcharタイプは受信されません.この関数でvarcharをdateにしてからデータを挿入する必要があります.成功することができます.
date_format関数:
例:
結論:date_format関数は主にクエリー操作で使用されます.お客様が特定のフォーマットで日付を表示する必要がある場合は、この関数を使用する必要があります.
4、グループ化関数/集約関数/複数行処理関数:
count sum max min avg:(nullを自動的に無視)
注意:count
パケット関数はwhere句で直接使用できません.
distinct:重複レコードを除去し、すべてのフィールドの一番前にのみ表示されます.
グループクエリー:
主に2つの句に関連します:groupbyとhaving
例:
要約:文にgroupby句がある場合、selectの後にはグループに参加するフィールドとグループ関数しかありません.
例:
注意:できるだけwhereでフィルタリングし、フィルタリングできないデータは、通常はグループ化してからフィルタリングする必要がありますが、この場合はhavingを使用することができます.(効率の問題)
まとめ:DQL文の完全なまとめ:
一、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