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

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

Dec 10, 2020 pm 02:48 PM
SQLクエリ文

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='SMITH');
ログイン後にコピー
クエリ テーブル内の 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='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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SQL(水平、垂直)のデータ分割のさまざまな種類は何ですか? SQL(水平、垂直)のデータ分割のさまざまな種類は何ですか? Mar 13, 2025 pm 02:01 PM

SQL(水平、垂直)のデータ分割のさまざまな種類は何ですか?

SQLの外部キーの制約を処理する方法削除行を削除する SQLの外部キーの制約を処理する方法削除行を削除する Mar 04, 2025 pm 05:52 PM

SQLの外部キーの制約を処理する方法削除行を削除する

SQLで集計関数を使用してデータを要約するにはどうすればよいですか(Sum、Avg、Count、Min、Max)? SQLで集計関数を使用してデータを要約するにはどうすればよいですか(Sum、Avg、Count、Min、Max)? Mar 13, 2025 pm 01:50 PM

SQLで集計関数を使用してデータを要約するにはどうすればよいですか(Sum、Avg、Count、Min、Max)?

動的SQLを使用することのセキュリティリスクは何ですか?また、それらを緩和するにはどうすればよいですか? 動的SQLを使用することのセキュリティリスクは何ですか?また、それらを緩和するにはどうすればよいですか? Mar 13, 2025 pm 01:59 PM

動的SQLを使用することのセキュリティリスクは何ですか?また、それらを緩和するにはどうすればよいですか?

SQLのトランザクションの酸性特性は何ですか? SQLのトランザクションの酸性特性は何ですか? Mar 13, 2025 pm 01:54 PM

SQLのトランザクションの酸性特性は何ですか?

SQLのさまざまなトランザクション分離レベルは何ですか(コミットされていない読み取り、読み取り、繰り返し可能な読み取り、シリアル化可能)? SQLのさまざまなトランザクション分離レベルは何ですか(コミットされていない読み取り、読み取り、繰り返し可能な読み取り、シリアル化可能)? Mar 13, 2025 pm 01:56 PM

SQLのさまざまなトランザクション分離レベルは何ですか(コミットされていない読み取り、読み取り、繰り返し可能な読み取り、シリアル化可能)?

sql削除行と切り捨ての違いは何ですか sql削除行と切り捨ての違いは何ですか Mar 04, 2025 pm 05:49 PM

sql削除行と切り捨ての違いは何ですか

SQL削除行をテストする方法 SQL削除行をテストする方法 Mar 04, 2025 pm 05:53 PM

SQL削除行をテストする方法

See all articles