データベース・ジョブ6:SQL演習3 - SELECT(単一テーブルのクエリ)

SELECT:3.29 [例]例3.48 [〜]
④文字が一致
[NOT] LIKE '<一致文字列>' [ESCAPE '<エスケープ文字>']

ストリングマッチング:完全な文字列が含まれていてもよいかもしれワイルドカード(ファジークエリ)%および_
列%の任意の長さの代わりに(パーセント)(長さが0であってもよい)
_(下線)は、任意の単一の文字を表します

:固定文字列は、文字列一致
[例3.29]詳細なクエリの学校の生徒番号201215121を。

SELECT *
FROM Student
WHERE Sno LIKE '201215121';

LINK、可能な置換= LINK、=、または<>置換されていない場合LINKワイルドカード一致する文字列を含まない!:

SELECT *
FROM Student
WHERE Sno = '201215121';

ワイルドカードを含む文字列の一致文字列:
データベースは、ASCII文字セット、文字_ 2つの必要と
漢字が_必要があり、データベース・キャラクタ・セットがGBKである
[例3.30]は、すべての劉生徒の名前、学校とのセックスを探します。

SELECT Sname, Sno, Ssex
FROM Student
WHERE Sname LIKE '刘%';

[例3.31]クエリ某劉と学生の名前の3文字のフルネーム。

「劉後の」n-語クエリフルネームは_ <= N + 1つの文字または学生の手紙:

 SELECT Sname
 FROM   Student
 WHERE  Sname LIKE '刘_';

単語「正」の単語の最初の2人の生徒の名前と学生番号で[例3.32]クエリ名。

 SELECT Sname,Sno
 FROM   Student
 WHERE  Sname LIKE '_阳%';

最初の名前の前に「ヤン」のn-語_クエリ単語のn + 1は「正」の単語の学生(単語または_ニーズの文字)です。

[例3.33]クエリは、すべての劉、生徒の名前、学生番号、性別を某されていません。

SELECT Sname, Sno, Ssex
FROM Student
WHERE Sname NOT LIKE '刘%';

クエリ文字列に、それ自体はワイルドカードが含まれています:
ESCAPE「\」エスケープ文字のための手段「\」:使用ワイルドカード文字を通常の文字としてエスケープエスケープします。

[例3.34]クエリDB_Designコース数とコースのクレジット。

SELECT Cno,Ccredit
FROM Course
WHERE Cname LIKE 'DB\_Design' ESCAPE '\';

普通の文字に_ちょうど最初よりも後に_ \あれば。
クエリDB \コース番号_Designコースやクレジット:

SELECT Cno,Ccredit
FROM Course
WHERE Cname LIKE 'DB\_Design';

[例3.35]「DB_」で始まるクエリ、コース私の詳細の最初の3文字までのカウントダウン。

後のn番目のI _ X最後から二番目のクエリプログラムの文字I ,, 1 <= X <= N:

 SELECT  *
 FROM Course
 WHERE Cname LIKE 'DB\_%i__' ESCAPE '\';

⑤ヌル値を含むクエリは
NULLであるかNOT NULLは
「=」の代わりに使用することはできません「IS」
[例3.36]を、いくつかの選択科目の後に学生をテストを受けるので、選択科目レコードがありますが、ではないテストの得点をしたしませんでした。クエリは、生徒の成績や学校の数に対応するコース番号の欠如します。

SELECT Sno,Cno
      FROM   SC
      WHERE  Grade IS NULL

[例3.37]は、すべての学生の数とコース数が実りされている確認してください。

  SELECT Sno,Cno
  FROM   SC
  WHERE  Grade IS NOT NULL;

⑥複数のクエリ条件
論理演算子ANDとORクエリ条件を複数接続され、AND ORよりも高い優先度、括弧は、優先度を変更するために使用することができます。

[例3.38]コンピュータサイエンスのクエリ学部学生の20歳名歳の時。

SELECT Sname
   FROM  Student
   WHERE Sdept= 'CS' AND Sage<20;

