黑马程序员技术交流社区
标题: 【上海校区】笔试题-MySQL系列一 [打印本页]
作者: 爱编码的J 时间: 2018-10-31 21:06
标题: 【上海校区】笔试题-MySQL系列一
本帖最后由 爱编码的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
思路:查询后同时进行插入操作,进行组合式操作
作者: 不二晨 时间: 2018-11-7 09:13
ヾ(◍°∇°◍)ノ゙
作者: 魔都黑马少年梦 时间: 2018-11-8 17:13
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |