データベースの例を通して単一テーブルクエリを理解する

記事ディレクトリ

 

コンテンツ

記事ディレクトリ

序文

5.1単一テーブルクエリ

例:最初にテーブルと基本データを準備します

クエリで特定の列を選択します

クエリでの算術式の使用

クエリで使用される列のエイリアス

クエリでDISTINCT演算子を使用する

修飾されたクエリ

BETWEEN...AND演算子

比較演算子:IN、NOT IN

ヌル

ファジークエリのように

クエリ演算子の優先度を制限する

注文者

制限制限クエリ

GROUPBYクエリ


序文

みなさん、こんにちは。私は氷の色の3点です。個人ホームページ:氷三色のブログ

この記事では、単一テーブルクエリに関するいくつかの知識と例について説明します。

通りすがりの友達、いいねして、歩く前にフォローしてください。コメントエリアへようこそ。コミュニケーションをとってください。一生懸命働き始めるのに遅すぎることはないので、この記事から始めることをお勧めします。

一緒に成長しましょう!詰め替え


5.1単一テーブルクエリ

単一テーブルクエリとは、テーブルのデータをクエリすることです。

例:最初にテーブルと基本データを準備します

このテーブルが存在する必要があります。存在しない場合、以下の従業員テーブルの作成時にエラーが報告されます。

-従業員テーブル

存在しない場合はテーブルを作成する従業員(

empno iNT(4)NOT NULL AUTO_INCREMENT、

ename CHAR(8)NOT NULL COMMENT'従業員名'、

job VARCHAR(20)NOT NULL COMMENT'job'、

mgr INT(4)COMMENT'マネージャー'、

採用日DATENOTNULL COMMENT'採用日'、

sal FLOAT(7,2)NOT NULL COMMENT'salary'、

comm VARCHAR(20)COMMENT'備考'、

deptno iNT(2)NOT NULL COMMENT'部門番号'、

CONSTRAINT pk_emp PRIMARY KEY(empno)、

CONSTRAINT fk_emp_dept FOREIGN KEY(deptno)REFERENCES部門(deptno)

);

従業員の値に挿入

(7369、「SMITH」、「CLERK」、7902、「2008-12-17」、800、NULL、20)、

(7521、「WARD」、「SALESMAN」、7698、「2008-04-22」、1250、500、30)、

(7566、'JONES'、'MANAGER'、7839、 '2008-03-02'、2975、NULL、20)、

(7654、「MARTIN」、「SALESMAN」、7698、「2008-09-28」、1250、1400、30)、

(7698、「BLAKE」、「MANAGER」、7839、「2008-05-01」、2850、NULL、30)、

(7839、'KING'、'PRESIDENT'、NULL、 '2008-01-17'、5000、NULL、10)、

(7844、'TURNER'、'SALESMAN'、7698、 '2008-09-08'、1500,0,30)、

(7876、'ADAMS'、'CLERK'、7788、 '2009-03-23'、1100、NULL、20)、

(7900、'JAMES'、'CLERK'、7698、 '2008-12-03'、950、NULL、30)、

(7902、'FORD'、'ANALYST'、7566、 '2008-12-03'、3000、NULL、20);

わかった!データを取得してクエリを開始する準備をします

クエリで特定の列を選択します

従業員テーブル内のすべての従業員のすべての情報をクエリします(*クエリデータテーブルのすべての列を示します)

SELECT*FROM従業員;

従業員番号、名前、月給を照会します。列の一部を照会します(列はコンマで区切られ、列の順序によって列の表示順序が決まります)。

SELECT empno、ename、sal FROM employee;

クエリでの算術式の使用

算術式を使用して、従業員の月給あたり500元の増加を計算します

SELECT empno、ename、sal、500 + sal FROM employee;

算術式を使用して、月給が500元増加した後の年俸を計算します

SELECT empno、ename、(500 + sal)*12FROM従業員;

クエリで使用される列のエイリアス

ASまたは列名とエイリアスの間にスペースを使用します。これは、引用符で囲まれている場合とされていない場合があります。エイリアスに特殊文字が含まれている場合は、引用符が必要です。

列のエイリアス(頭に浮かぶ名前を列に付けることができます)

SELECT empno AS'従業員番号'、ename'従業員名'、(500 + sal)*12年俸FROM従業員;

クエリでDISTINCT演算子を使用する

DISTINCT演算子は、指定された列データの重複レコードを削除するために使用されます

従業員からDISTINCTジョブを選択します。

修飾されたクエリ

制限付きクエリとは、データをクエリするときに一連のフィルター条件を設定することを指し、指定された条件を満たすデータのみが表示されます。

WHEREは、取得したテーブルの行データを制限する条件式を形成するために使用されます。

データフィルタリングの条件式が続きます。条件式では、関係演算子、論理演算子、BETWEEN ... AND範囲クエリ演算子、IN(NOT IN)リスト範囲クエリ演算子、およびNULL値判定演算子を使用できます。、LIKEファジークエリ演算子など。

