SQLデータベース:データクエリ

データクエリー

文形式

ここに画像を挿入説明

  • SELECT子句:属性列に表示されます、
  • FROM子句クエリオブジェクト(ベーステーブルまたはビュー)を指定し
  • WHERE子文:クエリ条件を指定します
  • GROUP BY句:指定された配列(例えば、男性グループ、一人の女性)のパケットの値によってクエリ結果が、行グループとしてプロパティ値タプルに等しいです。典型的に使用される各グループの集計関数(例えば、雄および雌のA群数の組数)
    • HAVINGフレーズ:のみ、指定された基準を満たすには、出力の前に設定します
  • ORDER BY句:テーブルの列の値のクエリ結果の昇順または降順に指定

機能分解:

ここに画像を挿入説明

1.SELECT関連の使い方

[実施例1]クエリすべての学生は、番号と名前を学びます。

SELECT Sno,Sname   //选择属性  SELECT * 代表所有列
From Student		//指明表的来源
サプリメントの使用を選択します。
SELECT Sno,2020-Sage   //可以得到出生年份,可以是表达式	
SELECT LOWER(Sdept)    //将得到的Sdept值全部化为小写
使用列的别名改变查询结果的列标题
SELECT Sname NAME,2020-Sage BIRTHDAY  //定义别名
重複行を排除
  • SELECTデフォルトは重複行を削除しないで、重複行を排除DISTINCTキーワードを使用する必要があります
SELECT DISTINCT Sno

2.WHERE関連の使い方

質問 述語
比較します =、>、> =、!=、!>
スコープを決定します BETWEEN AND、NOT BETWEEN AND
セットの決定 では、NOT IN
文字の一致 LIKE、NOT LIKE
ヌル IS NULLは、NULLではありません
論理演算 AND、OR、NOT

比較:
コンピュータサイエンスと実施例2クエリの部門より若い20歳の生徒のリスト

SECLECT Sname
FROM Student
WHERE Sdept='CS' AND Sage<20;      //注意,这个分号不能少

:範囲を決定するために、
実施例3クエリ年齢は20-23歳の学生の名前ではなく、年齢ラインにはありません

SELECT Sname,Sdpt,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;  

:セットの決定
コンピュータサイエンスの実施例4クエリ局(CS)、数学の学科(MA)学生の名前と性別を

SELECT Sname, Ssex
FROM Student
WHERE Sdept IN('CS','MA'); 

文字の一致:

  • 構文:述語:[NOT] LIKE '<一致文字列>' [ESCAPE '<エスケープ文字>']
  • <文字列>は、完全な文字列がワイルドカード%を含有してもよいかもしれ_
    • %は、任意の長さの文字列の末尾の文字列の長さを表す、%Bの、代表的な最初のA、Bは
    • _任意の1文字を表し

例5.クエリは、学生1830130281の数の詳細を学びます

SELECT *
FROM Student
WHERE Sno LIKE '1830130281'  //<==> WHERE Sno = '1830130281'
  • ESCAPE エスケープ文字の使用方法
    • 処置:エスケープワイルドカード文字を使用するには、通常の文字をエスケープします。
      実施例6クエリDB_Designコース番号やコースクレジット
SELECT Cno , Ccredit
From Course
WHERE Cname LIKE 'DB\_Design'ESCAPE'\';

3.ORDER BY句

  • 処置:1つ以上の属性とは、列に配置することができます
  • ASC:ASC;降順:DESC;デフォルトは昇順です

実施例7の結果を降順スコアに配置され、ORDER BY句が使用できる反映

SELECT .....
FROM ....
WHERE ....
ORDER BY Grade DESC;  

年齢降順昇順に例えば8結果ロケーションベースの数、

SELECT ...
FROM ...
WHERE ...
ORDER BY Sdept ASC , Sage DESC;    //ASC省略也可以

4.集約関数(しばしばGROUPと共に使用一緒にまたはSELECTを有することによって)

  • それだけを使用することができSELECTHAVING
  • 統計元祖番号:COUNT(*)
  • 統計価値の数:COUNT( [ DISTINCT|ALL ] <列名>)
  • の合計を計算します: SUM(同第二行)
  • 平均値を計算します: AVG(同第二行)
  • の最大値と最小値を求めて: MAX(同第二行), MIN(同第二行)
  • 注意DISTINCT持っていなければならないわけではない、それはデエンファシスを意味します(デフォルトはALLです)

実施例9クエリの学生の数は、コースに登録しました。

SELECT COUNT(DISTINCT Sno)
FROM SC;

5.GROUP BY句のグループ

  • 指定された値またはパケットの複数の列は、値のセットは同じです。
    使用上の注意:

错误示例:

SELECT Cnpo     //
FROM SC			//
GROUP BY Cno   //

発現は背後SELECTおよびGROUP BY式の背面に対応している必要があります。Y選択Y BY GROUP場合は、SELECTは、COUNT(Cnpo)などの集計関数、続い対応するようにする必要がない場合

実施例10個々のシーク登録プログラム番号と対応する番号。(アイデア:グループとしてコースの同じ数)

SELECT Cno, COUNT(Sno)
FROM SC
GROUP BY Cno;   //意思是课程号相等的所有列为一组。

以下の表に示す同様の結果:

誰か COUNT(スノ)
1 22
2 34
3 45
4 12

以上の3つの学生数の実施例11クエリの選択科目

SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3;  //HAVING函数是在对每一个组进行操作,某一组列数大于3的输出

実施例12クエリ点の平均スコアは90と生徒数の平均スコアであります

SELECT Sno , AVG(Grade)
FROM SC
GROUP BY Sno   
HAVING AVG(Grade)>=90;  //AVG不能放在WHERE中!!!  

13.各部署の男性と女性の学生の数を区別するために、実施例及び統計学科とユーカリの降順にソート

SELECT Sdept, Ssex , COUNT(Sno)
FROM Student
GROUP BY Sdept , Ssex
ORDER BY COUNT(Sno) DESC;
公開された22元の記事 ウォンの賞賛0 ビュー154

おすすめ

転載: blog.csdn.net/weixin_42649617/article/details/104834312