書き換え[3.27例]コンピュータサイエンス、クエリ(CS)、数学の学科(MA)と情報システム(IS)学生の名前と性別の部門。

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

それは次のように書き換えることができます。

SELECT Sname, Ssex
FROM   Student
WHERE  Sdept='CS' OR Sdept='MA' OR Sdept='IS';

句のBY 3.ORDER
1つまたは複数の列のプロパティがソートされています。ASC:ASC;降順:DESC; ASCデフォルト値
ヌル値には、表示の順序は場合順序を決定するために、特定のシステムによって達成されます。

[実施例3.39]クエリ3号選択科目学生は、スコアの降順で番号とその結果、クエリ結果を学びます。

SELECT Sno, Grade
    FROM  SC
    WHERE  Cno='3'
    ORDER BY Grade DESC;

年齢によって降順[実施例3.40]クエリすべての学生、クエリ結果行を昇順に配列されている行番号、学生の同じシステムによる。

SELECT  *
FROM  Student
ORDER BY Sdept, Sage DESC;  

4.集約関数:
統計タプル番号:COUNT(*)
統計値の数:COUNT([DISTINCT | ALL] < カラム名>)
の値の和を計算:SUM([DISTINCT | ALL] < カラム名前>)、
平均値を算出する:AVG([DISTINCT | ALL] < カラム名>)
列の最大値選択:MAX([DISTINCT | ALL] < カラム名>)
の最小のもののために:MINを( [DISTINCT | ALL] <列名>)

COUNT(*)以外のNULL値の場合の集約関数は、スキップ外である場合。
集約関数のみSELECT句と節HAVING GROUP BY句で使用することができます。

学生[実施例3.41]クエリ総数。
SELECT COUNT(*)
学生からの
学生の数はコースに登録[例3.42]クエリを。

 SELECT COUNT(DISTINCT Sno)
 FROM SC;     

[実施例3.43]計算番号1コースの学生の成績平均点。

SELECT AVG(Grade)
FROM  SC
WHERE Cno= '1';

[例3.44]学生のクエリは最高の選択科目の1号を獲得します。

SELECT MAX(Grade)
   FROM SC
   WHERE Cno='1';

[例3.45]クエリ201 215 012選択科目の学生は合計スコアを学びます。

SELECT SUM(Ccredit)
FROM  SC,Course
WHERE Sno='201215012' AND SC.Cno=Course.Cno; 

5.GROUP BY節:グループ
オブジェクトの改良集約関数は:いいえグループ化クエリ結果場合、集約関数は、全クエリの結果に適用されます。クエリパケットの結果の後に、集約関数は、各グループに適用されます。指定された値またはパケットの複数の列は、値のセットは同じです。

[実施例3.46]様々な選択科目の数と対応する数を求めます。

SELECT Cno,COUNT(Sno)
     FROM SC
     GROUP BY Cno;

パケットCNO、CNOグループについて同じ値を有するすべてのタプル、及び各グループの値によってクエリ結果がCOUNTにより算出されます。

[例3.47]クエリつ以上選択科目学生番号。

SELECT Sno
 FROM  SC
 GROUP BY Sno
 HAVING  COUNT(*) >3;       

[実施例3.48] 90未満またはクエリスコアと学生数の平均スコアの平均スコアに等しい
ステートメント以下が真ではない:
SELECTスノ、AVG(グレード)
SC FROM
AVG(グレード)> = 90
GROUP BYスノー;
WHERE句理由は集計関数は、条件式として使用されていない
正しいクエリは次のようになります。

 SELECT  Sno, AVG(Grade)
    FROM  SC
    GROUP BY Sno
    HAVING AVG(Grade)>=90;

別のオブジェクトの役割:句は、句差HAVING WHERE
;句は、ベーステーブルまたはビューに適用され、選択されたタプルのどの条件を満たす
HAVING句作用する基、及び条件を満たすようにグループを選択します。

リリース6元記事 ウォンの賞賛5 ビュー3167

おすすめ

転載: blog.csdn.net/sjkylzy/article/details/104801176