古典的なタイトル(上級)のMySQL--包括的な概要 - 難易度の高い、前を見て最初にお勧めします

古典的なタイトル(上級)のMySQL--包括的な概要 - 難易度の高い、前を見て最初にお勧めします


      データベースの詳細については、~~注意ヨーヨーを追加してください。:ブロガーのための接触ガボール主な民間の手紙またはお問い合わせください
      QQ:3327908431
      マイクロ手紙:ZDSL1542334210を

        はじめに:基盤が弱いパートナーの勧告であるように見えた最初の記事は、再び記事----幸運を読み続ける前に、前の今日、MySQLは、このセクションは、各セクションの内容に基づいており、あなたに包括的なトレーニングのタイトルをもたらします!

1、テーブルの作成

create table stu(s_id varchar(5),
   s_name varchar(5),
   s_sex varchar(1),
   s_age int(3),s_day date);

insert into stu values
("001","李华","男",23,'1996-8-16'),
("002","王二","男",24,'1997-3-16'),
("003","赵敏","女",23,'1990-5-26'),
("004","张莹莹","女",22,'1995-2-16'),
("005","朱亚军","男",25,'1999-8-16'),
("006","马云","男",28,'1993-12-16');

create table scores (s_id varchar(5),
    c_id varchar(3),score float);
    
insert into scores values 
("001","01",135),
("005","01",120),
("003","01",110),
("002","01",90),
("005","02",140),
("001","02",125.5),
("004","02",100),
("006","02",90),
("002","03",102),
("005","03",100.6),
("001","03",100),
("003","03",95.6),
("004","03",83),
("003","02",80),
("006","03",79.5);

create table coure(
c_id varchar(2),t_id char(1),c_name varchar(10));

insert into coure values 
("01","3","数据库原理"),
("02","2","统计学基础"),
("03","1","Python基础");

create table teacher(
 t_id char(1),t_name varchar(5));
 
insert into teacher values
  ("1","邓博"),
  ("2","崔博"),
  ("3","汪院长");

2、セクションのタイトル

90人の生徒の名前とスコア以下のコースクエリ名「Pythonの基礎」とスコア:トピック1

分析は:「」、 『テーブル』 + + 『フィールド』を使用して、ここでは、3つの明確な質問の意味、およびコース名 『Pythonの基礎』と90以下のスコアのための条件を形成するように接続する必要があります、その問い合わせは言いコードがあるため、テーブルのフィールド:

select stu.s_name,score from stu left join scores on 
   stu.s_id=scores.s_id left join coure on scores.c_id=coure.c_id
   where score<90 and c_name="python基础";
# 结果
张莹莹	83
马云	79.5
トピック2:学校、名前とスコアの90点以上の学生で、コースやコースの成績についての第01
select stu.s_id,stu.s_name,score from stu left join scores on 
    stu.s_id=scores.s_id where c_id=01 and score>=90; # 法一 表格连接

select stu.s_id,s_name from stu where s_id in
    (select s_id from scores where c_id=01 and score>90);# 法二 子查询 该方法没有将分数查询下来
# 结果
001	李华	135
002	王二	90
003	赵敏	110
005	朱亚军	120
トピック3:クエリのすべての学生の学生数、学生名、合計入学、すべてのコースの合計スコア
select stu.s_id,stu.s_name,count(*),sum(score) from stu 
    left join scores on stu.s_id=scores.s_id group by s_id;
# 结果
001	李华	3	360.5
002	王二	2	192
003	赵敏	3	285.5999984741211
004	张莹莹	2	183
005	朱亚军	3	360.5999984741211
006	马云	2	169.5
トピック4:100ポイントの照会平均スコアや学生の大きい数と学生の名前と学生成績平均点
select stu.s_id,s_name,avg(score) from stu left join scores on 
    stu.s_id=scores.s_id  group by s_id having avg(score)>=100;
# 结果
001	李华	120.16666666666667
005	朱亚军	120.1999994913737
トピック5:クエリの平均スコアよりも大きいか100人のすべての学校番号、名前の学生や成果に等しいです
select stu.s_id,s_name,score from stu left join scores on 
   stu.s_id=scores.s_id group by stu.s_id having avg(score)>=100;

select s_id,s_name from stu where s_id in# 法二 子查询 无分数
    (select s_id from scores group by s_id having avg(score)>=100);
# 结果
001	李华	135
005	朱亚军	120
トピック6:クエリは、パスラインと90100ポイントに、それぞれ、学校番号、名前、学年平均点の2つの以上のコースや学生を失敗しました
select stu.s_id,s_name,avg(score) from stu left join scores on  
    stu.s_id=scores.s_id where score<90 group by s_id having count(*)>=2;
#很明显没有这样的学生,我们以100分看看
select stu.s_id,s_name,avg(score) from stu left join scores on 
    stu.s_id=scores.s_id where score<100 group by s_id having count(*)>=2;

select stu.s_id,s_name from stu where s_id in   #子查询
 (select s_id from scores where score<100 group by s_id having count(*)>=2);
# 结果为:
003	赵敏	87.79999923706055
006	马云	84.75
トピック7:スコアの降順で、もちろん100未満のスコア学生情報「01」を取得
select * from stu left join scores on stu.s_id=scores.s_id
    where score<100 and c_id=01 order by score desc;
