zoukankan      html  css  js  c++  java
  • SQL热身测试

    #创建数据库
    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求交集
        
    热身测试
  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    别傻傻不知道 == 和 equals 的区别【面试系列】
    Spring Boot(九):定时任务
  • 原文地址:https://www.cnblogs.com/jingkai555/p/11374765.html
Copyright © 2011-2022 走看看