SQLデータベースの14の事例の紹介

SQLデータベースの14の事例の紹介

データシート

/*
Navicat SQLite データ転送

ソースサーバー: school
ソース サーバー バージョン: 30808
ソースホスト: :0

ターゲット サーバー タイプ: SQLite
ターゲット サーバー バージョン: 30808
ファイルエンコーディング: 65001

日付: 2021-12-23 16:06:04
*/

プラグマforeign_keys = OFF;

-- ----------------------------
-- コースのテーブル構造
-- ----------------------------
"main"."Course"が存在する場合はテーブルを削除します。
CREATE TABLEコース(
    CourseID 整数主キー自動増分、
    courseme varchar(32)、
    教師ID int
);

-- ----------------------------
-- コースの記録
-- ----------------------------
INSERT INTO "main"."Course" VALUES (3001, 'Chinese', 1001);
「main」に「コース」VALUES(3002、「数学」、1002)を挿入します。

-- ----------------------------
-- マークのテーブル構造
-- ----------------------------
"main"."Mark"が存在する場合はテーブルを削除します。
CREATE TABLE マーク(
    ユーザーID整数、
    コースID整数がNULLではありません。
    スコア int デフォルト 0
);

-- ----------------------------
-- マークの記録
-- ----------------------------
「main」に「Mark」VALUES(2001、3001、89)を挿入します。
「main」に「Mark」VALUES(2001、3002、90)を挿入します。
「main」に「Mark」VALUES(2002、3001、66)を挿入します。
「main」に「Mark」VALUES(2003、3002、85)を挿入します。

-- ----------------------------
-- sqlite_sequence のテーブル構造
-- ----------------------------
"main"."sqlite_sequence"が存在する場合はテーブルを削除します。
テーブル sqlite_sequence(name,seq) を作成します。

-- ----------------------------
-- sqlite_sequence のレコード
-- ----------------------------
"main"."sqlite_sequence" に VALUES ('Teacher', 1002) を挿入します。
"main"."sqlite_sequence" に VALUES ('Student', 2002) を挿入します。
"main"."sqlite_sequence" に VALUES ('Course', 3002) を挿入します。

-- ----------------------------
-- 学生用のテーブル構造
-- ----------------------------
"main"."Student" が存在する場合はテーブルを削除します。
学生テーブルを作成(
    ユーザーID 整数 主キー 自動増分、
    ユーザー名varchar(32)、
    使用率 int、
    ユーザーセックスvarchar(32)
);

-- ----------------------------
-- 学生の記録
-- ----------------------------
「main」に「学生」値(2001年、「Xiao Ming」、18歳、「男性」)を挿入します。
「main」に「学生」値(2002、「Xiaohong」、18、「女性」)を挿入します。

-- ----------------------------
-- 教師用テーブル構造
-- ----------------------------
"main"."Teacher" が存在する場合はテーブルを削除します。
教師テーブルの作成(
    教師ID整数主キー自動増分、
    教師名 varchar(32)
);

-- ----------------------------
-- 教師の記録
-- ----------------------------
INSERT INTO "main"."Teacher" VALUES (1001, '张三');
「main」に「Teacher」VALUES (1002, 'Li Si') を挿入します。

質問:

1. 「中国語」コースの成績が「数学」コースの成績より低いすべての学生の学生IDを照会します。

からユーザーIDを選択 
(Mark から、courseid = '3001' のユーザー ID、スコアを選択)a、
(コースID = '3002' のマークからユーザーID、スコアを選択)b 
ここで、a.userid = b.userid かつ a.score<b.score;

2. 平均点が60点を超える学生の学生IDと平均点を照会する

MarkからユーザーID、平均スコアを選択
ユーザーIDによるグループ化 
平均スコアが60以上であること

3. 全学生の学生ID、名前、選択したコース数、合計スコアを照会する

選択したコースの数として s.userid、s.username、count_courseid を選択します。 
sum_score は生徒の合計得点
左結合 
(userid、count(courseid) を count_courseid として選択し、sum(score) を sum_score として選択します 
ユーザーIDによるマークグループから)sc
s.userid = sc.userid; の場合

4. 姓が「Li」の教師の数を照会します。

count(教師名)を選択
先生から 
teachername は '张%' のようになります。

5. 中国語コースのスコアが 60 未満の学生の学生 ID を、スコアの降順で検索します。

ユーザーID、スコアを選択
マークより
コースID = '3001'
スコア<60
スコア降順で並び替え;

6. 教師「張三」が担当するコースを受講した、または受講していない学生の名前を照会します。

ユーザー名を選択  
学生から 
ユーザーIDが(
    ユーザーIDを選択  
    マーク、コース、教師より 
    Course.teacherid = Teacher.teacherid かつ Mark.courseid = Course.courseid
    Teacher.teachername = 'Zhang San' の場合
);

7. すべての学生の選択科目、コース番号、コース名を照会します。

CourseID、CourseMeを選択 
コースから 
where courseid in (mark group by courseid から courseid を選択します)。

8. 2 つのコースを受講した学生の学生 ID を取得します。

