Oracleエントリーノート【1】簡易クエリーと限定クエリー
3818 ワード
SQL:
1,DML(データ操作言語):主にデータベースのクエリーと更新の操作を指し、クエリー操作はsql文法全体で最も面倒で筆記試験で最もよく使われる部分である。
2,DDL(データ定義言語):主にデータオブジェクトの作成(テーブル、ユーザ)、例えばcreatを指す.関連するデザインパターンが必要です。
3,DCL(データ制御言語):主に権限の操作を行い(ユーザーと組み合わせて観察する必要がある)、この部分はDBAが担当する。
単純なクエリー:
select empno,ename,ename,job,sal from emp;
select distinct job from emp;
select empno,ename,(sal*15+(200+100)) income from emp;
select empno||ename from emp;
限定クエリー:
1、関係演算子:
select * from emp where sal>1500;
select * from emp where ename ='SMITH'
select empno,ename,job from emp wherejob<>'SALESMAN';
2、論理演算子:
select * from emp where sal>1500 and sal<3000; select * from emp where sal>2000 or job='CLERK'; select * from emp where not sal >=2000;
3、範囲クエリー:
select * from emp where sal between 1500 and 2000; select*from emp where hiredate between'01-1月-181'and'31-12月-181;
4,空判定(空はデータベース上で不確定を表し、データ列でnullを使用して0を表さない場合)
select * from emp where comm is not null;
5,INオペレータ(between andに類似し、inは指定された範囲を与える):
select * from emp where empno in (7369,7566,7788,9999);
not inとnullについて質問:
not inを用いて範囲判断を行う場合,範囲にnullがあれば結果は返されない.
6、ファジイクエリ:
「-」:任意の文字に一致します.
「%」:任意の0、1、または複数の文字に一致します.
クエリーのソート:
ASC(デフォルト):昇順で並べ替えます。
DESC:降順に並ぶ;
文の実行順序:from-where-select-order by
.
基礎練習:
1部門30の全従業員を選択:
select * from emp where deptno=30;
2、すべての事務員(clerk)の名前、番号、部門番号をリストします.
select ename,empno,deptno from emp where job='CLERK';
3、コミッションが給料の60%より高い従業員を探し出す:
select * from emp where comm>sal*0.6 ;
4、部門10のすべてのマネージャー(manager)と部門20のすべての事務員(clerk):
select * from emp where (deptno=10 and job='MANAGER' )or(deptno=20 and job='CLERK' );
5、部門10のすべてのマネージャー(manager)、部門20のすべての事務員(clerk)、およびマネージャーでも事務員でもないが、給料が2000以上のすべての従業員の資料を探し出す.
select * from emp where (deptno=10 and job='MANAGER')or(deptno=20 and job='CLERK')or(job!='MANAGER'and job!='CLERK' and sal>=2000);
select * from emp where (deptno=10 and job='MANAGER')or(deptno=20 and job='CLERK')or(job not in ('CLERK','MANAGER') and sal>=2000);
6、コミッションを受け取る従業員の異なる仕事を探し出します:
select distinct job from emp where comm is not null;
7、コミッションを受け取った或いは受け取ったコミッションが100未満の従業員を探し出す:
select distinct job from emp where comm is null or comm<100;
8「R」を持たない従業員の名前を表示します.
select * from emp whereename not like '%R%';
9、名前フィールドにAの全従業員の名前が表示されます.表示された結果は、基本給が高いから低いまで、給料が同じであれば、雇用年限が早いから遅いまで、雇用日が同じであれば、職階別にソートされます.
select * from emp where ename like '%A%' order by sal desc,hiredate asc,job;
1部門30の全従業員を選択:
select * from emp where deptno=30;
2、すべての事務員(clerk)の名前、番号、部門番号をリストします.
select ename,empno,deptno from emp where job='CLERK';
3、コミッションが給料の60%より高い従業員を探し出す:
select * from emp where comm>sal*0.6 ;
4、部門10のすべてのマネージャー(manager)と部門20のすべての事務員(clerk):
select * from emp where (deptno=10 and job='MANAGER' )or(deptno=20 and job='CLERK' );
5、部門10のすべてのマネージャー(manager)、部門20のすべての事務員(clerk)、およびマネージャーでも事務員でもないが、給料が2000以上のすべての従業員の資料を探し出す.
select * from emp where (deptno=10 and job='MANAGER')or(deptno=20 and job='CLERK')or(job!='MANAGER'and job!='CLERK' and sal>=2000);
select * from emp where (deptno=10 and job='MANAGER')or(deptno=20 and job='CLERK')or(job not in ('CLERK','MANAGER') and sal>=2000);
6、コミッションを受け取る従業員の異なる仕事を探し出します:
select distinct job from emp where comm is not null;
7、コミッションを受け取った或いは受け取ったコミッションが100未満の従業員を探し出す:
select distinct job from emp where comm is null or comm<100;
8「R」を持たない従業員の名前を表示します.
select * from emp whereename not like '%R%';
9、名前フィールドにAの全従業員の名前が表示されます.表示された結果は、基本給が高いから低いまで、給料が同じであれば、雇用年限が早いから遅いまで、雇用日が同じであれば、職階別にソートされます.
select * from emp where ename like '%A%' order by sal desc,hiredate asc,job;