Oracleエントリーノート【1】簡易クエリーと限定クエリー

3818 ワード

SQL:


1,DML(データ操作言語):主にデータベースのクエリーと更新の操作を指し、クエリー操作はsql文法全体で最も面倒で筆記試験で最もよく使われる部分である。


2,DDL(データ定義言語):主にデータオブジェクトの作成(テーブル、ユーザ)、例えばcreatを指す.関連するデザインパターンが必要です。


3,DCL(データ制御言語):主に権限の操作を行い(ユーザーと組み合わせて観察する必要がある)、この部分はDBAが担当する。


単純なクエリー:

  • 1、select句を利用して表示するデータ列を制御する:
  •  select empno,ename,ename,job,sal from emp;
    
  • 2、distinctを使用して重複するデータ行表示を除去することができる:
  •  select distinct job from emp;
    
  • 3、select句は4つの演算が可能で、定数の内容を直接出力することができますが、文字列については単一引用符の数字で直接記述され、日付フォーマットは文字フォーマット:
  • に従います.
      select empno,ename,(sal*15+(200+100)) income from emp;
    
  • 4,||出力コンテンツ接続を担当するこのような操作は、クエリに直接現れることは少ない:
  •    select empno||ename from emp;
    
  • 5,where句は一般にfrom句の後に書かれるが、from句の直後に実行され、where句はデータ行を表示する操作を制御するが、selectはデータ列を制御し、select句はwhere句の実行に遅れるため、select句で定義された別名はwhereでは使用できない.

  • 限定クエリー:


    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、または複数の文字に一致します.
  • 名前照会アルファベットAで始まる従業員情報:
  • select * from emp where ename like 'A%'
  • 名前の2番目のアルファベットはAの従業員情報です:
  • select * from emp where ename like '_A%';
  • 名前の任意の場所がAの従業員情報であることを問い合わせる:
  • select * from emp where ename like '%A%';

    クエリーのソート:


    ASC(デフォルト):昇順で並べ替えます。


    DESC:降順に並ぶ;

  • すべての従業員情報を照会し、賃金の高いものから低いものへの要求:
  • select * from emp order by sal desc;
  • 各従業員の番号、名前、年俸を照会し、年俸に基づいて低い順に並べ替えます:
  • select empno ,ename,sal*12 income from emp order by income;

    文の実行順序: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;