• mysql面试常见题目2


    Sutdent表的定义
    字段名 字段描述 数据类型 主键 外键 非空 唯一 自增
    Id 学号 INT(10) 是 否 是 是 是
    sName 姓名 VARCHAR(20) 否 否 是 否 否
    Sex 性别 VARCHAR(4) 否 否 否 否 否
    Birth 出生年份 YEAR 否 否 否 否 否
    Department 院系 VARCHAR(20) 否 否 是 否 否
    Address 家庭住址 VARCHAR(50) 否 否 否 否 否

    Score表的定义
    字段名 字段描述 数据类型 主键 外键 非空 唯一 自增
    Id 编号 INT(10) 是 否 是 是 是
    Stu_id 学号 INT(10) 否 否 是 否 否
    C_name 课程名 VARCHAR(20) 否 否 否 否 否
    Grade 分数 INT(10) 否 否 否 否 否

    1.创建student和score表
    CREATE TABLE student (
    id INT(10) PRIMARY KEY AUTO_INCREMENT,
    sname VARCHAR(20) NOT NULL,
    sex VARCHAR(4),
    birth YEAR,
    department VARCHAR(20) ,
    address VARCHAR(50)
    );
    创建score表。SQL代码如下:
    CREATE TABLE score (
    id INT(10) PRIMARY KEY AUTO_INCREMENT ,
    stu_id INT(10) NOT NULL ,
    c_name VARCHAR(20) ,
    grade INT(10)
    );
    2.为student表和score表增加记录
    向student表插入记录的INSERT语句如下:
    INSERT INTO student VALUES( 901,'张老大', '男',1995,'计算机系', '北京市海淀区');
    INSERT INTO student VALUES( null,'张老二', '男',1996,'中文系', '北京市昌平区');
    INSERT INTO student VALUES( null,'张三', '女',2000,'中文系', '湖南省永州市');
    INSERT INTO student VALUES( null,'李四', '男',2000,'英语系', '辽宁省阜新市');
    INSERT INTO student VALUES( null,'王五', '女',2001,'英语系', '福建省厦门市');
    INSERT INTO student VALUES( null,'王六', '男',1998,'计算机系', '湖南省衡阳市');
    向score表插入记录的INSERT语句如下:
    INSERT INTO score VALUES(NULL,901, '计算机',98);
    INSERT INTO score VALUES(DEFAULT,901, '英语', 80);
    INSERT INTO score VALUES(NULL,902, '计算机',65);
    INSERT INTO score VALUES(NULL,902, '中文',88);
    INSERT INTO score VALUES(NULL,903, '中文',95);
    INSERT INTO score VALUES(NULL,904, '计算机',70);
    INSERT INTO score VALUES(NULL,904, '英语',92);
    INSERT INTO score VALUES(NULL,905, '英语',94);
    INSERT INTO score VALUES(NULL,906, '计算机',90);
    INSERT INTO score VALUES(NULL,906, '英语',85);

    3.查询student表的所有记录
    SELECT * FROM student;
    4.查询student表的第2条到4条的记录
    SELECT * FROM student LIMIT 1,3;
    5.从student表查询所有学生的学号(id)、姓名(sname)和院系(department)的信息
    SELECT id,sname,department FROM student;
    6.从student表中查询计算机系和英语系的学生的信息
    SELECT * FROM student WHERE department = ‘计算机系’ OR department = ‘英语系’;
    7.从student表中查询年龄18~21岁的学生信息(假如今年是2017年)
    2017-birth
    SELECT id,sname,sex,(2017-birth) age,department,address FROM student WHERE (2017-birth) BETWEEN 18 AND 21;
    SELECT id,sname,sex,(2017-birth) age,department,address FROM student WHERE (2017-birth) >=18 AND (2017-birth) <=21;
    8.从student表中查询每个院系有多少人
    SELECT department ,count(1) FROM student GROUP BY department;
    9.从score表中查询每个科目的最高分
    SELECT c_name,max(grade) ‘最高分’ FROM score GROUP BY c_name;
    10.查询李四的考试科目(c_name)和考试成绩(grade)
    SELECT a.sname,b.c_name,b.grade FROM student a INNER JOIN score b ON a.id = b.stu_id WHERE a.sname = ‘李四’;
    11.用连接的方式查询所有学生的信息和考试信息
    SELECT a.,b. FROM student a INNER JOIN score b ON a.id = b.stu_id;
    12.计算每个学生的总成绩
    SELECT b.stu_id,a.sname,sum(b.grade) '总成绩' FROM student a INNER JOIN score b ON a.id = b.stu_id GROUP BY b.stu_id;
    13.计算每个考试科目的平均成绩
    SELECT c_name ,round(avg(grade),1) '平均成绩' FROM score GROUP BY c_name;
    14.查询计算机成绩低于95的学生信息
    SELECT a.* FROM student a INNER JOIN score b ON a.id = b.stu_id WHERE b.grade < 95 and b.c_name = ‘计算机’;
    15.查询同时参加计算机和英语考试的学生的信息
    多表连接
    SELECT a.* FROM student a INNER JOIN score b ON a.id = b.stu_id WHERE b.c_name = '计算机' OR b.c_name = '英语' GROUP BY b.stu_id HAVING count(b.c_name) = 2;
    SELECT a.* FROM student a INNER JOIN score b ON a.id = b.stu_id INNER JOIN score c ON a.id = c.stu_id WHERE b.c_name = '计算机' AND c.c_name = '英语';
    子查询
    SELECT * FROM student WHERE id in(SELECT stu_id FROM score WHERE c_name = '计算机' AND stu_id in (SELECT stu_id FROM score WHERE c_name = '英语'));
    16.将计算机考试成绩按从高到低进行排序
    SELECT a.*,b.c_name,b.grade FROM student a INNER JOIN score b ON a.id = b.stu_id WHERE b.c_name = '计算机' ORDER BY b.grade DESC;
    SELECT * FROM score WHERE c_name = '计算机' ORDER BY grade DESC;
    17.从student表和score表中查询出学生的学号,然后合并查询结果
    SELECT id FROM student
    UNION
    SELECT stu_id FROM score;
    18.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩
    SELECT a.sname,a.department,b.c_name,b.grade FROM student a INNER JOIN score b ON a.id = b.stu_id WHERE a.sname like ‘张%’ OR a.sname like ‘王%’;
    19.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩
    SELECT a.sname,(2017-birth) age,a.department,b.c_name,b.grade FROM student a INNER JOIN score b ON a.id = b.stu_id WHERE a.address like ‘%湖南%’;

  • 相关阅读:
    接口方法上的注解无法被@Aspect声明的切面拦截的原因分析
    SpringBoot整合Netty
    简单的RPC框架
    基于redis的分布式锁的分析与实践
    8种方案解决重复提交问题
    领券中心项目,如何用 Redis 做实时订阅推送的?
    IM(即时通讯)服务端(二)
    IM(即时通讯)服务端(一)
    0xC00000FD: Stack overflow (parameters: 0x00000000, 0x003E2000).错误
    int (*a)[10]和int *a[10]的区别
  • 原文地址:https://www.cnblogs.com/king8/p/9063207.html
Copyright © 2020-2023  润新知