この記事では主に Oracle の単純なクエリと限定的なクエリを紹介します。以下では多くを述べませんが、見てみましょう。
SQL:
1. DML (データ操作言語): 主にデータベースのクエリおよび更新操作を指します。クエリ操作は SQL 構文全体の中で最も面倒な部分であり、筆記テストで最もよく使用される部分です。 。
2. DDL (データ定義言語): 主にデータ オブジェクト (テーブル、ユーザーなど) の作成を指します。例: 関連する設計パラダイムが必要です。
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;
5. where 句は通常、from 句の後に記述されますが、where 句は表示の操作を制御します。 select はデータ列を制御しますが、select 句は where 句の実行よりも遅れるため、select 句で定義されたエイリアスを where で使用することはできません。 限定クエリ: 1、関係演算子:
select empno||ename from emp;
select * from emp where sal>1500; select * from emp where ename ='SMITH' select empno,ename,job from emp where job<>'SALESMAN';
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;
4、空の判断(Nullは意味します)データベース上の不確実性。データ列で null が使用されている場合、それは 0 を意味しません)
select * from emp where sal between 1500 and 2000; select * from emp where hiredate between '01-1月-1981'and'31-12月-1981';
select * from emp where comm is not null;
not in と null の問題について: 範囲判定に not in を使用する場合、範囲に null が含まれる場合、結果は返されません。 6、ファジークエリ: "-": 任意の 1 文字と一致します。 "%": 任意の 0、1、または複数の文字と一致します。 名前が文字 A で始まる従業員情報をクエリします。 2番目の文字がA: ; DESC: 降順に並べ替えます。すべての従業員情報をクエリします。要件は給与が高いものから低いものまでです: 各従業員の番号、名前、年収を年収順にクエリします。低いものから高いものまで:
select * from emp where empno in (7369,7566,7788,9999);
基本的な演習:
1、部門 30 のすべての従業員を選択:
select * from emp where ename like 'A%'
2すべての事務員の名前、番号、部門番号をリストします:
select * from emp where ename like '_A%';
3. 給与よりも手数料が高い従業員の 60% を検索します:
select * from emp where ename like '%A%';
4. すべてのマネージャーを検索します。部門 10 と部門 20 のすべての事務員:
select * from emp order by sal desc;
select empno ,ename,sal*12 income from emp order by income;
select * from emp where deptno=30;
select ename,empno,deptno from emp where job='CLERK';
select * from emp where comm>sal*0.6 ;
8、「R」を含まない従業員名を表示:
select * from emp where (deptno=10 and job='MANAGER' )or(deptno=20 and job='CLERK' );