SALES部門(部門番号30)の全従業員の名前、月給、年俸を照会します(部門の年末ボーナスが10,000人/人であると想定)。

SELECT ename、sal、12 * sal + 10000AS年月FROM従業員WHEREdeptno= 30;

給与が1500〜2900の従業員のリストを照会します

SELECT empno、ename、sal FROM employee WHERE sal> = 1500 AND sal <= 2900;

BETWEEN...AND演算子

主に、指定されたデータ範囲に対してクエリを実行するために使用されます。指定された範囲のデータは、数値、文字列、または日付にすることができます。

給与が1500〜2900の従業員のリストを照会します

SELECT empno、ename、sal FROM employee WHERE sal BETWEEN 1500 AND 2900;

1981年1月1日から1981年12月31日までの間に入社した従業員を検索します

SELECT empno、ename、hiredate FROM employee WHEREhiredate BETWEEN '2008-12-01' AND '2008-12-31';

指定された範囲外のデータは、NOT BETWEEN...AND演算子を使用します

1981年1月1日から1981年12月31日までの間に入社しなかった従業員のクエリ

SELECT empno、ename、hiredate FROM employee

'2008-12-01'と'2008-12-31'の間に雇用日がない場合;

比較演算子:IN、NOT IN

INは、特定の値がリストに表示されるかどうかをテストするために使用されます。NOT INは、一部の値がリストに表示されないかどうかをテストするために使用されます

役職が営業、書記、またはマネージャーである人を検索します。

SELECT empno、ename、job FROM employee

WHERE job IN('SALESMAN'、'CLERK'、'MANAGER');

ヌル

SQLには、nullと呼ばれる特別な値があります。0でもスペースでもありません。その値は未定義で、不明で、不確定です。ISキーワードを使用して、それがNULLであるかどうかを判断し、「=」を使用できないようにします。

ボーナス付きの従業員情報を照会します(COMM列の値はNULLではありません)

SELECT empno、ename、job、sal、comm FROM employee WHERE comm IS NOT NULL;

ファジークエリのように

ファジークエリは、クエリ対象のデータのメモリがあまり明確でない場合に使用されます。ファジークエリはLIKE演算子を使用します。(これは前に説明しました)LIKEの後には、キーワードとワイルドカードで構成される、引用符で囲まれた一致条件が続きます。NOT LIKEは、ファジークエリが満たされていないことを意味します。

注:LIKE句には次の2つのワイルドカードがあります。%:任意のタイプと長さ(0以上)の文字に一致できます。_:任意の1文字に一致します。多くの場合、式の文字長を制限するために使用されます。

名前がJで始まり、名前の最後の2文字がEで、任意の文字である従業員情報を照会します。

SELECT empno、ename、job FROM employee WHERE ename LIKE'J%E_';

クエリ演算子の優先度を制限する

高から低の順に:

算術演算子>連結演算子>比較演算子>ISNULL、IS NOT NULL> LIKE、NOT LIKE、IN、NOT IN> BETWEEN、NOT BETWEEN> NOT> AND> OR

注文

クエリ操作を実行すると、デフォルトで行データが挿入された順序で行データが表示されます。実際のアプリケーションでは、より直感的なデータを表示するためにデータを並べ替える必要があることがよくあります。並べ替えは、ORDERBY句を使用しています。WHEREは状態を意味します。

注:ASCは昇順を表します。これはデフォルト値であり、省略できます。DESCは降順を表します。

営業部門(No. 30)の従業員の給与とボーナス情報を照会します。給与は降順でソートされます。

SELECT ename、job、sal、comm FROM employee WHERE deptno = 30 ORDER BY sal DESC;

制限制限クエリ

クエリ結果レコードの数を制限するために使用されます。Limitの後には数値が続きますが、これは初期レコードインデックス値から省略され、合計でいくつのレコードのみが表示されます。2つの値が続き、最初の値は初期レコードインデックス値であり、2番目の値はレコードの総数です。

部門20の3人の高給の従業員の情報を照会します。

SELECT * FROM employee WHERE deptno = 20 ORDER BY sal DESC LIMIT 3;

部門20で給与が最も高い2番目と3番目の従業員の情報を照会します。

SELECT * FROM employee WHERE deptno = 20 ORDER BY sal DESC LIMIT 1,2;

GROUPBYクエリ

GROUP BY句を使用すると、クエリ結果を属性列または属性列の組み合わせごとに行方向にグループ化できます。各グループは、属性列または属性列の組み合わせで同じ集計値を持ちます。

注:GROUP BY句は通常、集計関数と組み合わせてクエリ統計操作を実行するために使用されます。GROUPBYキーワードを単独で使用すると、クエリ結果にはグループごとに1つのレコードしか表示されないため、通常は意味がありません。

クエリのSELECTリストに表示されるすべての列は、GROUPBY句にも表示される必要があります。

SELECT deptno、count(*)FROM employee GROUP BY deptno;

 

おすすめ

転載: blog.csdn.net/qq_46007633/article/details/123976629