ホームページ > データベース > SQL > SQLクエリステートメントとは何ですか?

SQLクエリステートメントとは何ですか?

coldplay.xixi
リリース: 2023-01-13 00:40:45
オリジナル
68883 人が閲覧しました

sql クエリ ステートメント: 1. テーブル構造を表示 [SQL>DESC emp]; 2. すべての列をクエリ [SQL>SELECT * FROM emp]; 3. 指定された列をクエリ; 4. 指定された行をクエリ; 5. 算術式を使用する; 6. 論理演算記号を使用する。

SQLクエリステートメントとは何ですか?

推奨 (無料): 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; (按部门升序,并按薪酬降序)
ログイン後にコピー

11 . 使用例 ... when ... then ... クエリ結果の処理を終了

SQL>SELECT CASE a WHEN "original_a" THEN "新命名Aa" WHEN "original_b" THEN "新命名Bb" END AS XXX;
ログイン後にコピー
テーブル内のフィールドを選択し、XXX という名前を付けます。 original_a の場合、内容は「新しい名前 Aa」と表示されます。

元のテーブル

aoriginal_aoriginal_b#クエリ結果
bc
......
......

XXX新しい名前 Aa新しい名前 Bb 12. 日付データのフォーマット

SQL>SELECT DATE_FORMAT(start_time,"%Y-%m-%d") as "时间";
ログイン後にコピー
2. 複雑なクエリ

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;
ログイン後にコピー
2. グループ化 (クエリ グループ統計に使用)

#
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 句の列名はグループ化列または列関数である必要があります

  • #3. マルチテーブル クエリ
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=&#39;SMITH&#39;);
ログイン後にコピー
クエリ テーブル内の smith と同じ部門の人の名前をクエリします。返される結果は 1 行だけであるため、サブクエリ ステートメントを「=」で接続します。

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=&#39;SMITH&#39;);
ログイン後にコピー

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=&#39;MANAGER&#39;;
ログイン後にコピー

マージ クエリ実行効率は、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=&#39;SMITH&#39;) WHERE ename=&#39;SCOTT&#39;;
ログイン後にコピー

関連する無料学習の推奨事項:

php プログラミング

(ビデオ)

以上がSQLクエリステートメントとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート