A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 爱编码的J 于 2018-10-31 21:31 编辑

MySQL数据做为面试必问的题目,笔者给大家分享一些面试中遇到的题(题目不一定很难,但是一定会涉及很多常见的知识点)

以下为“学生选课系统”数据库,学生选课的关系模式为:
学生(学号(char10),姓名(char20),性别(char2),年龄(int),所在系(char20))
课程(课程号(char10),课程名(char20),先行课(char10))
选课(学号(char20),课程号(char20),成绩(int))
根据系统,用SQL语句完成下面各题
[size=14.0000pt]1、查询物理系学生的学号不在201001-201011范围内的所有记录

2、将一个新学生记录(学号:‘96002’,姓名:‘张三’,所在系:‘英语系’),插入到学生表中

3、将学生表中全部学生的年龄加上3岁

4、在课程表上按“课程号”建立唯一索引

5、将学生表中年龄在19-22之间的物理系的女生所有记录插入到选课表中





参考答案(参考答案仅代表个人意见,如果有更好的答案或者是想法,在回复中多多交流,不喜勿喷):
建表:
CREATE TABLE `Student`  (
  `s_id` int(10) NOT NULL COMMENT '学号',
  `s_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名',
  `age` int(11) NULL DEFAULT NULL COMMENT '年龄',
  `class` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '所在系',
  `sex` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别',
  PRIMARY KEY (`s_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

CREATE TABLE `Course`  (
  `c_id` int(10) NOT NULL COMMENT '课程号',
  `c_name` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '课程名',
  `c_c` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '先行课',
  UNIQUE INDEX `c_id`(`c_id`) USING BTREE,
  UNIQUE INDEX `c_id_2`(`c_id`) USING BTREE,
  UNIQUE INDEX `c_id_3`(`c_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

CREATE TABLE `SC`  (
  `s_id` int(10) NULL DEFAULT NULL,
  `c_id` int(10) NULL DEFAULT NULL,
  `score` int(255) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

1、SELECT * FROM `Student`        WHERE        `class` = '物理' AND        `s_id`  NOT        BETWEEN  201001 AND  201011;
或者是
SELECT * FROM `Student`  WHERE          `class` = '物理' AND  `s_id` < 201001 OR `s_id` > 201011;
思路:本题重在考察如何查询不在某个范围内的数据

2、INSERT INTO `Student`(`s_id`,`s_name`,`class`) VALUES(96002,'张三','英语系')
思路:常规的插入操作

3、UPDATE `Student` SET `Student`.`age` = `Student`.`age` + 3
思路:更新操作,同时需要批量改变某个字段的值

4、ALTER TABLE `Course` ADD UNIQUE KEY(`c_id`);
思路:建立索引操作

5、INSERT INTO `SC`(`s_id`,`c_id`) SELECT `Student.s_id,Course.c_id FROM `Student`,`Course` WHERE `Student`.`sex`='女' AND `Student`.`class`='物理' AND `Student`.`age` BETWEEN 19 AND 22
思路:查询后同时进行插入操作,进行组合式操作

2 个回复

倒序浏览
ヾ(◍°∇°◍)ノ゙
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马