MYSQL数据库第二版107页答案

– 1

SELECT     姓名,    专业名,        总学分
    FROM     xs;

1
2
3
4
– 2

SELECT     学号  AS  number,    姓名  AS  NAME,        总学分  AS  mark
    FROM     xs
    
    WHERE    专业名="计算机";

1


2
3
4
5
6
– 3

SELECT     学号  ,    姓名  ,        
    CASE    
        WHEN  总学分  IS NULL             THEN    "尚未选课"
        WHEN  总学分  < 50            THEN    "不及格"
        WHEN  总学分>=50 AND 总学分<=52     THEN    "及格"
        WHEN  总学分  > 52            THEN    "优秀"
    END     
        AS     "等级"
    FROM     xs
    
    WHERE    专业名="计算机";

1
2
3
4
5
6
7
8
9
10
11
12
13
– 4

SELECT     *
    FROM     xs_kc
    
    WHERE     学号=081101;

1
2
3
4
5
6
– 5

SELECT     DISTINCT     专业名,        总学分
    FROM     xs;

1


2
3
4
– 6

SELECT     COUNT(*)  AS  学生总人数
    FROM     xs;

1
2
3
4
– 7


    -- 方一
SELECT     COUNT(备注)  AS 备注不为空
    FROM     xs;
    
    -- 方二
SELECT     COUNT(备注)  AS 备注不为空
    FROM     xs
    WHERE     备注  IS NOT NULL;

1
2
3
4
5
6
7
8
9
10
– 8


SELECT     COUNT(*)  AS  "50分以上的人数"
    FROM     xs
    WHERE     总学分>50;

1
2
3
4
5
– 9


SELECT     MAX(成绩)  AS  最高成绩,    MIN(成绩)  AS  最低成绩
    FROM     xs_kc
    WHERE     课程号="101";
1
2
3
4
– 10


SELECT     SUM(成绩)  AS  总成绩
    FROM     xs_kc
    WHERE     学号=081101;
1
2
3
4


---11
SELECT     AVG(成绩)  AS  平均成绩
    FROM     xs_kc
    WHERE     课程号="101";

1
2
3
4
5
– 12


SELECT     *
    FROM     xs
    WHERE     学号=081101;

1
2
3
4
5
– 13


SELECT     *
    FROM     xs
    WHERE     总学分>50;

1
2
3
4
5
– 14


SELECT     *
    FROM     xs
    WHERE     备注  IS NULL;

1
2
3
4
5
– 15


SELECT     *
    FROM     xs
    WHERE     专业名="计算机"  AND 性别=0;

1
2
3
4
5
– 16


SELECT     *
    FROM     xs_kc
    WHERE  课程号    IN(102,  206)    AND 成绩>80
    ORDER BY    课程号 ASC;
1
2
3
4
5
– 17


SELECT     学号,    姓名,    性别
    FROM     xs
    WHERE     姓名    LIKE    "王%";
1
2
3
4
– 18


SELECT     学号,    姓名,    专业名
    FROM     xs
    WHERE     学号    LIKE    "%0_";
1
2
3
4
– 19


SELECT     学号,    姓名
    FROM     xs
    WHERE     姓名    LIKE    "%#_%"     ESCAPE    "#";
1
2
3
4
– 20


SELECT     *
    FROM     xs
    WHERE     (出生时间<"1989-01-01" OR 出生时间>"1989-12-30");
1
2
3
4


21-30小题
底部
– 21


SELECT     *
    FROM     xs
    WHERE     专业名 IN("计算机",  "通信工程");
1
2
3
4
– 22


SELECT     *
    FROM     xs
    WHERE     总学分  IS NULL;
1
2
3
4
– 23


SELECT     xs.`姓名`,     kc.`课程名`,     kc.`课程号`
    FROM     xs_kc     JOIN     xs /*关联学生与课程号*/
        ON (xs_kc.`学号`     =     xs.`学号`)
            JOIN     kc/*关联课程名*/
        ON (xs_kc.`课程号`     =     kc.`课程号`)
    /*order by    xs.`姓名` */;
1
2
3
4
5
6
7
– 24


SELECT     姓名,    成绩
    FROM     xs_kc     JOIN     xs /*关联学生与课程号*/
        ON (xs_kc.`学号`     =     xs.`学号`)
            JOIN     kc/*关联课程名*/
        ON (xs_kc.`课程号`     =     kc.`课程号`)
        
    WHERE     xs_kc.课程号=206  AND  成绩>80;
1
2
3
4
5
6
7
8
– 25


SELECT     xs.`学号`,     xs.`姓名`,    kc.`课程名`,    xs_kc.`成绩`
    FROM     xs_kc     JOIN     xs /*关联学生与课程号*/
        ON (xs_kc.`学号`     =     xs.`学号`)
            JOIN     kc/*关联课程名*/
        ON (xs_kc.`课程号`     =     kc.`课程号`)    
        WHERE     (kc.`课程名` = "计算机基础"     AND    xs_kc.`成绩`>80);
1
2
3
4
5
6
7
– 26


SELECT DISTINCT a.`学号`,     a.`课程号`,        a.`成绩`
    FROM     xs_kc AS a     JOIN     xs_kc AS b
        ON (a.`学号` <>b.`学号`        AND    a.`课程号` != b.`课程号` 
                AND 
            a.`成绩` = b.`成绩`)
    ORDER BY    a.`成绩` ;
1
2
3
4
5
6
7
– 27


SELECT     kc.`课程名`
    FROM     kc     JOIN     xs_kc
        ON (kc.`课程号` = xs_kc.`课程号`)
    GROUP BY kc.课程名;

1
2
3
4
5
6
– 28