# 答案
002	王二	男	24	1997-3-16	002	01	90
トピック八:クエリは、ティーチ生徒に教師の情報「王Yuanzhang」を学びました
select * from stu left join scores on stu.s_id=scores.s_id  # 多表连接
   left join coure on scores.c_id=coure.c_id left join teacher on 
   coure.t_id=teacher.t_id where teacher.t_name="汪院长" group by stu.s_id;
# 结果
001	李华	男	23	1996-8-16	001	01	135	01	3	数据库原理	3	汪院长
002	王二	男	24	1997-3-16	002	01	90	01	3	数据库原理	3	汪院长
003	赵敏	女	23	1990-5-26	003	01	110	01	3	数据库原理	3	汪院长
005	朱亚军	男	25	1999-8-16	005	01	120	01	3	数据库原理	3	汪院长

select * from stu where s_id in  # 子查询
   (select s_id from scores where c_id in 
   (select c_id from coure where t_id in 
   (select t_id from teacher where t_name="汪院长")));
# 答案
001	李华	男	23	1996-8-16
002	王二	男	24	1997-3-16
003	赵敏	女	23	1990-5-26
005	朱亚军	男	25	1999-8-16
トピック9:低得点と成績評価点の平均ディスプレイに高いから平均スコアはすべての生徒のためにすべてのコース(フィナーレ)

        分析:タイトルはより困難であるが、それは慎重に味が推奨されます。質問は、最も難しい部分もグループ化するために各被験者の平均スコアと各生徒のスコア、必要性を求めて、各学生の平均スコアを表示するために必要な表示カリキュラム、成績、成績平均点を学生に尋ねたが、グループ化情報は、すべてのコースについての情報が失われますどのように来ますか?まず、グループ平均学生数を取得し、テーブルを装備し、対応するが、その左側に接続し、学生がテーブルを獲得し、その後ソートそれが答えである、コード:朱の兄は、解決する方法を参照してください。

select a.s_id,平均分,c_id,score from   #  法一 子查询
    (select s_id,round(avg(score),2)平均分 from scores group by s_id)a
    left join scores on a.s_id=scores.s_id order by 平均分 desc;
# 结果为:
s_id 平均分 c_id score
005	120.20	01	120
005	120.20	03	100.6
005	120.20	02	140
001	120.17	01	135
001	120.17	03	100
001	120.17	02	125.5
002	96.00	03	102
002	96.00	01	90
003	95.20	02	80
003	95.20	01	110
003	95.20	03	95.6
004	91.50	03	83
004	91.50	02	100
006	84.75	02	90
006	84.75	03	79.5
# 该结果看起来很让人不爽,于是可以将其转换为二维表,以学号与课程号做行标题和列标题
select s_id,
  round(sum(c_id='01')*score,2) '01',    #转为二维表的方式
  round(sum(c_id='02')*score,2) '02',
  round(sum(c_id='03')*score,2) '03',
  round(avg(score),2) 平均分
  from scores group by s_id order by 平均分 desc;
# 结果为: ps 这样看是不是很爽呢?代码也很简单
#s_id  01     02       03   平均分 
005	120.00	120.00	120.00	120.20
001	135.00	135.00	135.00	120.17
002	90.00	0.00	90.00	96.00
003	110.00	110.00	110.00	95.20
004	0.00	100.00	100.00	91.50
006	0.00	90.00	90.00	84.75
トピックテン:情報を求めて上位3人の学生の平均スコア - サブクエリ
select stu.* from (select s_id,round(avg(score),2) 平均成绩 from 
  scores group by s_id   order by 平均成绩 desc limit 3)aa ,stu where 
  stu.s_id=aa.s_id;
# 结果
001	李华	男	23	1996-8-16
002	王二	男	24	1997-3-16
005	朱亚军	男	25	1999-8-16

3、紙の卵の終わり - 簡単な瞬間

        そして、なぜカブスみんなのお気に入り簡単な瞬間に、そして私の友人の多くは、最近私に尋ねたが、私が言って神経を持っていない、私は単に彼のガールフレンドをもたらすことは彼女のガールフレンド、私の義理の姉、昨日まあ前日ないの物語です彼女は彼が配ると結婚してきたが、気づいたとしても同級生がない、彼女の憤慨をしたことを示すためにいたときの学生は、彼女の婚約パーティーに出席します。私たちはおしゃべりに座って午後に、彼女は突然立ち上がって大声で言った:「ああ、本当に暑いここうん、私は、私の指の熱死をリングをオフに来ると思う...」ここを参照してください、私たちはすべて理解して信じていますなぜ彼は、二人はハハ、一緒に来ました...

       MySQLの知識についてもっと学ぶためにリラックスした瞬間のよ〜利息 - 今日はヨーヨー//各記事の最後の卵を持って、ここで終了します!見ていただきありがとうございます、私はJetuserデータでした

リンク:[https://blog.csdn.net/L1542334210]
CSND:L1542334210
ここに画像を挿入説明
私はあなたのすべての成功を祈って!家族で楽しみます!

公開された29元の記事 ウォン称賛53 ビュー30000 +

おすすめ

転載: blog.csdn.net/L1542334210/article/details/102253427