ユーザーIDを選択 
マークより
ユーザーIDによるグループ化 
count(8) == 2である;

9. 各コースとそれに対応する選択科目の受講生数を照会する

Course グループから CourseID 、count(*) を CourseID で選択します。

10. 教師「張三」が担当するコースを選択した生徒の中で、最も成績が良い生徒の名前と成績を照会します。

Student.username、Mark.scoreを選択
マークより 
Mark.userid = Student.userid の Student に参加しました 
Mark.courseid = Course.courseid のコースに参加しました 
Course.teacherid = Teacher.teacherid の教師に参加しました 
Teacher.teachername = 'Zhang San' の場合
そして、Mark.score = (
最大(スコア)を選択 
マーク sc_1 より 
ここで、Mark.courseid = sc_1.courseid);

11. コースを選択した学生の数:

count(2) を選択 
(マークとは異なるユーザーIDを選択)a;

12. コースコードが「中国語」で、コーススコアが80点を超える学生の学生IDと名前を照会します。

Mark.userid、Student.usernameを選択  
マークより 
Mark.userid = Student.userid の Student に参加しました 
ここで、Mark.courseid = '3001' かつ Mark.score>80;

13. 各コースの平均スコアを照会し、結果を平均スコアの昇順で並べ替えます。平均スコアが同じ場合は、コース番号の降順で並べ替えます。

コースID、平均スコアを選択
マークより 
コースIDでグループ化 
平均(スコア)、コースID降順で並べ替え;

14. コース名が「数学」で、スコアが 85 を超える学生の名前とスコアを照会します。

c.courseme、Student.userid、Student.username、Mark.score を選択
コースcから
Mark.courseid = c.courseid のマークを左結合します 
Student を Student.userid = Mark.userid に LEFT JOIN する 
ここで、c.courseme = 'Mathematics' かつ Mark.score>85;

これで、14 の SQL データベース ケースに関するこの記事は終了です。SQL データベース ケースに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • いくつかのMySQL更新操作のケース分析
  • MYSQL の 10 の典型的な最適化ケースとシナリオ
  • SQL Server バッチデータ挿入ケースの詳細な説明

<<:  HTML印刷関連の操作と実装の詳細な説明

>>:  IE6のmin-widthとmin-heightと互換性を持たせる簡単な方法

推薦する

Linux CentOS 7.4 で mysql5.7.20 のパスワードを変更する方法

MySQL がバージョン 5.7 にアップグレードされた後、セキュリティが大幅に向上しました。しかし...

Windows Server 2008 R2 リモート デスクトップのポート 3389 を変更する方法

Windows サーバー リモート デスクトップのデフォルトのポート番号は 3389 です。職場でサ...

Linux と最もよく使用されるコマンドの紹介 (習得は簡単ですが、問題の 95% 以上を解決できます)

Linux は現在最も広く使用されているサーバー オペレーティング システムです。Unix をベー...

Docker で Selenium グリッド分散環境を構築する実用的な方法

最近、Zoom ビデオ会議をテストし、100 人が同時に会議に参加することをシミュレートする必要があ...

FileZilla Server の FTP サーバー構成と 425 エラーおよび TLS 警告の解決策の詳細な説明

123WORDPRESS.COM では、FileZilla のダウンロード リンクを提供しています:...

MySQL 8.0.22 zip圧縮パッケージ版(無料インストール)のダウンロード、インストール、および構成手順の詳細

目次最初のステップはMySQLをダウンロードすることですステップ2: ダウンロードした圧縮パッケージ...

フローティングメニュー、上下スクロール効果を実現できます

コードはさらに合理化できますが、時間の制約があるため、まずはここで投稿して、自分で最適化してメニュー...

JavaScriptはシンプルな計算機能を実装します

この記事では、参考までに、簡単な計算機能を実装するためのJavaScriptの具体的なコードを紹介し...

Linuxサーバーのディスク容量を拡張する方法

目次序文ステップ序文今日、es ログが記録されていないことに気付きました。filebeat、elas...

Linux システム (Centos6.5 以上) のインストール JDK チュートリアル分析

記事の構成1. 準備2. Java JDK8.0をインストールする3. 環境変数を設定する3. イン...

Linux サーバーに埋め込まれた ddgs および qW3xT.2 マイニング ウイルスの対処の実践記録

序文仮想通貨の狂気的な投機により、マイニングウイルスは犯罪者が最も頻繁に使用する攻撃方法の 1 つに...

MySQL テーブルを削除する際の I/O エラーの原因分析と解決方法

問題現象最近、sysbench を使用して MySQL をテストしました。テストに長い時間がかかった...

Mysql マスタースレーブ サービスの実装例を構成する

Mysql マスタースレーブ サービスの実装例を構成する### メインデータベースmy.cnfを構成...

Navicat for Mysql 接続エラー 1251 (接続失敗) の問題を解決する

以前書いた内容が詳細さに欠けていたため、今回は修正・補足しました。ただし、以前の MySQL バージ...

CSS を使用して複数の方法で下揃えを実装するサンプル コード

会社のビジネス要件により、次の図の赤い領域の効果を達成する必要があります。 効果の説明: 1. 赤い...