sql クエリ ステートメント: 1. テーブル構造を表示 [SQL>DESC emp]; 2. すべての列をクエリ [SQL>SELECT * FROM emp]; 3. 指定された列をクエリ; 4. 指定された行をクエリ; 5. 算術式を使用する; 6. 論理演算記号を使用する。
推奨 (無料): sql チュートリアル
#sql クエリ ステートメント:
1. 単純なクエリ ステートメント
##1. テーブル構造の表示
SQL>DESC emp;
2. すべての列をクエリする
SQL>SELECT * FROM emp;
3. 指定した列をクエリする
SQL>SELECT empmo, ename, mgr FROM emp; SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项
4. 指定した行をクエリする
SQL>SELECT * FROM emp WHERE job='CLERK';
5. 算術式を使用します
SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp; nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。 SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序) SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82';
6. like 演算子 (%,_)
を使用します% は 1 つ以上の文字を表し、_ は文字を表し、[charlist] は文字列内の任意の 1 文字を表し、[^charlist] または [!charlist] は文字列にない任意の 1 文字を表します。SQL>SELECT * FROM emp WHERE ename like 'S__T%';
7. where 条件で In
SQL>SELECT * FROM emp WHERE job IN ('CLERK','ANALYST');
# を使用します。 8. フィールドの内容が空であるか空ではないというステートメントをクエリします
SQL>SELECT * FROM emp WHERE mgr IS/IS NOT NULL;
9. 論理演算記号を使用します
SQL>SELECT * FROM emp WHERE (sal>500 or job='MANAGE') and ename like 'J%';
10. クエリ結果をフィールド値で並べ替えます#SQL>SELECT * FROM emp ORDER BY deptno, sal DESC; (按部门升序,并按薪酬降序)
SQL>SELECT CASE a WHEN "original_a" THEN "新命名Aa" WHEN "original_b" THEN "新命名Bb" END AS XXX;
元のテーブル
b | c | |
... | ... | |
... | ... |
新しい名前 Aa |
新しい名前 Bb |
SQL>SELECT DATE_FORMAT(start_time,"%Y-%m-%d") as "时间";
1. データのグループ化 (最大、最小、平均、合計、カウント)
SQL>SELECT MAX(sal),MIN(age),AVG(sal),SUM(sal) from emp; SQL>SELECT * FROM emp where sal=(SELECT MAX(sal) from emp)); SQL>SELEC COUNT(*) FROM emp;
SQL>SELECT deptno,MAX(sal),AVG(sal) FROM emp GROUP BY deptno; SQL>SELECT deptno, job, AVG(sal),MIN(sal) FROM emp group by deptno,job having AVG(sal)<2000;
データ グループ化の概要:
a. グループ化関数は、次の場合にのみ使用できます。 select list、having、order by 句 (where には使用できません)
b. select ステートメントに group by、having、order by も含まれている場合、それらの順序は group by、持っている、までに注文する。
c. 選択列に列、式、およびグループ化関数がある場合、これらの列と式は group by 句に含める必要があり、そうでない場合はエラーが発生します。つまり、SELECT 句の列名はグループ化列または列関数である必要があります
SQL>SELECT e.name,e.sal,d.dname FROM emp e, dept d WHERE e.deptno=d.deptno order by d.deptno; SQL>SELECT e.ename,e.sal,s.grade FROM emp e,salgrade s WHER e.sal BETWEEN s.losal AND s.hisal; Select a.*, b.x, c.y from a left outer join (Select * from tablex where condition1)b on a.id=b.id left outer join (Select * from tabley where condition2)c on a.id=c.id where condition3;
4. 自己結合 (同じテーブルの接続クエリを参照)
SQL>SELECT er.ename, ee.ename mgr_name from emp er, emp ee where er.mgr=ee.empno;
5. サブクエリ (他の SQL ステートメントに埋め込まれた select ステートメント、ネストされたクエリとも呼ばれます)
5.1 単一行サブクエリSQL>SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM emp where ename='SMITH');
5.2 複数行のサブクエリ
SQL>SELECT ename,job,sal,deptno from emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno=10);
部門番号と同じ職務を持つ従業員の名前と職務をクエリします。表の10、給与、部門番号。返された結果には複数の行があるため、サブクエリ ステートメントを接続するために「IN」が使用されます。
5.3 ALL
SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ALL (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MAX(sal) FROM emp WHERE deptno=30);
を使用して、部門番号 30 の全従業員よりも給与が高い従業員の名前、給与、および部門番号をクエリします。上記 2 つのステートメントは機能的には同じですが、実行効率の点では、機能ははるかに高くなります。
5.4 ANY
SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ANY (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MIN(sal) FROM emp WHERE deptno=30);
を使用して、部門番号 30 の従業員よりも給与が高い従業員の名前、給与、部門番号をクエリします (給与が 30 より高い場合に限ります)。とある社員)。上記 2 つのステートメントは機能的には同じですが、実行効率の点では、機能ははるかに高くなります。
5.5 複数列のサブクエリ
SQL>SELECT * FROM emp WHERE (job, deptno)=(SELECT job, deptno FROM emp WHERE ename='SMITH');
5.6 from 句でのサブクエリの使用
SQL>SELECT emp.deptno,emp.ename,emp.sal,t_avgsal.avgsal FROM emp,(SELECT emp.deptno,avg(emp.sal) avgsal FROM emp GROUP BY emp.deptno) t_avgsal where emp.deptno=t_avgsal.deptno AND emp.sal>t_avgsal.avgsal ORDER BY emp.deptno;
5.7 ページング クエリ
データベース内のデータの各行には、対応する行番号は rownum と呼ばれます。
SQL>SELECT a2.* FROM (SELECT a1.*, ROWNUM rn FROM (SELECT * FROM emp ORDER BY sal) a1 WHERE ROWNUM<=10) a2 WHERE rn>=6;
クエリ列の指定、クエリ結果の並べ替えなどを行うには、最も内側のサブクエリを変更するだけで済みます。
5.8 クエリ結果を含む新しいテーブルの作成
SQL>CREATE TABLE mytable (id,name,sal,job,deptno) AS SELECT empno,ename,sal,job,deptno FROM emp;
5.9 クエリのマージ (和集合、交差積、全和集合、マイナス差分セット)
SQL>SELECT ename, sal, job FROM emp WHERE sal>2500 UNION(INTERSECT/UNION ALL/MINUS) SELECT ename, sal, job FROM emp WHERE job='MANAGER';
マージ クエリ実行効率は、and や or などの論理クエリよりもはるかに高くなります。
5.10 サブクエリを使用してデータを挿入する
SQL>CREATE TABLE myEmp(empID number(4), name varchar2(20), sal number(6), job varchar2(10), dept number(2));
まず空のテーブルを作成します;
SQL>INSERT INTO myEmp(empID, name, sal, job, dept) SELECT empno, ename, sal, job, deptno FROM emp WHERE deptno=10;
次に、emp テーブルの部門番号 10 のデータを新しいテーブル myEmp に挿入します。データのバッチクエリを実現します。
5.11 クエリを使用してテーブル内のデータを更新する
SQL>UPDATE emp SET(job, sal, comm)=(SELECT job, sal, comm FROM emp where ename='SMITH') WHERE ename='SCOTT';
php プログラミング
(ビデオ)以上がSQLクエリステートメントとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。