/*查询未选修任何课程的学号和姓名*/
SELECT xs.学号,xs.姓名
FROM xs
WHERE xs.`学号` NOT IN (SELECT DISTINCT xs_kc.`学号` FROM xs_kc);

/*P107-28--ok*/
SELECT xs_kc.`课程号`,    xs.*
    FROM     xs     LEFT OUTER JOIN     xs_kc
        ON (xs.`学号` = xs_kc.`学号`);
1
2
3
4
5
6
7
8
9
10
– 29


SELECT     DISTINCT     kc.`课程名`,    kc.*
    FROM     xs_kc     JOIN     xs /*关联学生与课程号*/
        ON (xs_kc.`学号`     =     xs.`学号`)
            JOIN     kc/*关联课程名*/
        ON (xs_kc.`课程号`     =     kc.`课程号`)
    ;
1
2
3
4
5
6
7
– 30


SELECT xs.姓名,        xs.学号
    FROM     xs_kc     JOIN     xs /*关联学生与课程号*/
        ON (xs_kc.`学号`     =     xs.`学号`)
            JOIN     kc/*关联课程名*/
        ON (xs_kc.`课程号`     =     kc.`课程号`)
    
    WHERE     kc.课程号="206";
1
2
3
4
5
6
7
8


31-40小题
底部
– 31

-- 31    --- 方一
SELECT     姓名,    学号,    专业名
    FROM     xs
    WHERE     学号 NOT IN(
                SELECT     学号 
                    FROM     xs_kc     JOIN    kc
                        ON (xs_kc.`课程号`=kc.`课程号`)
                    
                    WHERE     课程名 ='离散数学'
                )
    ;
    
    
    -- 方二
SELECT 姓名,学号,专业名
FROM xs
WHERE 学号 NOT IN
       (SELECT 学号 FROM xs_kc WHERE 课程号 IN (SELECT 课程号 FROM kc WHERE 课程名 ='离散数学'));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
– 32


SELECT     xs_kc.`学号`,     kc.`课程名`
    FROM     xs_kc    LEFT OUTER JOIN     kc
        ON (xs_kc.`课程号`     =     kc.`课程号`)
        
        WHERE (kc.`课程名`     =     "离散数学");
1
2
3
4
5
6
– 33


SELECT     xs.`学号`,    xs.`姓名`,    xs.`专业名`,    xs.`出生时间`
    FROM     xs
    
    WHERE     xs.`出生时间` > ALL(SELECT 出生时间     FROM xs   WHERE 专业名="计算机")
    ;

1
2
3
4
5
6
7
– 34


SELECT     学号,  成绩
    FROM     xs_kc
    
    WHERE     课程号 ='206' 
        AND 
        成绩 >=        ANY (SELECT MIN(成绩)     FROM xs_kc   WHERE 课程号 ='101')
    ;
1
2
3
4
5
6
7
8
– 35


SELECT     xs.`学号`,    姓名
    FROM     xs     JOIN     xs_kc
        ON (xs.`学号` = xs_kc.`学号`)
        WHERE    课程号="206";
1
2
3
4
5
– 36


SELECT     专业名
    FROM     xs
        GROUP BY    专业名;
1
2
3
4
– 37


SELECT     专业名,        COUNT(*)  AS  "人数"
    FROM     xs
        GROUP BY    专业名;
1
2
3
4
– 38


/*P107-38 --不能加""*/
SELECT    课程号,     AVG(成绩) AS "平均成绩" ,     COUNT(*) AS "总人数"
    FROM     xs_kc
        GROUP BY     课程号;
1
2
3
4
5
– 39


SELECT     专业名,     

        CASE     /*性别*/
            WHEN  性别=0 THEN "女生"
            WHEN  性别=1 THEN "男生"
            ELSE  "总人数"
        END AS 性别 ,     
        
        COUNT(*) AS "总人数"
    
    FROM     xs
        GROUP BY 专业名, 性别
            WITH ROLLUP;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
– 40


SELECT     学号, AVG(成绩)  AS  "平均成绩"
    FROM     xs_kc
    
    GROUP BY 学号
        HAVING     AVG(成绩)>85;
1
2
3
4
5
6


41-46小题
底部
– 41


SELECT     学号, 成绩
    FROM     xs_kc
            GROUP BY 学号
                HAVING COUNT(*)>2 AND AVG(成绩)>80;

1
2
3
4
5
6
– 42


SELECT     *
    FROM     xs
    
    WHERE     专业名="通信工程"
    
    ORDER BY    出生时间   ASC;
1
2
3
4
5
6
7
– 43

SELECT xs.`学号`,    xs_kc.`课程号`,        成绩 
    FROM xs_kc     JOIN     xs /*关联学生与课程号*/
        ON (xs_kc.`学号`     =     xs.`学号`)
            JOIN     kc/*关联课程名*/
        ON (xs_kc.`课程号`     =     kc.`课程号`)
    
    WHERE 专业名="计算机"  AND  kc.`课程名`="计算机基础"
    ORDER BY 成绩 DESC;


1
2
3
4
5
6
7
8
9
– 44

/*P107-44--子查询可以使用父查询的字段*/
SELECT     xs.学号,     姓名,     专业名
    FROM     xs
        WHERE 专业名="计算机" 
        ORDER BY (
            SELECT AVG(成绩) FROM xs_kc GROUP BY xs_kc.`学号` HAVING (xs.`学号`=xs_kc.`学号`)
        ) DESC;


1
2
3
4
5
6
7
8
– 45

SELECT     *
    FROM     xs
        ORDER BY 学号    LIMIT 5;


1
2
3
4
– 46


 

SELECT     *
    FROM     xs
        ORDER BY 学号    LIMIT 3,  5;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Asshebabyฅ

学生请勿打赏,点赞转发关注就行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值