データクエリー
文形式
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を有することによって)
- それだけを使用することができ
SELECT
てHAVING
- 統計元祖番号:
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;