首页 > 数据库技术 > 详细

SQL热身测试

时间:2019-08-19 09:19:45      阅读:105      评论:0      收藏:0      [点我收藏+]
技术分享图片
#创建数据库
CREATE DATABASE test;#切换数据库
USE test;
#在test数据库中创建一个student的表格
CREATE TABLE student (
    `Id` INT ( 10 ) PTIMARY KEY NOT NULL AUTO_INCTRMENT COMMENTT `学号`,
    `Name` VARCHAR ( 20 ) NOT NULL COMMENT `姓名`, `Sex` VARCHAR ( 4 ) COMMENT 性别,
    `Birth` YEAR COMMENT 出生年月,
    `Department` VARCHAR ( 20 ) NOT NULL COMMENT 院系,
    `Address` VARCHAR ( 21 ) COMMENT 家庭住址 
);
CREATE TABLE Scroe (
    `Id` INT ( 10 ) PRIMARY KEY NOT NULL auto_increment COMMENT 编号,
    `stu_id` INT ( 10 ) NOT NULL COMMENT 学号,
    `c_name` VARCHAR ( 20 ) COMMENT 课程名,
    `grade` INT ( 10 ) COMMENT 分数 
);
#向student表中添加数据
INSERT INTO student
VALUES
    ( 901, 张老大, , 1985, 计算机系, 北京市海淀区 );
INSERT INTO student
VALUES
    ( 902, 张老二, , 1986, 中文系, 北京市昌平区 ),
    ( 903, 张三, , 1990, 中文系, 湖南省永州市 ),
    ( 904, 李四, , 1990, 英语系, 辽宁省阜新市 ),
    ( 905, 王五, , 1991, 英语系, 福建省厦门市 ),
    ( 906, 王六, , 1988, 计算机系, 湖南省衡阳市 );#向score表里面添加数据
INSERT INTO scroe
VALUES
    ( NULL, 901, 计算机, 98 ),
    ( NULL, 901, 英语, 80 ),
    ( NULL, 902, 计算机, 65 ),
    ( NULL, 902, 中文, 88 ),
    ( NULL, 903, 中文, 95 ),
    ( NULL, 904, 计算机, 70 ),
    ( NULL, 904, 英语, 92 ),
    ( NULL, 905, 英语, 94 ),
    ( NULL, 906, 计算机, 90 ),
    ( NULL, 906, 英语, 85 );
        #2、查询student表中的第2到第4条数据
SELECT
    * 
FROM
    student 
WHERE
    id BETWEEN 902 
    AND 904;
    
#3、从Student表查询所有学生的学号,姓名和院系
SELECT
    id,
    `name`,
    Department 
FROM
    student;
    
#4、从Student表中查询计算机系和英语系的学生
SELECT
    * 
FROM
    student 
WHERE
    Department IN ( 计算机系, 英语系 );
    
#5、从Student表中查询年龄在18~32岁的学生信息
SELECT
    * 
FROM
    student 
WHERE
    ( YEAR ( NOW( ) ) - Birth ) BETWEEN 18 
    AND 32;
    
#6、从student表中查询每个院系有多少人
SELECT
    Department AS 院系,
    COUNT( Id ) AS 人数 
FROM
    student 
GROUP BY
    Department;
    
#7、从Score表中查询每个科目的最高分
SELECT
    c_name AS 科目,
    MAX( grade ) AS 最高分 
FROM
    scroe 
GROUP BY
    c_name;
    
#8、查询李四的考试科目
SELECT
    `Name` AS 姓名,
    c_name AS 考试科目 
FROM
    scroe
    JOIN student ON scroe.stu_id = student.Id 
WHERE
    student.`Name` = 李四;


#9、用连接的方式查询所有学生的姓名、院系、科目和考试成绩
SELECT
    `Name` AS 姓名,
    Department AS 院系,
    c_name AS 科目,
    grade AS 考试成绩 
FROM
    scroe
    JOIN student ON scroe.stu_id = student.Id;#10、计算每个学生的总成绩
SELECT
    `Name` AS 姓名,
    SUM( grade ) AS 总成绩 
FROM
    scroe
    JOIN student ON scroe.stu_id = student.Id 
GROUP BY
    `Name`;
    
#11、计算每个考试科目的平均成绩
SELECT
    c_name AS 科目,
    AVG( grade ) AS 平均成绩 
FROM
    scroe
    JOIN student ON scroe.stu_id = student.Id 
GROUP BY
    c_name;
    
#12、查询计算机成绩低于95分的学生信息
SELECT
    * 
FROM
    student 
WHERE
    id IN ( SELECT stu_id FROM scroe WHERE grade < 95 AND c_name = 计算机 );
    
#13、查询同时参加计算机和英语考试的学生信息
SELECT
    * 
FROM
    student 
WHERE
    id IN (
    SELECT
        stu_id 
    FROM
        scroe 
    WHERE
        stu_id IN (
        SELECT
            x 
        FROM
            ( SELECT stu_id AS x FROM scroe WHERE c_name = 英语 ) AS a
            JOIN ( SELECT stu_id AS y FROM scroe WHERE c_name = 计算机 ) AS b ON a.x = b.y 
        ) #使用自连接的方式,查找交集
        
    );
    
#14、将计算机考试成绩按照从高到低进行排序
SELECT
    `Name` AS 姓名,
    grade AS 成绩 
FROM
    scroe
    JOIN student ON scroe.stu_id = student.Id 
WHERE
    c_name = 计算机 
ORDER BY
    grade DESC;
    
#15、从student表和score表中查询出学生的学号,然后合并查询结果
SELECT DISTINCT
    student.Id AS 学号,
    `Name` AS 姓名 
FROM
    student
    LEFT JOIN scroe ON scroe.stu_id = student.Id;

#16、查询姓张或者姓王的同学的姓名、院系和考试科目以及成绩(提示,模糊查询关键字like 例如查询以A开头的姓名  selec * from 表名 where name like ‘A%’)
SELECT
    `Name` AS 姓名,
    Department AS 院系,
    c_name AS 考试科目,
    grade AS 成绩 
FROM
    student
    JOIN scroe ON scroe.stu_id = student.Id 
WHERE
    student.`name` LIKE 张% 
    OR student.`name` LIKE 王%;#17、查询都是湖南的学生的姓名、年龄、院系和考试科目以及成绩
SELECT
    `NAME` AS 姓名,
    ( YEAR ( NOW( ) ) - Birth ) AS 年龄,
    Department AS 院系,
    c_name AS 考试科目,
    grade AS 成绩 
FROM
    scroe
    JOIN student ON scroe.stu_id = student.Id 
WHERE
    Address LIKE %湖南%;
    
#14题的另一种做法:查询同时参加计算机和英语考试的学生信息
SELECT
    * 
FROM
    student 
WHERE
    id IN ( SELECT stu_id FROM scroe WHERE stu_id IN ( SELECT stu_id FROM scroe WHERE c_name = 英语 ) AND c_name = 计算机 );#使用and求交集
    
热身测试

 

SQL热身测试

原文:https://www.cnblogs.com/jingkai555/p/11374765.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!